SlideShare ist ein Scribd-Unternehmen logo
1 von 17
D’UML VERS C++

AGL – Chapitre
Mme. Lilia SFAXI
Mme. Abir Gallas

L2ARS/SIL – 2011/2012

6
Génération de Code
 Génération: Production automatique
d’artéfacts à partir d’un modèle
 Exemple: à partir d’un diagramme de classes,
on peut générer:
Du code pour les classes du diagramme
Un document qui décrit les classes
textuellement
Un rapport représentant des faits sur le modèle
Rétro-Ingénierie
 Le contraire de la génération
 Analyse du code d’un programme pour
produire des modèles qui représentent la
même information de manière visuelle
 Exemple: faire de la rétro-ingénierie de
classes C++ résulte en un diagramme de
classes représentant les relations entre
elles.
Traduction UML-C++
 Diagramme de classes UML

Définit les composantes du système final
Ne définit pas le nombre et l’état des instances
individuelles

 Un diagramme de classes proprement réalisé
permet de:

Structurer le travail de développement de manière
efficace
Séparer les composantes pour répartir le
développement entre les membres d’un groupe
Construire le système de manière correcte
D’UML vers C++ :
Vocabulaire
 Le tableau suivant liste la conversion entre
les éléments du modèle UML vers du
code C++
Élément UML

Élément C++

Packetage

Répertoire / Namespace

Classe

Classe (fichiers .h et .cpp)

Relation de Généralisation

Héritage

Relation d’association/
agrégation/composition

Attribut

Attribut

Attribut

Méthode

Opération

Paramètre

Argument d’Opération
Classes, Attributs et
Méthodes
 Représentation d’une classe, avec des attributs et méthodes
publics et privés.
Point
- abscisse_: entier
- ordonnée_: entier
+ x() : entier
+ y() : entier
+ deplacerDe(incX: entier,
incY : entier)
+ deplacerVers(dX: entier, dY
: entier)

class Point{
public:
Point( int abs, int ord)
int x(void) const;
int y(void) const;
void deplacerDe (int incX,
int incY);
void deplacerVers (int dX,
int dY);
private:
int abscisse_;
int ordonnee_;
};
Attributs et Méthodes
« de Classe »
 Attribut/Méthode de classe:

 Commun à tous les objets créés
 Exemple: compteur du nombre d’instances créées.

Point
…
+ NbPoints_: entier
…
+ NbPoints() : entier

class Point{
public:
static int NbPoints(void);
private:
static int NbPoints_;
};
Classes et Méthodes
Abstraites
 Méthode Abstraite

 Méthode déclarée sans d’implémentation

 Classe Abstraite

 Classe contenant au moins une méthode abstraite

ObjetGraphique
…
…
+ afficher()

class ObjetGraphique{
public:
virtual void afficher(void) = 0;
…
};
Héritage
ObjetGraphique
# pointBase_:Point
# couleur_: entier
# epaisseur_: entier
« constructor» +ObjetGraphique
+ afficher()

Cercle
# rayon_:entier
« constructor» + Cercle
+ afficher()

class ObjetGraphique {
public:
ObjetGraphique (int x, int y, int
couleur=0, int epaisseur=0)
: pointBase_(x,y),
couleur_(couleur),
epaisseur_(epaisseur) {}
protected:
Point pointBase_;
int couleur_;
int epaisseur_;
};
class Cercle : public ObjetGraphique{
public:
Cercle (int x, int y, int rayon, int
couleur=0, int epaisseur=0)
: ObjetGraphique(x, y, couleur,
epaisseur),
rayon_(rayon) {} ...
private:
int rayon_;
};
Composition
Cercle
- rayon_: entier

« constructor» + Cercle
+ afficher()

centre
1

Point
- abscisse_: entier
- ordonnée_: entier

class Cercle{
public:
Cercle(…);
private:
Point centre_;
int rayon_;
};
//constructeur
Cercle::Cercle (int x, int y, int rayon)
: centre_(x,y), rayon_(rayon)
{}
Agrégation (par pointeur)
Service
- nom_: chaîne
« constructor» + Service
+ set_receptionniste(e:Employe)

