Programmation Orientée Objet et C++ Christophe Collard

Dimension: px
Commencer à balayer dès la page:

Download "Programmation Orientée Objet et C++ Christophe Collard"

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

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étail

Claude Delannoy. 3 e édition C++

Claude 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étail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 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étail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION 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étail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours 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étail

Licence 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étail

Gé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 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étail

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

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 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étail

Introduction à l héritage en C++

Introduction à 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étail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours 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étail

Rappels Entrées -Sorties

Rappels 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étail

Cours 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 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étail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 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étail

Cours 1: Java et les objets

Cours 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étail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à 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étail

1. 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. 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étail

Programmer 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) 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étail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour 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étail

Conventions d écriture et outils de mise au point

Conventions 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étail

Plan Pédagogique du cours

Plan 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étail

Bases de programmation. Cours 5. Structurer les données

Bases 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étail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers 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étail

Introduction au langage C

Introduction 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étail

Une introduction à Java

Une 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étail

Algorithmique et Programmation, IMA

Algorithmique 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étail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation 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étail

Cours 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. 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étail

TP1 : Initiation à Java et Eclipse

TP1 : 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étail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure 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étail

as Architecture des Systèmes d Information

as 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étail

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Polycopié 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étail

Gé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. 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étail

TP : Gestion d une image au format PGM

TP : 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étail

et Programmation Objet

et 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étail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 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étail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE 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étail

Chapitre 2. Classes et objets

Chapitre 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étail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE 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étail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à 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étail

TP 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 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étail

Le langage C++ (partie I)

Le 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étail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION 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étail

Programmation stochastique

Programmation 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étail

Java Licence Professionnelle CISII, 2009-10

Java 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étail

1.6- Génération de nombres aléatoires

1.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étail

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

Avertissement : 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étail

Introduction à C++ et à wxwidgets

Introduction à 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étail

I. Introduction aux fonctions : les fonctions standards

I. 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étail

1/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/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étail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Pré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étail

Introduction à 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 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étail

Introduction au pricing d option en finance

Introduction 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étail

Utilisation d objets : String et ArrayList

Utilisation 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étail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 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étail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 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étail

Licence Sciences et Technologies Examen janvier 2010

Licence 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étail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java 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étail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 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étail

Chapitre VI- La validation de la composition.

Chapitre 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étail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE 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étail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours 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étail

Traduction des Langages : Le Compilateur Micro Java

Traduction 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étail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage 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étail

LMI 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 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étail

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ALGORITHMIQUE 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étail

Encapsulation. 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. 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étail

Langage 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 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étail

TP, première séquence d exercices.

TP, 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étail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à 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étail

Brefs 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 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étail

Notions fondamentales du langage C# Version 1.0

Notions 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étail

Le langage C. Séance n 4

Le 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étail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices 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étail

Chap III : Les tableaux

Chap 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étail

TP 1. Prise en main du langage Python

TP 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étail

Informatique Générale

Informatique 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étail

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

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 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étail

UE C avancé cours 1: introduction et révisions

UE 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étail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. 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étail

Dé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 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étail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 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étail

Les chaînes de caractères

Les 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étail

Introduction à la Programmation Parallèle: MPI

Introduction à 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étail

Programmation en C/C++

Programmation 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étail

Création d objet imbriqué sous PowerShell.

Cré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étail

Notes 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 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étail

INFO-F-105 Language de programmation I Séance VI

INFO-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étail

Héritage presque multiple en Java (1/2)

Hé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étail

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices 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étail

Aide 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 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étail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, 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étail

Initiation. àl algorithmique et à la programmation. en C

Initiation. à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étail

Approche Contract First

Approche 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étail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel 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étail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques 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étail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/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étail

Programmation système I Les entrées/sorties

Programmation 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étail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence 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étail

Programmation Orientée Objet Java

Programmation 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étail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre 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