Programmation Orientée Objet et C++ Christophe Collard
|
|
- Valérie Grenon
- il y a 7 ans
- Total affichages :
Transcription
1 Programmation Orientée Objet et C++
2 Plan Notions de base Classes et Objets Construction et destruction d objets Les fonctions amies La surdéfinition d opérateurs Les patrons de fonctions et de classes Les flots La technique de l héritage Les espaces de nommage
3 Notions de Base
4 1. Les variables définies par l'utilisateur 1 octet = 8 bits 1 bit = 0 ou 1 Type de donnée Signification Taille (en octets) Plage de valeurs acceptée char Caractère à 127 unsigned char Caractère non signé 1 0 à 255 short int Entier court à unsigned short int Entier court non signé 2 0 à (sur processeur 16 bits) à int Entier 4 (sur processeur 32 bits) à (sur processeur 16 bits) 0 à unsigned int Entier non signé 4 (sur processeur 32 bits) 0 à long int Entier long à unsigned long int Entier long non signé 4 0 à float Flottant (réel) 4-3.4*10-38 à 3.4*1038 double Flottant double 8-1.7* à 1.7*10308 long double Flottant double long * à 3.4* bool Booléen Même taille que le type int, parfois 1 sur quelques compilateurs Prend deux valeurs : 'true' et 'false' mais une conversion implicite (valant 0 ou 1) est faite par le compilateur lorsque l'on affecte un entier (en réalité toute autre valeur que 0 est considérée comme égale à True).
5 Déclaration et initialisation int n; n = 10; int n = 10; Remarque : chaque instruction se termine par un «;» Le qualificatif «const» const int n = 10; La valeur de «n» ne change pas. Expression constante = valeur calculée lors de la compilation Ex : ici 2*n*5 est une constante variables locales vs variables globales
6 2. Les fonctions But : accomplir une tâche int double INPUTS Fonction float OUTPUT Attention : une fonction ne peut renvoyer qu un seul type Fonction standard : float fctname (int, double) Fonction sans argument : float fctname () Fonction sans valeur de retour : void fctname (int, double) Remarque : une fonction bien programmée peut être lue sur 1 seul écran
7 3. Les boucles But : effectuer plusieurs fois le même type d opérations Ex: sommer les 10 premiers entiers Attention : en C++ il faut initialiser les variables, sinon une valeur aléatoire est attribuée for (int i=0; i<10; i++) type du compteur Incrémente le compteur de 1 initialisation du compteur reste dans la boucle tant que cette condition est vérifiée
8 Remarque: Les variables i et j sont locales à la fonction. Pour renvoyer la valeur j vers l extérieur, il faut écrire :
9 4. Les entrées / sorties en C++ Ecriture sur la sortie standard La bibliothèque iostream contient les déclarations nécessaires à l utilisation des entrées / sorties en c++ Interprétation cout désigne un «flot de sortie» prédéfini << est un opérateur dont l opérande de gauche est un flot et l opérande de droite est une expression de type qcq Ici le flot cout reçoit la valeur «bonjour»
10 Autre exemple Remarque Les 2 dernières lignes peuvent s écrire : cout << valeur de n = << n << endl; Interprétation On transmet dans un premier temps une chaine de caractères au flot cout Ensuite le flot est augmenté de la valeur de l entier n cout sait gérer des données de différents types
11 Rôle de l opérateur différent dans ces deux cas L opérateur a procédé au formatage (implicite) de la valeur de n pour la transformer en une chaine de caractères. La possibilité d attribuer plusieurs significations à un même opérateur : SURDEFINITION D OPERATEURS Lecture sur l entrée standard cin >> n; cin >> n >> p;
12 5. La notion de référence Il existe 3 façons de transmettre des variables à une fonction : - transmission par valeur - transmission par adresse - transmission par référence
13 Transmission par valeur avant appel : début échange : fin échange : après échange : n adresse valeur a adresse valeur les valeurs de n et p sont dupliquées on change les valeurs des copies
14 Transmission par adresse avant appel : début échange : fin échange : après échange : n adresse valeur les valeurs de n et p ne sont pas dupliquées on change les valeurs des originaux a
15 Transmission par référence avant appel : début échange : fin échange : après échange : n adresse valeur les valeurs de n et p ne sont pas dupliquées on change les valeurs des originaux a
16 Remarques la transmission par référence utilise la simplicité de la notation de la transmission par valeur le mécanisme de la transmission par adresse L utilisation de la transmission par référence s écrit uniquement au niveau de la fonction appelée : void echange (int& a, int& b) Attention aux effets de bord lors de l appel de la fonction Appel de la fonction : echange (n, p) transmission par valeur? transmission par référence? pas de modification des valeurs de n et p valeurs de n et p modifiées
17 6. Surdéfinition de fonctions une fonction avec un même nom possède plusieurs significations sosie numero 1 : a = 5 sosie numero 2 : a = 2.5 Que se passe t il si x est de type float, long double,? conversion du type par le compilateur
18 7. L allocation dynamique de mémoire l opérateur NEW sert à allouer de la mémoire l opérateur DELETE sert à libérer de la mémoire L opérateur NEW Exemple 1 Exemple 2 Pour allouer n éléments d un «type» donné : new type [n] new retourne un pointeur (type*) sur le 1 er élément d un tableau p adresse adresse adresse adresse adresse valeur valeur valeur valeur valeur p[0] p[4]
19 L opérateur DELETE libère la mémoire allouée par l opérateur NEW on donne comme argument l adresse du pointeur fournie par new syntaxe pour les éléments de type C++ standard int* p; p = new int [5]; delete p; syntaxe pour les tableaux d objet point* p; p = new point [5]; delete [ ] p; Attention le rôle de l opérateur delete est très important. Si on détruit un pointeur sans libérer correctement la mémoire, celle-ci n est plus accessible et ne peut être réallouée Stack overflow
20 Classes et Objets
21 1. Classes et encapsulation des données Classe généralisation de la notion de type extension des types C++ standard à de nouveaux types définis pas l utilisateur regroupe des données et des méthodes données membres fonctions membres On a séparé les données et fonctions membres en 2 catégories public private
22 Encapsulation private : données et méthodes non accessibles à l extérieur de la classe seules les fonctions membres y ont accès protected : données et méthodes non accessibles à l extérieur de la classe accès possible par les classes dérivées (cf plus tard) public : données et méthodes accessibles à l extérieur de la classe Remarques pour modifier des données privées il faut passer via des méthodes publiques En POO pure, les données sont encapsulées et leur accès ne peut se faire que par le biais de méthodes
23 Définition des fonctions membres (méthodes) initialise méthode de point x et y modifiables le symbole :: est un opérateur de résolution de portée l identificateur initialise est celui défini dans la classe point
24 Utilisation de la classe Remarques point est un nouveau type défini par l utilisateur a et b sont des instances de la classe point a et b sont encore appelés des objets de type point si aucun des mots private ou public n apparaît dans la classe, tout est considéré comme étant private => rien n est accessible
25 Affectation d objets
26 Affectation d objets b a x y x y adresse valeur adresse valeur adresse valeur adresse valeur copie des membres
27 Affectation d objets Remarques seules les données membres sont copiée (pas les méthodes) ceci n est possible que pour des objets de même type ce système de copie «partielle» ne fonctionne pas pour des données dynamiques (il faudra surdéfinir un opérateur =)
28 2. Constructeur et destructeur création d un nouvel objet allocation de mémoire Processus automatisé CONSTRUCTEUR initialisation de ses données Fonctions membres appelées automatiquement à chaque création / destruction d objet destruction d un objet libération de mémoire Processus automatisé DESTRUCTEUR
29 Exemple Résultat: affiche 10 valeurs aléatoires
30 Remarques le constructeur ne renvoie rien (même pas void) le constructeur porte le même nom que la classe a partir du moment où la classe possède un contructeur, il faut créer un objet avec les arguments requis pas le constructeur hasard suite (); invalide ici une classe peu contenir plusieurs constructeurs constructeur par défaut constructeur d initialisation des membres constructeur par recopie le destructeur ne renvoie rien et ne prend aucun argument le destructeur porte le nom de la classe précédé du symbole ~ une classe ne peut contenir qu un seul destructeur (car pas d argument)
31 Attention : le rôle du destructeur est très important. Si on détruit un objet sans libérer correctement la mémoire, celleci n est plus accessible et ne peut être réallouée Stack overflow
32 3. Les données membres statiques Les différents objets issus d une même classe possèdent chacun leurs propres données membres La déclaration suivante point a, b; conduit à a b x y x y adresse adresse adresse adresse valeur valeur valeur valeur
33 Une façon de permettre à plusieurs objets de partager des données consiste à les déclarer avec le qualificatif static x a n b x adresse adresse adresse valeur valeur valeur Les membres statiques existent en 1 seul exemplaire, indépendamment des objets de la classe correspondante (même si aucun objet existe) Les membres statiques sont toujours initialisés à 0 static int ctr = 5; INTERDIT par le compilateur
34 4. Exploitation d une classe Dissocier l implémentation d une classe de son utilisation Mettre dans un fichier séparé la classe et son implémentation Création de bibliothèques que l on regroupe par thèmes 5. Propriétés des fonctions membres Surdéfinition des fonctions membres La surdéfinition de fonctions «ordinaires» en C++ s applique aux fonctions membre d une classe, y compris au constructeur Elle ne peut s appliquer au destructeur qui ne reçoit aucun argument
35 Exemple
36 Résultat position (0,0) coordonnees du point position (5,5) Point position (3,12) Remarques N importe quelle méthode peut appeler une autre méthode de la même classe (public, protected ou private). N importe quelle méthode peut s appeler elle-même (récursivité), mais il faut prévoir un moyen de finir le processus. Pour accéder aux données/méthodes private ou protected, il faut passer via un méthode publique de la classe. On peut définir dans des fonctions des arguments par défaut afin de limiter le nombre de fonctions surdéfinies
37 Arguments par défaut Dans la définition de la classe point, on peut remplacer void affiche (); void afficher (char*); par void affiche (char* = ); Remarque void point::affiche (); est supprimée void point::affiche (char* message= ); Ceci s applique aussi aux constructeurs
38 Les objets transmis en argument d une fonction membre Exemple définir une méthode «coincide» dans la classe point pour comparer 2 objets de type point son appel s effectue de la manière suivante a.coincide (b) ou par symétrie du problème b.coincide (a)
39 Résultat a et b 0 (false) b et c 1 (true)
40 Remarques Appel du constructeur avec 1 seul argument point b (1); point b (1,0); Le second argument est initialisé avec la valeur par défaut Ici, les objets sont transmis par copie à la fonction coincide
41 Remarques le principe d encapsulation est-il violé? a.coincide(b) l objet «a» accède aux données privées de l objet transmis «b» En C++, l unité de protection est la classe et non l objet. Si A et B sont 2 classes différentes, une fonction membre de A ne peut accéder aux données privées de B (sauf à la déclarer comme amie de la classe B cf. plus tard)
42 Transmission d un objet par adresse a x adresse y adresse valeur valeur b adpt x adresse y adresse valeur valeur a.coincide (b)
43 Attention aux effets de bord la transmission par adresse est efficace car les données ne sont pas dupliquées (gain de mémoire, gain de temps) les données de l objet transmis ne sont pas protégées contre les modifications pour protéger les données de l objet transmis de toute modification, on utilise le qualificatif const : dans la déclaration de la classe dans l implémentation de la fonction les données de l objet appelant sa fonction membre ne peuvent être protégées
44 Transmission d un objet par référence Les remarques précédentes sur les effets de bord restent valable Attention : la transmission par valeur (copie) d objets contenant des variables allouées dynamiquement pose problème!
45 Retour d un objet par une fonction par valeur par adresse par référence la transmission d objet par valeur ne fait qu une copie partielle de l objet (attention aux objets contenant des pointeurs) si une fonction retourne un objet par adresse ou par référence, il faut éviter que l objet retourné soit local (celui-ci étant détruit à la sortie de la fonction!) point& point::symetrique (); retour incorrect (res est détruit à la sortie de la fonction duplique)
46 Auto-référence : le mot clé this On peut avoir besoin d utiliser l adresse d un objet ayant appelé une fonction A l intérieur de la méthode affiche, on ne connaît pas le nom de l objet ayant appelé cette fonction. Quand on en a besoin, on peut y accéder grâce au mot clé this.
47 Les fonctions membres constantes Rappel const int n = 20; La variable n est constante et n évolue pas (calculée à la compilation) On peut définir des objets constants Notion non triviale Les opérations sur les objets sont réalisées par ses méthodes. L utilisateur peut préciser les fonctions membres autorisées à travailler avec des objets constants
48 La méthode affiche est autorisée à travailler avec des objets constants. Elle peut modifier les valeurs d un objet de type point. Ex Il est possible de surdéfinir une fonction membre en se basant sur la présence ou non du qualificatif const. void affiche () const; // fonction 1 a.affiche(); appelle la fonction 1 void affiche (); // fonction 2 c.affiche(); appelle la fonction 2
49 Construction, destruction et initialisation d objets
50 Les objets automatiques & statiques Durée de vie Les objets automatiques: créés par déclaration dans une fonction ou un bloc et détruits à la sortie de cette fonction ou de ce bloc. Les objets statiques: créés par déclaration en dehors de toute fonction ou dans une fonction avec le qualificatif «static». Ils existent avant l exécution de la fonction main et sont détruits a la fin de l exécution du programme Les objets temporaires Appel direct au constructeur d une classe objet temporaire
51 Exemple point (1,2); appel direct au constructeur de la classe point objet temporaire a = point (1,2); copie l objet temporaire dans a La copie fonctionne car par d allocation dynamique de mémoire dans point L objet temporaire est détruit quand il n est plus utilisé (ici a la fin du main)
52 Les objets dynamiques Classes sans constructeur déclaration d un objet dynamique allocation dynamique de mémoire point* adr; adr = new point; réserve 2 emplacements mémoire pour stocker des données de type int accès aux méthodes adr -> initialise (1,3); adr -> affiche (); (*adr).initialise (1,3); (*adr).affiche (); destruction (explicite) de l objet delete adr;
53 Classes avec constructeur(s) déclaration d un objet dynamique point* adr; allocation dynamique de mémoire adr = new point (1,2); appel au constructeur point (int, int)
54 Remarques Lorsqu il y a plusieurs constructeurs, l opérateur new choisit le bon constructeur grâce au nombre et/ou à la nature des arguments S il n existe pas de constructeur ou s il existe un constructeur sans argument, new point; ou new point (); sont acceptés Si tous les constructeurs possèdent au moins un argument, new point; et new point (); sont rejetés
55 Le constructeur par recopie Mise en évidence du problème
56 schéma de l opération effectuée lors de l appel de la méthode add transmission de b par valeur b size p tableau dynamique de double
57 schéma de l opération effectuée lors de l appel de la méthode add transmission de b par valeur b size v size copie des données de b dans v copie de size (int) copie p (pointeur) p p b.p et v.p pointent sur le même tableau tableau dynamique de double
58 schéma de l opération effectuée lors de la sortie de la fonction add destruction de la copie v appel au destructeur b v size p size p libère v.size libère le tableau situé en v.p tableau dynamique de double
59 retour au main b.p ne pointe plus sur rien fin du main () b size p appel au destructeur libère b.size libère le tableau situé en b.p segmentation fault
60 Solution b v size size p p dupliquer le tableau de valeurs On définit un construteur par recopie (appelé automatiquement lors de la copie d un objet) de la forme : vector (const vector&); ou bien vector (vector&); En général, un constructeur par recopie n a pas de raison de modifier l objet passé en argument. De plus, une fonction prévue pour un objet constant peut toujours s utiliser pour un objet non constant (réciproque fausse) vector (const vector&);
61 Application etc
62 Résumé La transmission par valeur d un argument ou d une valeur de retour d une fonction met en œuvre une recopie. Elle est réalisée soit: par le constructeur de recopie par défaut (si aucun n a été défini) par le constructeur de recopie surdéfini dans la classe Lorsqu un objet comporte des données dynamiques, il est indispensable de définir un constructeur par recopie On y indique comment dupliquer correctement les données de l objet
63 Les tableaux d objets En C++ un tableau peut posséder des éléments de n importe quels types, y compris ceux définis par les utilisateurs via les classes On peut déclarer un tableau «courbe» de points: point courbe [20]; Chaque élément du tableau peut accéder aux méthodes de sa classe : courbe[10].affiche();
64 Remarques Un tableau d objets n est pas un objet En POO pure, le concept de tableau d objet n existe pas Il est toujours possible de définir une classe dont un des membres est un tableau d objets class courbe { point p [20];.. } Un constructeur par défaut est appelé pour chaque élément du tableau soit la classe ne possède aucun constructeur soit elle doit posséder un constructeur par défaut
65 Exemple point (7,0) point (3,0) point (11,0) point (0,0) point (0,0) tableau de 5 objets de type point
66 Les tableaux dynamiques d objets création du tableau dynamique d objets soit la classe ne possède aucun constructeur soit elle doit posséder un constructeur par défaut destruction du tableau dynamique d objets delete [ ] adcourbe; indique qu il s agit d un tableau d objets
67 Objets membre Une classe peut posséder des données membre qui soient définis par l utilisateur via une classe :
68 Les fonctions amies
69 POO pure Encapsulation des données données membres privées accessibles seulement par les méthodes publiques de la classe une méthode d une autre classe doit passer via les méthodes publiques de la classe pour accéder aux données privées problème dans certains cas Exemple On définit une classe vector et une classe matrix. Produit matrice-vecteur nécessite l accès aux données privées des 2 classes
70 Solutions déclarer les données dans la partie public utiliser des méthode publiques pour accéder aux données privées arrêter le C++ et se remettre au fortran utiliser des fonctions amies dans ses classes
71 Solutions déclarer les données dans la partie public utiliser des méthode publiques pour accéder aux données privées arrêter le C++ et se remettre au fortran trop tard vu l investissement déjà réalisé utiliser des fonctions amies dans ses classes
72 Solutions déclarer les données dans la partie public perte du bénéfice de l encapsulation (protection des données) utiliser des méthode publiques pour accéder aux données privées arrêter le C++ et se remettre au fortran trop tard vu l investissement déjà réalisé utiliser des fonctions amies dans ses classes
73 Solutions déclarer les données dans la partie public perte du bénéfice de l encapsulation (protection des données) utiliser des méthode publiques pour accéder aux données privées oui, mais pas toujours optimal pour protéger les données d un objet arrêter le C++ et se remettre au fortran trop tard vu l investissement déjà réalisé utiliser des fonctions amies dans ses classes
74 Il existe plusieurs situations d amitié fonction indépendante amie d une classe fonction membre d une classe et amie d une autre classe fonction amie de plusieurs classes toutes les fonctions membre d une classe, amies d une autre classe Fonction indépendante amie d une classe Une fonction amie se déclare avec le mot clé friend Exemple
75 Résultat a et b coincident a et c ne coincident pas
76 Remarques ici les arguments de coincide sont transmis par valeur on pourrait les transmettre par référence l emplacement de la déclaration d amitié à l intérieur de la classe n a pas d importance on ne peut pas utiliser d argument implicite (this) dans une fonction amie, car elle n appartient pas à la classe en général, une fonction amie possède 1 ou plusieurs arguments et/ou une valeur de retour du type de la classe ( qui justifie la déclaration d amitié) quand une fonction amie retourne un élément du type de la classe, il est fréquent que ce soit un objet local à la fonction. La transmission doit alors s effectuer par valeur.
77 Fonction membre d une classe et amie d une autre cas particulier de la situation précédente indiquer dans la déclaration d amitié à quelle classe elle appartient utiliser l opérateur de résolution de portée :: la fonction f appartient à la classe B la fonction f est amie de la classe A la fonction f accède aux données de A et B
78 Remarques friend int B::f (char, A); le compilateur a besoin de connaître les caractéristiques de B pour compiler la classe A. int f (char, A); le compilateur a besoin se savoir que la classe A existe, mais sans connaître ses caractéristiques.
79 Ecriture correcte du code
80 Fonction amie de plusieurs classes une fonction, qu elle soit indépendante ou bien membre d une classe peut faire l objet de déclaration d amitié dans plusieurs classes f peut accéder aux données privées de A et de B
81 Toutes les fonctions d une classe sont amies d une autre C est la généralisation de la notion de fonction amie On pourrait déclarer toutes les fonctions d une classe B comme amies d une classe A, mais il est plus simple de le faire de manière globale dans la class A :
82 Une application de fonction amie indépendante
83 Une application de fonction amie membre d une classe
84 La surdéfinition d opérateurs
85 On considère une classe vector 2D : class vector { int x,y; }; On définit 2 objets de type vector a et b b a Peut on écrire comme pour un type standard C++ la somme a + b?
86 Il faut surdéfinir l opérateur + pour la classe définir une fonction operator + au sein de la classe utiliser le mot clé operator suivi de l opérateur à surdéfinir la fonction operator + peut être : soit une fonction membre de la classe soit une fonction indépendante amie de la classe soit une fonction indépendante de la classe Afin de protéger les données et d accélérer le code, on choisit en général de surdéfinir l opérateur comme fonction indépendante amie de la classe.
87 Surdéfinition d opérateur avec une fonction amie Résultat coordonnees (1,2) coordonnees (2,5) coordonnees (3,7) coordonnees (6,14)
88 Surdéfinition d opérateur avec une fonction membre Résultat identique
89 Remarques la fonction operator + est appelé de la manière suivante : fontion indépendante : a + b fontion membre : a + b operator + (a,b) a.operator + (b) la fonction membre operator + fait apparaître une dissymétrie et l objet a ne peut pas être protégé Opérateurs et transmission par référence Dans les deux exemples précédents, on utilise la transmission par valeur Pour des objets de grande taille, il vaut mieux utiliser la transmission par référence. On peut alors protéger les objets transmis avec const point operator + (const point& a, const point&b) Le retour de l objet point se fait obligatoirement par valeur
90 Les opérateurs ++ et -- Résultat a1 (3,6) b (2,5) a2 (3,6) b (3,6)
91 Surdéfinition de l opérateur = En l absence de sudéfinition de l opérateur =, il y a une simple recopie du 2 nd opérande dans le 1 er pose problème pour les objets contenant des pointeurs vector a(5), b; b = a; a size p b size p cf. constructeur par recopie tableau dynamique de double
92
93 Surdéfinition de l opérateur [ ] exemple de la classe vector l opérateur [ ] permet d accéder au i ème élément du vecteur En informatique on commence à compter à partir de 0 En mathématiques on commence à compter à partir de 1 C est l opérateur [ ] qui fera la conversion C++ impose de définir l opérateur [ ] comme fonction membre int& operator [ ] (int); retour par référence obligatoire afin d utiliser l opérateur pour affecter des valeurs
94 Résultat 3 6 9
95 Remarque L opérateur [ ] ne peut pas être appliqué à un objet constant. Il aurait fallut le définir de la façon suivante int& operator [ ] (int) const;
96 Surdéfinition des opérateurs new et delete La surdéfinition se fait obligatoirement par une fonction membre La fonction NEW reçoit un argument de type size_t (bibliothèque stddef) taille en octets de l objet à allouer La fonction NEW renvoit un void* (adresse où est stocké l objet) La fonction DELETE reçoit un pointeur en argument (adresse objet) La fonction ne renvoit rien (void) Remarques La surdéfinition de l opérateur new implique la prise en charge de la gestion de la mémoire NEW et DELETE ne reçoivent pas d argument implicite (this)
97
98 Résultat Action point a(3,5); new point (1,3); appel implicite par new point b; new point (2,0); appel implicite au constructeur appel implicite par delete ad1 delete ad1; appel implicite par delete ad2 delete ad2 fin prog. destruction de a fin prog. destruction de b Affichage ++ nombre total de points = 1 ++ nombre total de points dynamiques = 1 ++ nombre total de points = 2 ++ nombre total de points = 3 ++ nombre total de points dynamiques = 2 ++ nombre total de points = 4 -- nombre total de points = 3 -- nombre total de points dynamiques = 1 -- nombre total de points = 2 -- nombre total de points dynamiques = 0 -- nombre total de points = 1 -- nombre total de points = 0
99 Remarques La surdéfinition des opérateurs NEW et DELETE n a d incidence que sur les objets dynamiques Que NEW soit surdéfini ou non, son appel est toujours implicitement suivi de celui d un constructeur De même, DELETE fait appel implicitement à un destructeur Il est toujours possible de définir les opérateurs NEW et DELETE de manière globale déclarer NEW et DELETE comme fonctions indépendantes appel à cet opérateur par tous les types (y compris ceux de base du C++) ex int* adi = new int; y fait appel plus de possibilité d appeler l opérateur new prédéfini
100 Les patrons de fonctions Les patrons de classes
101 La surdéfinition de fonctions permet de donner un nom unique à plusieurs fonctions réalisant un travail différent La notion de patron est plus puissante et plus restrictive Plus puissante on écrit une seule fois la définition d une fonction pour que le compilateur puisse l adapter automatiquement à n importe quel type Plus restrictive But toutes les fonctions ainsi fabriquées ont la même définition et le même algorithme écrire une fonction qui soit valable quel que soit le type des arguments utilisés
102 Exemple int min (int a, int b) { return (a < b)? a : b; } float min (float a, float b) { return (a < b)? a : b; } double min (double a, double b) { return (a < b)? a : b; } long int min (long int a, long int b) { return (a < b)? a : b; } etc On écrit la même fonction pour tous les types existant en C++ c est long, très long, très très long et en plus il faut le faire pour toutes les fonctions ça multiplie les lignes de code et rend le code illisible il faut compléter le code quand on définit ses propres classes
103 On résout ce problème en utilisant les patrons de fonctions cette méthode est très puissante Elle permet de définir des méthodes pour des types qui n existent pas encore patron type fonction Résultat min (n,p) = 4 min (x,y) = 2.5
104 Application à un type classe Remarque il suffit de donner un sens à l opérateur < pour des objet de type point pour pouvoir utiliser min (sans rien ajouter!)
105 Généralisation et conversion Quel type retourne fct?
106 Généralisation et conversion fct (n, x, p) int (conversion de float vers int pour x) fct (x, n, y) float (conversion de int vers float pour n) fct (n, p, q) int fct (n, p, x) erreur (ne pas laisser choisir le compilateur à votre place!)
107 Généralisation et conversion fct (n, x, p) int (conversion de float vers int pour x) fct (x, n, y) float (conversion de int vers float pour n) fct (n, p, q) int fct (n, p, x) erreur (ne pas laisser choisir le compilateur à votre place!) Remarque dans fct, on peut initialiser des variables de type T ou U
108 exemple
109 Surdéfinition des patrons Remarque on peut transmettre des éléments de n importe quel type aux fonctions grâce aux patrons les fonctions surdéfinies doivent avoir un nombre d arguments différent afin d éviter les ambigüités
110 Les patrons de classes Mise en évidence du problème Comment stocker des points avec des coordonnées int, float, double,? Utiliser des patrons de classe
111 La définition inline : La définition à l extérieur de la classe : nom de la classe nom du patron nom de la fonciton
112 Réécriture du code
113 Les flots
114 les opérateurs << et >> assurent le transfert de l information le formatage de l information Un flot est un objet d une classe prédéfinie : ostream pour le flot de sortie istream pour le flot d entrée Chacune de ces 2 classes surdéfinit les opérateurs << et >> pour les différents types de base du C++ (fichier iostream) Le flot cout est connecté à la sortie standard Le flot cin est connecté à l entrée standard
115 Surdéfinition des opérateurs << et >>
116 La technique de l héritage
117 Le concept de l héritage (ou de classes dérivées) constitue l un des fondements de la POO Intérêt Classe dérivée : nouvelle classe définie à partir de la classe de base hérite des propriétés de la classe de base ajoute de nouvelles propriétés à la classe de base ne modifie pas la classe de base classe de base propriétés de la classe classe dérivée propriétés classe de base + nouvelles propriétés permet de développer de nouveaux outils en se basant sur les acquis de la classe de base
118 Remarque L héritage n est pas limité à un seul niveau une classe dérivée peut devenir classe de base pour une autre classe plusieurs classes peuvent être dérivées d une même classe
119 Mise en œuvre de l héritage Classe de base
120 On ajoute une information à cette classe : la couleur du point Classe dérivée Programme principal
121 Utilisation des membres d une classe de base dans une classe dérivée Quand on appelle p.affiche() pour un objet de type pointcol, cette fonction n est pas définie dans la classe enfant (pointcol) C est la fonction affiche de la classe parent (point) qui est appelée C est la fonction affiche de la classe parent (point) qui est appelée
122 Utilisation des membres d une classe de base dans une classe dérivée Quand on appelle p.affiche() pour un objet de type pointcol, cette fonction n est pas définie dans la classe enfant (pointcol) C est la fonction affiche de la classe parent (point) qui est appelée C est la fonction affiche de la classe parent (point) qui est appelée Définir une méthode affichec () dans pointcol du type :
123 Problème : pointcol n a pas accès aux données privées de point (x et y) soit mettre les données de point dans la partie protected soit utiliser une méthode publique de point Surdéfinition des fonctions membre les fonctions affiche () et afficec () effectuent les même tâches leur donner le même nom (surdéfinition)
124
125 Appel des constructeurs et destructeurs
126 Le constructeur par recopie
127 Le contrôle des accès But : protection des données de la classe de base les données et méthodes privées sont inaccessibles en dehors leur classe les données et méthodes publiques sont accessibles partout comment protéger les données de la classe de base et les rendre accessibles par la classe dérivée?
128 Le contrôle des accès But : protection des données de la classe de base les données et méthodes privées sont inaccessibles en dehors leur classe les données et méthodes publiques sont accessibles partout comment protéger les données de la classe de base et les rendre accessibles par la classe dérivée? définir les données et méthodes protégées
129 Remarques les fonctions amies d une classe dérivée possèdent les même droits que les fonctions membre la déclaration d amitié ne s hérite pas f : fonction amie de la classe A B : classe dérivant de la classe A f n est pas amie de B il est possible d effectuer des dérivations différentes de public class B : public class A classe de base dérivée public dérivée protected dérivée private statut initial accès aux FMA accès externe nouveau statut accès externe nouveau statut accès externe nouveau statut accès externe public public protected private protected protected protected private private private private private
130 Utilisation partie commune d un problème classe de base dérivée 1 dérivée 2 dérivée 3 dérivée 4 solution 1 solution 2 solution 3 solution 4 gain de temps en programmation par de pénalité de temps pour les fonctions non utilisées dans la classe dérivée, car ne sont pas inclues lors de l édition de lien perte de temps lors d appel de fonctions imbriquées
131 L héritage multiple
132 Les espaces de nommage
133 Mot clé : namespace zones de déclaration permettant de délimiter la recherche des noms des identificateurs par le compilateur But regrouper les identificateurs logiquement pour éviter les conflits de nom entre plusieurs parties d un même projet Remarque par défaut, C++ utilise un espace de nommage (namespace std) de portée globale dans lequel il doit y avoir aucun conflit de nom Définition d un espace de nommage
134 Remarque un namespace peut être découpé en plusieurs morceaux les identificateurs définis à l intérieur d un même namespace ne doivent pas entrer en conflit
135 Accès aux membres d un namespace Il se fait grâce à l opérateur de résolution de portée Définition de fonctions d un namespace La fonction peut aussi être implantée à l extérieur du namespace en utilisant l opérateur de résolution de portée
136 On peut de même définir des classes dans un namespace Définition d un namespace dans un namespace Alias de namespace Lorsqu un namespace porte un nom compliqué, il peut-être avantageux de définir un alias namespace nom_alias=nom;
137 La directive using elle permet d utiliser tous les identificateurs d un namespace sans spécifier cet espace devant chaque fonction ou variable
C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy
Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,
Plus en détailClaude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Plus en détailInfo0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Plus en détailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailCours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
Plus en détailLicence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Plus en détailGénie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string
Génie Logiciel I Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M.
Plus en détailC++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit
Plus en détailIntroduction à l héritage en C++
Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay Yacine.Bellik@iut-orsay.fr 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition
Plus en détailCours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Plus en détailRappels Entrées -Sorties
Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détailCours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Plus en détailCours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Plus en détailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Plus en détail1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Plus en détailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détailPour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Plus en détailConventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Plus en détailPlan Pédagogique du cours
Plan Pédagogique du cours Module: Programmation Orientée Objet Section : informatique Niveau : 3 ème niveau (gestion, industriel, réseau) Volume Horaire : 22,5 heures Cours Intégrés + 45 Travaux Pratiques
Plus en détailBases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Plus en détailPremiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
Plus en détailIntroduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Plus en détailUne introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Plus en détailAlgorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailCours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Plus en détailas Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Plus en détailPolycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5
UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques
Plus en détailGénéralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Plus en détailTP : Gestion d une image au format PGM
TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples
Plus en détailet Programmation Objet
FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------
Plus en détailCours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
Plus en détailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailChapitre 2. Classes et objets
Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons
Plus en détailUE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative
Plus en détailIntroduction à l algorithmique et à la programmation M1102 CM n 3
Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailLe langage C++ (partie I)
Master Informatique des Organisations 1 ère et 2 ème années Spécialité ID/MIAGE-IF/MIAGE-SITN Le langage C++ (partie I) Maude Manouvrier Qu est ce que le C++? Rappels sur la gestion de la mémoire Premiers
Plus en détailINTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Plus en détailProgrammation stochastique
Programmation stochastique (Partie 1) IFT-6512 Hiver 2008 Présentation succinte COIN-OR? COmputational INfrastructure for Operations Research. Préalablement, COIN-OR tenait pour Common Optimization INterface
Plus en détailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détail1.6- Génération de nombres aléatoires
1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale
Plus en détailAvertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE
Enseignement : GI 62 - C++ - Programmation orienté objet (C++) Objectif : Ce module se situe dans la continuité des modules (ii12) et UEL RAN Informatique et permet d'acquérir les bases de la modélisation
Plus en détailIntroduction à C++ et à wxwidgets
Introduction à C++ et à wxwidgets Master IGC 1ère année Année universitaire 2011/2012 Christophe Renaud Version 1.5 19/09/2011 Introduction Objectifs du cours Introduction au langage objet C++ Introduction
Plus en détailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détail1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
Plus en détailPrénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailIntroduction au pricing d option en finance
Introduction au pricing d option en finance Olivier Pironneau Cours d informatique Scientifique 1 Modélisation du prix d un actif financier Les actions, obligations et autres produits financiers cotés
Plus en détailUtilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
Plus en détailIN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C
IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en
Plus en détailCours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Plus en détailLicence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Plus en détailJava Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
Plus en détailChapitre 1 : La gestion dynamique de la mémoire
Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement
Plus en détailChapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
Plus en détailMISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année
2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par
Plus en détailCours de Programmation Impérative: Zones de mémoires et pointeurs
Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien
Plus en détailTraduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Plus en détailLangage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr
Plus en détailLMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Plus en détailALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET
ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET I. INTRODUCTION 1.1. HISTORIQUE 1991: Concepts Java pour Sun -conception d'un langage pour des appareils électroniques(code embarqué) -syntaxe proche du C++
Plus en détailEncapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Plus en détailLangage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Plus en détailTP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Plus en détailIntroduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un
Plus en détailBrefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Plus en détailNotions fondamentales du langage C# Version 1.0
Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage
Plus en détailLe langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Plus en détailExercices Alternatifs. Une fonction continue mais dérivable nulle part
Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copyleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version
Plus en détailChap III : Les tableaux
Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction
Plus en détailTP 1. Prise en main du langage Python
TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer
Plus en détailInformatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Plus en détailAnne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2
Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................
Plus en détailUE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Plus en détailRappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme
Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation
Plus en détailDépartement Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers
Département Automatisation et Informatisation Année 2005-2006 Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers 1 Bertrand Cottenceau 1. Introduction du cours de C++...3
Plus en détailExceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Plus en détailLes chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Plus en détailIntroduction à la Programmation Parallèle: MPI
Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4
Plus en détailProgrammation en C/C++
INSA de Lyon Département Génie Electrique Module IF1,IF3,IF4 Programmation en C/C++ Thomas Grenier Nicolas Ducros Tanneguy Redarce Lyon, le 3 mars 2015 2 / 63 Table des matières 1 Développement en C++
Plus en détailCréation d objet imbriqué sous PowerShell.
Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.
Plus en détailNotes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon
Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation
Plus en détailINFO-F-105 Language de programmation I Séance VI
INFO-F-105 Language de programmation I Séance VI Jérôme Dossogne Année académique 2008 2009 Un grand merci à Yves Roggeman pour ses relectures et remarques des codes et commentaires qui ont contribuées
Plus en détailHéritage presque multiple en Java (1/2)
Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen
Plus en détailExercices Alternatifs. Une fonction continue mais dérivable nulle part
Eercices Alternatifs Une fonction continue mais dérivable nulle part c 22 Frédéric Le Rou (copleft LDL : Licence pour Documents Libres). Sources et figures: applications-continues-non-derivables/. Version
Plus en détailAide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr
Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................
Plus en détailCOMPARAISONDESLANGAGESC, C++, JAVA ET
REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY
Plus en détailInitiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Plus en détailApproche Contract First
Exemple HelpDesk Approche Contract First Développement d un premier web service en utilisant l approche contract first (ou WSDL First) Écriture du wsdl avant d écrire le code java Autre possibilité implementation
Plus en détailManuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
Plus en détailTechniques de stockage. Techniques de stockage, P. Rigaux p.1/43
Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation
Plus en détail03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Plus en détailProgrammation système I Les entrées/sorties
Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les
Plus en détailLicence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...
Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez
Plus en détailProgrammation Orientée Objet Java
Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Plus en détail