réceptionniste
1

Employe
- nom_: entier
- identifiant_: entier
- salaire: réel
« constructor» + Employe
+ setSalaire(salaire:réel)

class Service{
private:
string nom_;
Employe* receptionniste_;
};
//constructeur
Service::Service (string nom)
Peut être
: nom_(nom),
nul
receptionniste_(NULL)
{}
//association du réceptionniste
Service::set_receptionniste(Employe* e)
{
receptionniste_ = employe;
}
//fonction principale
int main()
{
Service expedition(« Expeditions »);
Employe* e= new Employe("Michel",123);
expedition.set_receptionniste(e);
}
Agrégation (par référence)
Service
- nom_: chaîne
« constructor» + Service
+ set_receptionniste(e:Employe)

réceptionniste
1

Employe
- nom_: entier
- identifiant_: entier
- salaire: réel
« constructor» + Employe
+ setSalaire(salaire:réel)

class Service{
private:
string nom_;
Employe& receptionniste_;
};
Doit être
//constructeur
initialisé
Service::Service (string nom,
Employe& employe)
: nom_(nom),
receptionniste_(employe)
{}
//fonction principale
int main()
{
Employe employe(« Michel», 12568);
Service expedition(«Expéditions»,
employe);
employe.set_salaire(500);
}
Associations
 Les associations, comme les agrégations, sont
représentées par des attributs
La différence se voit essentiellement dans le sens
Personne
- nom_: chaîne
0..1

appartient
0..*

Voiture
- matricule_: chaîne
- marque_: chaîne

class Personne{
private:
string nom_;
Liste<Voiture>* voitures_;
};
class Voiture{
private:
string matricule_;
string marque_;
Personne* proprietaire_;
};
Classe d’Association
Musicien

1..*

Instrument
1..*

Performance

class Performance{
private:
Musicien unMusicien;
Instrument unInstrument;
};
Exercice 1 : Forward
Engineering

 Réaliser en C++ le squelette du programme
qui accompagne ce diagramme
A

E

- x1: entier

- x1: double

+ faireX()

+ faireE()

B

C

D

- y1: entier
+ faireY()

-z1: double
- z2: double

+ faireZ()

F
- f1: double
+ faireF()
Exercice 2 : Reverse
Engineering
 Représenter le diagramme de classes UML
correspondant au squelette de code suivant:
class Department {
private : char* name_p;
public:
Department (char *dName) {
name_p = new char(sizeof(strlen(dName)));
name_p = dName;
}
char* dName();
};
class Student {
private : char* name_p;
public:
Student (char *sName) {
name_p = new char (sizeof(strlen(sName)));
name_p = sName;
}
char* sName();
};

class Course {
private:
Student * std_p;
Department * dept_p;
char * courseName_p;
static int index;
static Course *courseList[4];
public:
Course (char* crseName, Student* student,
Department* dept):
courseName_p(0), std_p(student),
dept_p(dept) { };
static char* findStudent (char *crseName,
char* deptName);
char * getStdName() ;
char * getDeptName{};
char * getCourseName();
};
Exercice 2: Correction

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logicielMohamed Diallo
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessZakaria Bouazza
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPYouness Boukouchi
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Mehdi Hamime
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiqueOussama Yoshiki
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriMansouri Khalifa
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Rapport Projet Gestion des Etudiants avec C++
Rapport Projet Gestion des Etudiants avec C++Rapport Projet Gestion des Etudiants avec C++
Rapport Projet Gestion des Etudiants avec C++Saâd Zerhouni
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesLilia Sfaxi
 

Was ist angesagt? (20)

UML Diagrammes Dynamiques
UML Diagrammes DynamiquesUML Diagrammes Dynamiques
UML Diagrammes Dynamiques
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
UML Diagrammes Statiques
UML Diagrammes StatiquesUML Diagrammes Statiques
UML Diagrammes Statiques
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified Process
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
UML
UMLUML
UML
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Rapport Projet Gestion des Etudiants avec C++
Rapport Projet Gestion des Etudiants avec C++Rapport Projet Gestion des Etudiants avec C++
Rapport Projet Gestion des Etudiants avec C++
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de Classes
 

