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.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Cours n° 7 Standard Template Library II.
C++ 6ème cours Patrick Reuter maître de conférences
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
(Classes prédéfinies – API Java)
Introduction à Java - les paquetages -
1 Tableaux des objets C++ si on connaît le nombre dobjets nécessaires davance on peut utiliser des tableau dobjets dans les fonctions dusage class Personne.
C.
Programmation Orientée Objet (POO)
Introduction à la POO: Les classes vs les objets
Principes de programmation (suite)
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
TRAITEMENT DE STRUCTURES
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Langage Oriente Objet Cours 2.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction au paradigme orienté-objet (suite)
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
IFT 6800 Atelier en Technologies d’information
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Procédures et fonctions
Structures de données IFT-2000
Structures des données
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
Cours 61 6 La sécurité, Portée, Visibilité Programmer avec sécurité.
8PRO107 Éléments de programmation Les chaînes de caractères.
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Réaliser par: Sadok Amel Cheboui hassiba
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
Cours du 5 novembre.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Langage de Programmation Orientée Objet : C++
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
LES CLASSES ET LES OBJETS
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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.

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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.

Conception de Programmes - IUT de Paris - 1ère année 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é }

Conception de Programmes - IUT de Paris - 1ère année 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++; }

Conception de Programmes - IUT de Paris - 1ère année 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; }

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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; };

Conception de Programmes - IUT de Paris - 1ère année 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

Conception de Programmes - IUT de Paris - 1ère année 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 }

Conception de Programmes - IUT de Paris - 1ère année 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; };

Conception de Programmes - IUT de Paris - 1ère année // 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); }

Conception de Programmes - IUT de Paris - 1ère année 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); }

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

Conception de Programmes - IUT de Paris - 1ère année // 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(); }