GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

LES NOMBRES PREMIERS ET COMPOSÉS
Aires et périmètres.
Le moteur
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Erratum C Surcharge For(int x=0; … 2.
Cours n° 7 Standard Template Library II.
Qui a le nombre qui vient après 8 ?
Mon carnet De comportement
Classe : …………… Nom : …………………………………… Date : ………………..
Est Ouest Sud 11 1 Nord 1 Individuel 20 joueurs 15 rondes - 30 étuis (arc-en-ciel) Laval Du Breuil Adstock, Québec I-20-15ACBLScore S0515 RondeNE
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Est Ouest Sud 11 1 Nord 1 RondeNE SO
Est Ouest Sud 11 1 Nord 1 Individuel 15 ou 16 joueurs 15 rondes - 30 étuis Laval Du Breuil Adstock, Québec I-16-15ACBLScore S0415 RndNE
Sud Ouest Est Nord Individuel 36 joueurs
Les Prepositions.
Les 3 dimensio ns de la morale et de léthique (activité)
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Projet n°4 : Objecteering
1. 2 Informations nécessaires à la création dun intervenant 1.Sa désignation –Son identité, ses coordonnées, son statut 2.Sa situation administrative.
Les objets: représentation
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Introduction à la POO: Les classes vs les objets
Développement d’applications web
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Les verbes auxiliaires Avoir ou être ?? Choisissez! Cest un verbe Dr Mrs Vandertrampp? Cest un verbe réfléchi?
Cours de physique générale I Ph 11
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Classes abstraites et Interfaces
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Complément Le diagramme des classes
SYSTEMES D’INFORMATION
La Saint-Valentin Par Matt Maxwell.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
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.
Louis la grenouille Paroles et musique: Matt Maxwell.
Notre calendrier français MARS 2014
COURS DE PROGRAMMATION ORIENTEE OBJET :
C'est pour bientôt.....
Mon école est le monde! Par Charlotte Diamond.
Veuillez trouver ci-joint
Le diagramme de séquences
Résoudre une équation du 1er degré à une inconnue
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Structures des données
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
9 paires séries de 3 étuis ( n° 1 à 27 )
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
1 Nestlé – Optifibre Zones administrables via le back-office.
La notion de type revisitée en POO
Les Chiffres Prêts?
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
Les surcharges d'opérateurs
Transcription de la présentation:

GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++

GPA789 Analyse et conception orientées objet 2 Introduction (1) Ce chapitre présente la correspondance entre certaines constructions de UML et le langage C++.Ce chapitre présente la correspondance entre certaines constructions de UML et le langage C++. Lobjectif est de montrer une réalisation possible des relations UML.Lobjectif est de montrer une réalisation possible des relations UML. Donc, limportance nest pas dapprendre le codage par cœur mais bien de saisir lexpression et la sémantique du code.Donc, limportance nest pas dapprendre le codage par cœur mais bien de saisir lexpression et la sémantique du code. De cette façon, il est possible de mieux juger la pertinence et lutilisation des relations UML.De cette façon, il est possible de mieux juger la pertinence et lutilisation des relations UML.

GPA789 Analyse et conception orientées objet 3 Classe simple class A { public: // constructeur // constructeur A(); A(); A(const A& droit); A(const A& droit); // Destructeur // Destructeur ~A(); ~A(); // Opérateur dassignation // Opérateur dassignation const A& operator = (const A& droit); const A& operator = (const A& droit); // Autres opérations // Autres opérations bool operator == (const A& droit) const; bool operator == (const A& droit) const; bool operator != (const A& droit) const; bool operator != (const A& droit) const;};

GPA789 Analyse et conception orientées objet 4 Classe avec attributs et opérations class A { public: A(); A(); A(const A& droit); A(const A& droit); ~A(); ~A(); const A& operator = (const A& droit); const A& operator = (const A& droit); bool operator == (const A& droit) const; bool operator == (const A& droit) const; bool operator != (const A& droit) const; bool operator != (const A& droit) const; // Opérations spécifiques à la classe // Opérations spécifiques à la classe const string get_A1() const; const string get_A1() const; void set_A1(const string valeur); void set_A1(const string valeur); const string get_A2() const; const string get_A2() const; void set_A2(const string valeur); void set_A2(const string valeur);private: string A1; string A1; string A2; string A2;};

GPA789 Analyse et conception orientées objet 5 Classe paramétrisée template template class A { public: A(); A(); A(const A & droit); A(const A & droit); ~A(); ~A(); const A & operator = (const A & droit); const A & operator = (const A & droit); bool operator == (const A & right) const; bool operator == (const A & right) const; bool operator != (const A & right) const; bool operator != (const A & right) const;};

GPA789 Analyse et conception orientées objet 6 Classe utilitaire class A { public: static void op1(); static void op1(); static void op2(); static void op2();}; Sert à représenter des fonctions et des modules non orientés objet (Code patrimoine).

GPA789 Analyse et conception orientées objet 7 Relation dassociation (1) // Déclaration anticipée de la classe B class B; // Classe A class A { public: A(); A(); A(const A& droit); A(const A& droit); ~A(); ~A(); const A& operator = (const A& droit); const A& operator = (const A& droit); bool operator == (const A& right) const; bool operator == (const A& right) const; bool operator != (const A& right) const; bool operator != (const A& right) const; // Pour la relation dassociation // Pour la relation dassociation const B* get_RoleB() const; const B* get_RoleB() const; void Set_RoleB(B* const value); void Set_RoleB(B* const value);private: B * Rb; }; B * Rb; };

GPA789 Analyse et conception orientées objet 8 Relation dassociation (2) // Classe B class B { public: B(); B(); B(const B& droit); B(const B& droit); ~B(); ~B(); const B& operator = (const B& droit); const B& operator = (const B& droit); bool operator == (const B& right) const; bool operator == (const B& right) const; bool operator != (const B& right) const; bool operator != (const B& right) const; // Pour la relation dassociation // Pour la relation dassociation const A* get_RoleA() const; const A* get_RoleA() const; void Set_RoleA(A* const value); void Set_RoleA(A* const value); private: A* Ra; A* Ra;};

GPA789 Analyse et conception orientées objet 9 Association 1 à N #include #include using namespace std; // Classe B class B { public: B(); B(); B(const B& droit); B(const B& droit); ~B(); ~B(); const B& operator = (const B& droit); const B& operator = (const B& droit); bool operator == (const B& right) const; bool operator == (const B& right) const; bool operator != (const B& right) const; bool operator != (const B& right) const; // Pour la relation dassociation de multiplicité 0..* // Pour la relation dassociation de multiplicité 0..* const set get_RoleA() const; const set get_RoleA() const; void Set_RoleA(const set value); void Set_RoleA(const set value); private: set Ra; }; set Ra; }; La classe A est identique à celle de lassociation 1 à 1

GPA789 Analyse et conception orientées objet 10 Association 1 à N avec contrainte #include #include using namespace std; // Classe B class B { public: B(); B(); B(const B& droit); B(const B& droit); ~B(); ~B(); const B& operator = (const B& droit); const B& operator = (const B& droit); bool operator == (const B& right) const; bool operator == (const B& right) const; bool operator != (const B& right) const; bool operator != (const B& right) const; // Pour la relation dassociation de multiplicité 0..* avec contrainte dordre // Pour la relation dassociation de multiplicité 0..* avec contrainte dordre const list get_RoleA() const; const list get_RoleA() const; void Set_RoleA(const list value); void Set_RoleA(const list value); private: list Ra; }; list Ra; };

GPA789 Analyse et conception orientées objet 11 Classe dassociation (1) // Fichier C.h // Déclaration anticipée class A; class B; class C { // constructeurs, destructeur et opérateurs idem aux // constructeurs, destructeur et opérateurs idem aux // classes précédentes // classes précédentes // relation dassociation // relation dassociation const B* get_B() const; const B* get_B() const; void set_B(B* const value); void set_B(B* const value); const A* get_A() const; const A* get_A() const; void set_A(A* const value); void set_A(A* const value);private: A* _A; A* _A; B* _B; }; B* _B; };

GPA789 Analyse et conception orientées objet 12 Classe dassociation (2) // Fichier A.h #include C.h class A { // constructeurs, destructeur et opérateurs idem aux classes // constructeurs, destructeur et opérateurs idem aux classes // précédentes // précédentes // relation dassociation // relation dassociation const C* get_C() const; const C* get_C() const; void set_C(C* const value); void set_C(C* const value); private: C* _C; C* _C;};

GPA789 Analyse et conception orientées objet 13 Classe dassociation (3) // Fichier B.h #include C.h class B { // constructeurs, destructeur et opérateurs idem aux classes // constructeurs, destructeur et opérateurs idem aux classes // précédentes // précédentes // relation dassociation // relation dassociation const C* get_C() const; const C* get_C() const; void set_C(C* const value); void set_C(C* const value); private: C* _C; C* _C;};

GPA789 Analyse et conception orientées objet 14 Classe dassociation N à N (1) // Fichier C.h // Déclaration anticipée class A; class B; class C { // constructeurs, destructeur et opérateurs idem aux classes précédentes // constructeurs, destructeur et opérateurs idem aux classes précédentes // relation dassociation // relation dassociation const B* get_B() const; const B* get_B() const; void set_B(B* const value); void set_B(B* const value); const A* get_A() const; const A* get_A() const; void set_A(A* const value); void set_A(A* const value);private: A* _A; A* _A; B* _B; B* _B;};

GPA789 Analyse et conception orientées objet 15 Classe dassociation N à N (2) // Fichier A.h #include #include #include C.h using namespace std; class A { // constructeurs, destructeur et opérateurs idem aux classes // constructeurs, destructeur et opérateurs idem aux classes // précédentes // précédentes // relation dassociation N à N // relation dassociation N à N const set get_C() const; const set get_C() const; void set_C(const set value); void set_C(const set value); private: set _C; set _C;};

GPA789 Analyse et conception orientées objet 16 Classe dassociation N à N (3) // Fichier B.h #include #include #include C.h using namespace std; class B { // constructeurs, destructeur et opérateurs idem aux classes // constructeurs, destructeur et opérateurs idem aux classes // précédentes // précédentes // relation dassociation N à N // relation dassociation N à N const set get_C() const; const set get_C() const; void set_C(const set value); void set_C(const set value); private: set _C; set _C;};

GPA789 Analyse et conception orientées objet 17 Relation dagrégation (1) // Déclaration anticipée class B; class A { // constructeurs, destructeur et opérateurs idem aux classes // constructeurs, destructeur et opérateurs idem aux classes // précédentes // précédentes // relation dagrégation // relation dagrégation const B* get_B() const; const B* get_B() const; void set_B(B* const value); void set_B(B* const value);private: B *_B; B *_B;};

GPA789 Analyse et conception orientées objet 18 Relation dagrégation (2) class B { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation dagrégation // relation dagrégation const A* get_RoleA() const; const A* get_RoleA() const; void set_RoleA(A* const value); void set_RoleA(A* const value);private: A *RoleA; A *RoleA;};;

GPA789 Analyse et conception orientées objet 19 Relation dagrégation (3) – –Limplantation de lassociation et de lagrégation est identique dans cet exemple. – –Or, la sémantique dune association et celle dune agrégation est différente: lune des classes est considérée comme plus importante. – –On utilise lagrégation: Une classe est une partie dune autre classe; OU Il y a propagation des valeurs dun attribut dune classe vers une autre classe; OU Une action sur une classe implique une action sur une autre classe; OU Les objets dune classe sont subordonnés par les objets dune autre classe.

GPA789 Analyse et conception orientées objet 20 Relation dagrégation avec navigation (1) class A { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // private: // aucun objet de type B (pointeur ou autre) // aucun objet de type B (pointeur ou autre) // dans A // dans A}; La classe A ne peut atteindre la classe B

GPA789 Analyse et conception orientées objet 21 Relation dagrégation avec navigation (2) // Fichier B.h #include A.h class B { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation dagrégation avec navigation // relation dagrégation avec navigation const A* get_RoleA() const; const A* get_RoleA() const; void set_RoleA(A* const value); void set_RoleA(A* const value);private: A *RoleA; A *RoleA;};

GPA789 Analyse et conception orientées objet 22 Relation de composition (1) // Déclaration anticipée class B; class A { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation de composition // relation de composition const B* get_B() const; const B* get_B() const; void set_B(B* const value); void set_B(B* const value);private: B *_B; B *_B;};

GPA789 Analyse et conception orientées objet 23 Relation de composition (2) class B { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation de composition // relation de composition const A get_RoleA() const; const A get_RoleA() const; void set_RoleA(const A value); void set_RoleA(const A value);private: A RoleA; A RoleA;};

GPA789 Analyse et conception orientées objet 24 Relation de composition (3) –La composition exprime une relation plus forte que celle de lagrégation; –Il indique le confinement physique des classes: une classe est confinée à lintérieure dune autre; –Il y a équivalence entre un attribut dune classe et la relation de composition puisquun attribut est physiquement contenu dans une classe; –La multiplicité du côté de lagrégat (côté losange du lien) est nécessairement 0 ou 1 (en pratique toujours 1).

GPA789 Analyse et conception orientées objet 25 Réalisation alternative de la composition // Déclaration anticipée class B; class A { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation de composition // relation de composition const B* get_B() const; const B* get_B() const; void set_B(B* const value); void set_B(B* const value);private: B *_B; B *_B;};

GPA789 Analyse et conception orientées objet 26 Réalisation alternative de la composition class B { B() B() { // effectuer les tâches utiles ici… // effectuer les tâches utiles ici… // créer lobjet RoleA // créer lobjet RoleA RoleA = new A; RoleA = new A; } A(const A& droit) A(const A& droit) { // effectuer les tâches utiles ici… // effectuer les tâches utiles ici… // créer lobjet RoleA // créer lobjet RoleA RoleA = new A; RoleA = new A; } Faire coïncider la durée de vie de lobjet de type A avec la durée de vie de lobjet de type B

GPA789 Analyse et conception orientées objet 27 Réalisation alternative de la composition // Destructeur // Destructeur ~A() ~A() { // effectuer les tâches utiles ici… // effectuer les tâches utiles ici… // détruire lobjet RoleA // détruire lobjet RoleA delete RoleA; delete RoleA; } // Autres opérateurs idem aux classes // Autres opérateurs idem aux classes // précédentes // précédentes // // // relation de composition // relation de composition const A* get_RoleA() const; const A* get_RoleA() const; void set_RoleA(A* const value); void set_RoleA(A* const value);private: A *RoleA; A *RoleA;}; Faire coïncider la durée de vie de lobjet de type A avec la durée de vie de lobjet de type B

GPA789 Analyse et conception orientées objet 28 Relation de composition 1 à N (1) #include #include using namespace std; class B { // constructeurs, destructeur et // constructeurs, destructeur et // opérateurs idem aux classes // opérateurs idem aux classes // précédentes // précédentes // // // relation de composition 1 à N // relation de composition 1 à N const set get_RoleA() const; const set get_RoleA() const; void set_RoleA(const set value); void set_RoleA(const set value);private: set RoleA; set RoleA;}; La classe A est identique à celle de la composition 1 à 1

GPA789 Analyse et conception orientées objet 29 Héritage simple #include A.h class B : public A { // declaration de la classe B // };

GPA789 Analyse et conception orientées objet 30 Héritage multiple #include A.h #include B.h class C : public A, public B { // declaration de la classe C // };

GPA789 Analyse et conception orientées objet 31 Fin du chapitre 6 Pratiquer limplantation des diagrammes UML en utilisant les exemples de codage contenues dans ce chapitre.Pratiquer limplantation des diagrammes UML en utilisant les exemples de codage contenues dans ce chapitre. Noubliez pas: C++ est bien plus que du C.