Andere mochten auch

Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueLilia Sfaxi
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJSLilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOALilia Sfaxi
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServicesLilia Sfaxi
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOSLilia Sfaxi
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScriptLilia Sfaxi
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de ThèseLilia Sfaxi
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services WebLilia Sfaxi
 
Mobile developement
Mobile developementMobile developement
Mobile developementLilia Sfaxi
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques androidLilia Sfaxi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesLilia Sfaxi
 

Andere mochten auch (20)

Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Angular
AngularAngular
Angular
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOS
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de Thèse
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Mobile developement
Mobile developementMobile developement
Mobile developement
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologies
 

Ähnlich wie Chp6 - De UML vers C++

Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winformsChristophe Zome
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Visual studio
Visual studioVisual studio
Visual studioISIG
 
mis
mismis
misISIG
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdframadanmahdi
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 

Ähnlich wie Chp6 - De UML vers C++ (20)

generation_code.pdf
generation_code.pdfgeneration_code.pdf
generation_code.pdf
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Memo java
Memo javaMemo java
Memo java
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winforms
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Visual studio
Visual studioVisual studio
Visual studio
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
mis
mismis
mis
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Part1
Part1Part1
Part1
 
Cours c#
Cours c#Cours c#
Cours c#
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 

Mehr von Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfLilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-CassandraLilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de donnéesLilia Sfaxi
 

Mehr von Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 
Lab3-Android
Lab3-AndroidLab3-Android
Lab3-Android
 

