La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Conception de Programmes - IUT de Paris - 1ère année - 98-991 Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.

Présentations similaires


Présentation au sujet: "Conception de Programmes - IUT de Paris - 1ère année - 98-991 Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des."— Transcription de la présentation:

1 Conception de Programmes - IUT de Paris - 1ère année - 98-991 Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des fonctions membres Auto-référence (instance courante) Les fonctions const Un exemple de classe

2 Conception de Programmes - IUT de Paris - 1ère année - 98-992 Introduction L’objectif est de fournir le moyen au programmeur de définir des types de données nouveaux pouvant être utilisés aussi facilement que les type prédéfinis Les programmes sont plus compréhensibles, plus concis. Les erreurs sont détectées au moment de la compilation. L’idée fondamentale est de séparer les détails de l’implantation et les propriétés essentielles pour son utilisation correcte.

3 Conception de Programmes - IUT de Paris - 1ère année - 98-993 Déclaration d’une classe Une classe est définie par 3 éléments –son nom, –la partie publique, –la partie privée. Les parties publique et privée contiennent un ensembles de déclarations –de données et –de fonctions

4 Conception de Programmes - IUT de Paris - 1ère année - 98-994 Exemple class Date { public : void set(int, int, int); void get(int&, int&, int&); void next(); void print (); private : int day, month, year; }; Partie publique Partie privée Nom de la classe 3 nouveaux mots clés : class, public et private

5 Conception de Programmes - IUT de Paris - 1ère année - 98-995 Utilisation d’une classe Les éléments (membres) de la partie publique ne peuvent être accéder que pour une variable spécifique du type adéquat Date today; today.set(22, 3, 1999); Utilisation de la notation standard d’accès à un champs d’une structure (. et -> ). Les éléments de la partie privée peuvent être utiliser uniquement par les fonctions membres.

6 Conception de Programmes - IUT de Paris - 1ère année - 98-996 Exemple void main() { Date my_birthday; Date* p = new Date; my_birthday.set(22, 3, 79); p->set(31, 12, 1999); p->next(); p->print(); cout << «c ’est la fête» << endl; p->day = 2; // erreur day est privé }

7 Conception de Programmes - IUT de Paris - 1ère année - 98-997 Définition des fonctions membres void Date::set(int d, int m, int y) { day = d; month = m; year = y; } void Date::next() { if (day < 30) day++; else { day = 1; if (month < 12) month ++; else { month = 1; year++; }

8 Conception de Programmes - IUT de Paris - 1ère année - 98-998 Une fonction membre d’une classe peut accéder aux éléments privés d’autres objets que celui pour lequel elle a été invoquée si ceux-ci font partie de la même classe void Date::copy(const Date& d) { day = d.day; month = d.month; year = d.year; }

9 Conception de Programmes - IUT de Paris - 1ère année - 98-999 void main() { Date d1, d2; d1.set(12, 10, 1987); d2.set(3, 3, 1933); } Le premier appel de la fonction set affecte –d1.day, –d1.month –et d1.year d1 est appelé l ’instance courante de l’appel à la fonction Le second appel affecte d2.day, d2.month et d2.year Auto-référence

10 Conception de Programmes - IUT de Paris - 1ère année - 98-9910 Le pointeur this Un paramètre implicite est toujours passé aux fonctions membres d’une classe Il peut être explicitement désigné par this void Date::set(int d, int m, int y) { this->day = d; … } Dans chaque fonction d’une classe C, this est implicitement déclaré comme: C *const this; // pointeur constant this est initialisé comme pointant sur l’instance courante

11 Conception de Programmes - IUT de Paris - 1ère année - 98-9911 Les fonctions const L’usage du mot clé const pour la déclaration d’une fonction membre indique que celle-ci ne modifie pas les données membres de la classe. class Date { public : void set(int, int, int); void get(int&, int&, int&) const; void next(); void print () const; private : int day, month, year; };

12 Conception de Programmes - IUT de Paris - 1ère année - 98-9912 Une fonction membre const peut être invoquée pour un objet const ; une fonction membre ordinaire ne le peut pas. void f(Date& modifiable, const Date& fixe){ int d, m, y; modifiable.set(1, 1, 2000); // ok modifiable.get(d, m, y); // ok fixe.get(d, m, y); // ok fixe.set(1, 1, 2000); // erreur } Ceci rend essentielle la déclaration const de la fonction get

13 Conception de Programmes - IUT de Paris - 1ère année - 98-9913 Le pointeur this passé à une fonction membre const d’une classe C est de type const C *const this; // pointeur constant vers une constante Ceci implique qu’une fonction membre const ne peut modifier la valeur des données de l’objet void Date::get(int& d, int& m, int& y) const { d = day; m = month; y = year; // ok day++; // erreur }

14 Conception de Programmes - IUT de Paris - 1ère année - 98-9914 Un exemple de classe // fichier chaine.hpp class Chaine { public: void Initialise(const char *); void Initialise(const Chaine &); void Copie(const Chaine &); void Concatene(const Chaine &); int Compare(const Chaine &) const; int Longueur() const; const char* Acces() const; void Detruit(); private: char *s; };

15 Conception de Programmes - IUT de Paris - 1ère année - 98-9915 // fichier chaine.cpp #include #include «chaine.hpp» void Chaine::Initialise(const char* ch){ s = new char[strlen(ch)+1]; strcpy(s, ch); } void Chaine::Initialise(const Chaine & st){ Initialise(st.s); } void Chaine::Copie(const Chaine & st){ Detruit(); Initialise(st.s); }

16 Conception de Programmes - IUT de Paris - 1ère année - 98-9916 void String::Concatene(const String& st){ String tmp; tmp.Initialise(s); Detruit(); s = new char[tmp.Longueur()+st.Longueur()+1]; strcpy(s, tmp.s); strcat(s, st.s); tmp.Detruit(); } int String::Compare(const String& st) const { return strcmp(s, st.s); }

17 Conception de Programmes - IUT de Paris - 1ère année - 98-9917 int String::Longueur() const { return strlen(s); } const char* String::Acces() const { return s; } void String::Detruit(const String& st){ delete[] s; }

18 Conception de Programmes - IUT de Paris - 1ère année - 98-9918 // fichier main.cpp #include #include «chaine.hpp» void main(){ Chaine c1, c2; c1.Initialise(«le C++»); c2.Initialise(« quel beau langage!»); c1.Concatene(c2); cout << c1.Acces() << endl; c1.Detruit(); c2.Detruit(); }


Télécharger ppt "Conception de Programmes - IUT de Paris - 1ère année - 98-991 Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des."

Présentations similaires


Annonces Google