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

Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département.

Présentations similaires


Présentation au sujet: "Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département."— Transcription de la présentation:

1 Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département dinformatique et de génie logiciel

2 Plan Principe de lencapsulation Classes et objets Les concepts orientés objet Le concept d'Objet Les principes de lapproche Orientée Objet Les relations entre Objets

3 Encapsulation Le rassemblement des données et du code les utilisant dans une entité unique (objet). La séparation nette entre la partie publique d'un objet (ou interface) seule connue de l'utilisateur de la partie privée ou implémentation qui reste masquée.

4 Encapsulation et abstraction L'encapsulation Consiste à masquer l'accès à certains attributs et méthodes d'une classe. Pourquoi masquer? Cacher les détails d'implémentation des objets à l'utilisateur permet de modifier, par exemple la structure de données interne d'une classe (remplacer un tableau par une liste chaînée) sans pour autant entraîner de modifications dans le code de lutilisateur, linterface nétant pas atteinte. Abstraction de données La structure d'un objet n'est pas visible de l'extérieur, son interface est constituée de messages invocables par un utilisateur. La réception d'un message déclenche l'exécution de la méthode correspondant à ce message. Abstraction procédurale Du point de vue de l'extérieur (cest-à-dire en fait du client de lobjet), l'invocation d'un message est une opération atomique. L'utilisateur n'a aucun élément d'information sur la mécanique interne mise en œuvre. Par exemple, il ne sait pas si le traitement requis a demandé lintervention de plusieurs méthodes ou même la création dobjets temporaires etc.

5 Droits daccès En C++, on choisit les paramètres daccès aux membres dune encapsulation à l'aide des mots clés : private : les membres privés ne sont accessibles que par les fonctions membres de la classe. protected : les membres protégés sont comme les membres privés. Mais ils sont aussi accessibles par les fonctions membres des classes dérivées. public : les membres publics sont accessibles par tous. La partie publique est appelée interface. Les mots réservés private, protected et public peuvent figurer plusieurs fois dans la déclaration de la classe. Le droit d'accès ne change pas tant qu'un nouveau droit n'est pas spécifié.

6 Les différents type dencapsulation Il existe différents types dencapsulation : struct Classe1 { /*... */ }; tous les membres sont par défaut d'accès public par défaut. union Classe2 { /*... */ }; tous les membres sont d'accès public par défaut. class Classe3 { /*... */ }; tous les membres sont d'accès private par défaut. C'est cette dernière forme qui est utilisée en C++ pour définir des classes.

7 Principe de la conception orienté objet Approche traditionnelle Organiser autour du traitement Algorithmes + Structures de données = Programme Fonction 1 Structures de données Fonction 2 Fonction 3 Fonction n

8 Principe de la conception orienté objet Organiser autour des données à manipuler Données Fonctions de manipulations et de traitements Objet

9 Classe et objet Classe = regroupement d'objets ayant des propriétés (état et/ou comportement et/ou relations) communes Classe = moule qui décrit la structure interne d'un ensemble d'objets Classe = abstraction qui n'a de sens qu'à la compilation Objet = un instance d'une classe Objet = instance qui n'a d'existence qu'à l'exécution (les termes instance, occurrence et objet sont synonymes). Exemple. Phillipon est un digne représentant de la race des chats. Phillipon est une instance de la classe des chats. Tous les chats ont des propriétés communes : ils miaulent (propriété dynamique) ils ont une moustache (propriété statique) etc. Chat : classe représentant un ensemble dobjets ayant : des attributs semblables des comportements semblables.

10 La classe ? Objet = entité discrète qui existe dans le temps et dans l'espace. Classe = abstraction qui nexiste que dans les programmes. doit représenter un ensemble d'objets qui partagent une structure commune et un comportement commun. définit les opérations permises sur les objets de la classe. les états quils peuvent prendre (transitions détats).

11 Le concept dobjet Objet abstraction du monde réel entité possédant un état (information) offrant des services / opérations pour examiner / modifier son état (comportement) Exemple : une personne, une voiture, une procédure, une loi,... Modèle Orienté-Objet (OO) dune application : définition dun ensemble dobjets coopérants - communicants - et concurrents - vivants indépendamment les uns des autres