Chp6 - De UML vers C++

  • 1. D’UML VERS C++ AGL – Chapitre Mme. Lilia SFAXI Mme. Abir Gallas L2ARS/SIL – 2011/2012 6
  • 2. Génération de Code  Génération: Production automatique d’artéfacts à partir d’un modèle  Exemple: à partir d’un diagramme de classes, on peut générer: Du code pour les classes du diagramme Un document qui décrit les classes textuellement Un rapport représentant des faits sur le modèle
  • 3. Rétro-Ingénierie  Le contraire de la génération  Analyse du code d’un programme pour produire des modèles qui représentent la même information de manière visuelle  Exemple: faire de la rétro-ingénierie de classes C++ résulte en un diagramme de classes représentant les relations entre elles.
  • 4. Traduction UML-C++  Diagramme de classes UML Définit les composantes du système final Ne définit pas le nombre et l’état des instances individuelles  Un diagramme de classes proprement réalisé permet de: Structurer le travail de développement de manière efficace Séparer les composantes pour répartir le développement entre les membres d’un groupe Construire le système de manière correcte
  • 5. D’UML vers C++ : Vocabulaire  Le tableau suivant liste la conversion entre les éléments du modèle UML vers du code C++ Élément UML Élément C++ Packetage Répertoire / Namespace Classe Classe (fichiers .h et .cpp) Relation de Généralisation Héritage Relation d’association/ agrégation/composition Attribut Attribut Attribut Méthode Opération Paramètre Argument d’Opération
  • 6. Classes, Attributs et Méthodes  Représentation d’une classe, avec des attributs et méthodes publics et privés. Point - abscisse_: entier - ordonnée_: entier + x() : entier + y() : entier + deplacerDe(incX: entier, incY : entier) + deplacerVers(dX: entier, dY : entier) class Point{ public: Point( int abs, int ord) int x(void) const; int y(void) const; void deplacerDe (int incX, int incY); void deplacerVers (int dX, int dY); private: int abscisse_; int ordonnee_; };
  • 7. Attributs et Méthodes « de Classe »  Attribut/Méthode de classe:  Commun à tous les objets créés  Exemple: compteur du nombre d’instances créées. Point … + NbPoints_: entier … + NbPoints() : entier class Point{ public: static int NbPoints(void); private: static int NbPoints_; };
  • 8. Classes et Méthodes Abstraites  Méthode Abstraite  Méthode déclarée sans d’implémentation  Classe Abstraite  Classe contenant au moins une méthode abstraite ObjetGraphique … … + afficher() class ObjetGraphique{ public: virtual void afficher(void) = 0; … };
  • 9. Héritage ObjetGraphique # pointBase_:Point # couleur_: entier # epaisseur_: entier « constructor» +ObjetGraphique + afficher() Cercle # rayon_:entier « constructor» + Cercle + afficher() class ObjetGraphique { public: ObjetGraphique (int x, int y, int couleur=0, int epaisseur=0) : pointBase_(x,y), couleur_(couleur), epaisseur_(epaisseur) {} protected: Point pointBase_; int couleur_; int epaisseur_; }; class Cercle : public ObjetGraphique{ public: Cercle (int x, int y, int rayon, int couleur=0, int epaisseur=0) : ObjetGraphique(x, y, couleur, epaisseur), rayon_(rayon) {} ... private: int rayon_; };
  • 10. Composition Cercle - rayon_: entier « constructor» + Cercle + afficher() centre 1 Point - abscisse_: entier - ordonnée_: entier class Cercle{ public: Cercle(…); private: Point centre_; int rayon_; }; //constructeur Cercle::Cercle (int x, int y, int rayon) : centre_(x,y), rayon_(rayon) {}
  • 11. Agrégation (par pointeur) Service - nom_: chaîne « constructor» + Service + set_receptionniste(e:Employe) réceptionniste 1 Employe - nom_: entier - identifiant_: entier - salaire: réel « constructor» + Employe + setSalaire(salaire:réel) class Service{ private: string nom_; Employe* receptionniste_; }; //constructeur Service::Service (string nom) Peut être : nom_(nom), nul receptionniste_(NULL) {} //association du réceptionniste Service::set_receptionniste(Employe* e) { receptionniste_ = employe; } //fonction principale int main() { Service expedition(« Expeditions »); Employe* e= new Employe("Michel",123); expedition.set_receptionniste(e); }
  • 12. Agrégation (par référence) Service - nom_: chaîne « constructor» + Service + set_receptionniste(e:Employe) réceptionniste 1 Employe - nom_: entier - identifiant_: entier - salaire: réel « constructor» + Employe + setSalaire(salaire:réel) class Service{ private: string nom_; Employe& receptionniste_; }; Doit être //constructeur initialisé Service::Service (string nom, Employe& employe) : nom_(nom), receptionniste_(employe) {} //fonction principale int main() { Employe employe(« Michel», 12568); Service expedition(«Expéditions», employe); employe.set_salaire(500); }
  • 13. Associations  Les associations, comme les agrégations, sont représentées par des attributs La différence se voit essentiellement dans le sens Personne - nom_: chaîne 0..1 appartient 0..* Voiture - matricule_: chaîne - marque_: chaîne class Personne{ private: string nom_; Liste<Voiture>* voitures_; }; class Voiture{ private: string matricule_; string marque_; Personne* proprietaire_; };
  • 15. Exercice 1 : Forward Engineering  Réaliser en C++ le squelette du programme qui accompagne ce diagramme A E - x1: entier - x1: double + faireX() + faireE() B C D - y1: entier + faireY() -z1: double - z2: double + faireZ() F - f1: double + faireF()
  • 16. Exercice 2 : Reverse Engineering  Représenter le diagramme de classes UML correspondant au squelette de code suivant: class Department { private : char* name_p; public: Department (char *dName) { name_p = new char(sizeof(strlen(dName))); name_p = dName; } char* dName(); }; class Student { private : char* name_p; public: Student (char *sName) { name_p = new char (sizeof(strlen(sName))); name_p = sName; } char* sName(); }; class Course { private: Student * std_p; Department * dept_p; char * courseName_p; static int index; static Course *courseList[4]; public: Course (char* crseName, Student* student, Department* dept): courseName_p(0), std_p(student), dept_p(dept) { }; static char* findStudent (char *crseName, char* deptName); char * getStdName() ; char * getDeptName{}; char * getCourseName(); };