12 Le concept dobjet Objet = identité unique + état + comportement Exemple : la voiture 1875 WC 31 état : immatriculation, kilométrage, vitesse instantanée, état interne… services / opérations : accesseurs : kilométrage?, immatriculation?... modificateurs : démarrer, sarrêter, se déplacer, tomber en panne, être réparée... Essentiel : un objet n'est manipulable qu'à travers son interface i.e. ses opérations publiques La structure et le comportement d'objets semblables sont définis dans la classe qui leur est commune.

13 Le concept dobjet État de l'objet : Valeurs de ses attributs ou de l'information qu'il contient. Comportement de l'objet Ensemble des opérations que l'on peut effectuer sur celui- ci. Identité de l'objet Deux objets peuvent être exactement dans le même état, mais sont différents de part leur identité unique ex.: adresse en mémoire.

14 Représentation dun objet kilométrage :... vitesse :... immatriculation :... kilométrage? démarrer tomber en panne... La voiture de Jean Son nom Un objet Son état Opération privée Opération publique

15 Le concept dobjet Un objet possède 2 types de propriétés Statiques : état, attributs. Dynamiques : comportements, services. Exemple : le chat de ma voisine Statiques : son nom (Phillipon) son poids (18 livres – je sais il est gros...) sa couleur (noir et blanc) Dynamiques : il miaule quand il a faim il se couche sur son cousin près du sofa il mange des mouches

16 Le concept d'objet Objet: Il est en relation avec d'autres objets : relations statiques : (relativement) stables dans le temps composition / agrégation : traduit l'assemblage généralisation / spécialisation : permet la réutilisation association n-aire : relation classique relations dynamiques : brèves, limitées à la communication communication : échange de données signal : échange de stimuli

17 Le concept objet Il est unique : un objet n'est instance que d'une classe et d'une seule une instance a une identité (interne) unique Sa durée de vie : une instance doit être déclarée, puis définie en fonction du contexte. un objet vit sa vie puis meurt. la durée de vie peut être très courte, très grande ! Concurrence : les objets évoluent indépendamment les uns des autres Objet:

18 Principes sur lesquels reposent les Objets Encapsulation : regroupement des informations d'état et de comportement sous un nom unique Masquage d'information : on ne connaît pas la structure de l'information Interface : seuls les services publics (offerts à l'extérieur) sont utilisables Envoi de messages : les objets communiquent par messages Durée de vie limitée : dépendante du contexte

19 Généralisation / spécialisation Généralisation : a posteriori pour favoriser la réutilisation future Spécialisation : c'est de la réutilisation en extension : ajout de nouvelles propriétés en compréhension : modification de propriétés Conséquences : Héritage simple / multiple. Possibilité de définir des familles de classes traduisant le principe de généralisation / spécialisation. « La classe dérivée est une version spécialisée de sa classe de base » Polymorphisme : possibilité pour une instance de changer de classe tout en restant dans la même hiérarchie (i.e. un objet peut changer de forme au cours de sa vie ! )

20 Vers une hiérarchie de classe Si on poursuit de la classe des chats, il existe : n Différents, mais partagent tous des caractéristiques : – ils mangent de la viande – leurs griffes peuvent se rétracter – leurs molaires sont coupantes – ils ont une moustache

21 Vers une hiérarchie de classe Généralisation: races chat, lion et tigre => super-race nommée félins. La super-race définit : des propriétés des comportements valides autant pour les chats que pour lions et tigres. En termes informatiques, la classe Félin correspond à une super-classe des classes Chat, Lion et Tigre. Chat, lion, tigre : classes dérivées de la classe Félin héritent des propriétés et des comportements de leur super-classe. Cest le concept dhéritage.

22 Vers une hiérarchie de classe Extension du concept dhéritage : arbre dhéritage On sattend à certaines caractéristiques de Phillipon Il est une instance (objet) de la classe Chat ( miauler, dormir, moustaches). On sattend à ce quil puisse se mouvoir non pas parce quil est un chat, mais parce quil appartient à la classe Animal, donc par héritage.

23 Polymorphisme Les chats, les serpents et les poissons partagent tous un comportement commun hérité de la classe des animaux : ils ont la capacité de se mouvoir. Tous le font, mais chacun à sa manière : le chat marche le serpent rampe le poisson nage Si on donne lordre de se mouvoir, chaque animal va pouvoir répondre à cet ordre, à sa manière propre. polymorphisme

24 Conception Orientée Objet Identification des classes à réutiliser ou à concevoir : utilisation dune méthode OO pour la conception et la définition des hiérarchies de classes à utiliser ou à développer Construction de lApplication OO : transformation de la conception de lapplication en un ensemble dobjets concurrents et coopérants Deux étapes fondamentalement différentes :

25 Intérêt des Objets Maîtrise de la complexité : l'encapsulation permet de se concentrer sur un(e) objet(classe) et un(e) seul(e) il est possible de tester de façon quasi exhaustive un objet Evolution facilitée : rajouter de nouveaux objets est simplifié. On les raccroche aux modèles déjà construits par spécialisation Réutilisation : vraiment possible à cause des classifications induites par la relation de spécialisation / généralisation !...

26 Programmer une classe en C++ typedef struct { int jour; int mois; int année; } Date; void initDate(Date*d, int j,int m,int a){ d->jour=j; d->mois=m; d->année=a; } int main(){ Date d; initData(&d,2,2,2004); return 0; } class Date { public : void initData(int j,int m,int a); protected: int _jour; int _mois; int _année; }; Date::initData(int j,int m,int a){ _jour=j; _mois=m; _année=a; } int main(){ Date d; d.initData(2,2,2009); return 0; } Programme C Programme C++

27 Interface et implémentation L'interface d'une classe définit ce qui est vu de l'extérieur. renforce la notion d'abstraction en ne montrant que ce qui est nécessaire. contient principalement les déclarations de toutes les opérations applicables sur les instances de cette classe. L'implémentation d'une classe est ce qui est caché à l'intérieur, principalement le code réalisant les opérations définies dans l'interface.

28 Interface dune classe Phillipon miaule, marche, mange : Nous connaissons les manifestations extérieures du miaulement, mais la façon dont le son est produit nous est masqué. Chat = abstraction On ne montre seulement que quelques comportements. Une interface représente cette abstraction. Énonce les services offerts Les détails de fonctionnement sont cachés. Emphase sur la compréhension des éléments importants, sans se soucier de limplantation.

29 Interface dune classe (fichier.h ou.hpp) Cest la section publique dune classe Attributs public Méthodes public Constructeur Destructeur Fonction daccès class Date { public : int var1; Date(); ~Date(); void initialiser(int j,int m,int a); void afficher(); int getJour(); int getMois(); int getAnnee(); setJour( int j); setMois(int m); setAnnee(int a); protected: //… private : //… };

30 Implémentation dune classe (fichier.h ou.hpp) Section protected Attributs et méthodes accessibles par les membres de la classe et des classes dérivées Section private Attributs et méthodes accessibles uniquement par les membres de la classe class Date { public : //… protected: int _jour; int _mois; int _année; void _test(); private: //… };

31 Implémentation dune classe (fichier.cpp) Définition des méthodes de la class : Constructeurs Destructeur Méthodes daccès Modificateurs Date::Date(){ _jour=0; _mois_0; _annee=0; } Date::~Date(){} void Date::afficher(){ cout << "la date : " << _jour ; cout << "/" << _mois ; cout << "/" << _annee << endl; } int Date::getJour() {return _jours;} int Date::getMois() {return _mois;}; int Date::getAnnee(){return _annee;} Date::setJour(int j) {_jour =j;} Date::setMois(int m) {_mois =m;} Date::setAnnee(int a){_annee=a;}

32 Fonctions vs méthodes Fonction, exemple : void initDate(Date& date, int jour, int mois, int annee) { date.m_jour = jour; date.m_mois = mois; date.m_annee = annee; } La fonction doit avoir les valeurs à assigner ET la date sur laquelle travailler. int main() { Date uneDate; initDate(uneDate, 30, 3, 1965); } La date sur laquelle travailler.

33 Fonctions vs méthodes Méthode, exemple : int main() { Date uneDate; uneDate.initialise(30, 3, 1965); } L'objet sur lequel appliquer l'initialisation. void Date::initialiser(int jour, int mois, int annee) { m_jour = jour; m_mois = mois; m_annee = annee; } Accès direct aux attributs de l'objet courant. Accès direct aux attributs de l'objet courant.

34 Fonctions vs méthodes Les différences : void Date::initialise(int jour, int mois, int annee) { m_jour = jour; m_mois = mois; m_annee = annee; } La méthode a une portée limitée à la classe Date. Accès direct aux attributs de l'objet courant. void initialise(Date& date, int jour, int mois, int annee) { date.m_jour = jour; date.m_mois = mois; date.m_annee = annee; } La fonction est globale. Accès direct aux attributs de la structure.


Télécharger ppt "Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département."

Présentations similaires


Annonces Google