SlideShare une entreprise Scribd logo

UML

A
angeeLee

UML diagramme de classes

1  sur  35
Télécharger pour lire hors ligne
Polytech Paris-Sud
Formation initiale 3e année
Spécialité Informatique

UML
Diagrammes de classes

Delphine Longuet
delphine.longuet@lri.fr
Processus de développement logiciel
Analyse
des besoins

Tests d'acceptation

Spécification

Tests système

Conception
architecturale
Conception
détaillée

Tests d'intégration

Tests unitaires

Développement
D. Longuet - UML

2
Objets et classes
Conception orientée objet : Représentation du système comme un
ensemble d'objets interagissant
Diagramme de classes
●
Représentation de la structure interne du logiciel
●
Utilisé surtout en conception mais peut être utilisé en analyse
Diagramme d'objets
●
Représentation de l'état du logiciel (objets + relations)
●
Diagramme évoluant avec l'exécution du logiciel
- création et suppression d'objets
- modification de l'état des objets (valeurs des atributs)
- modification des relations entre objets
D. Longuet - UML

3
Objets et classes
Objet
●
●

Entité concrète ou abstraite du domaine d'application
Décrit par état (attributs) + comportement (opérations)
nom de l'objet

attributs

opérations

D. Longuet - UML

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43
déposer(montant : float)
retirer(montant : float)
solde() : float

état (valeur des attributs)

4
Objets et classes
Classe : Regroupement d'objets de même nature (mêmes attributs +
mêmes opérations)
Objet = instance d'une classe
nom de la classe

MonCompteJoint : Compte

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43
déposer(montant : float)
retirer(montant : float)
solde() : float

numéro = 854126
devise = EUR
solde = 2215,03
déposer(montant : float)
retirer(montant : float)
solde() : float
MonCompteSuisse : Compte
numéro = 70054568
devise = CHF
solde = 121000
déposer(montant : float)
retirer(montant : float)
solde() : float

D. Longuet - UML

Compte
instances de

attributs
numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float
opérations
5
Classes
Attributs
●
Propriété partagée par tous les objets de la classe
●
Associe à chaque objet une valeur
●
Type associé simple (int, bool...), primitif (Date) ou énuméré
Opérations
●
Service qui peut être demandé à tout objet de la classe
Ne pas confondre avec une méthode = implantation de l'opération
Compte

D. Longuet - UML

numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float

6

Recommandé

Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
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
 
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
 

Contenu connexe

Tendances

Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrigeAmineMouhout1
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
Examen sybase - Administration base de donnees
Examen sybase - Administration base de donneesExamen sybase - Administration base de donnees
Examen sybase - Administration base de donneeswebreaker
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREGhizlane ALOZADE
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationLilia Sfaxi
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...ENSET, Université Hassan II Casablanca
 

Tendances (20)

Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
Cours java
Cours javaCours java
Cours java
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Examen sybase - Administration base de donnees
Examen sybase - Administration base de donneesExamen sybase - Administration base de donnees
Examen sybase - Administration base de donnees
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'Utilisation
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Uml & cas d'utilisation
Uml & cas d'utilisationUml & cas d'utilisation
Uml & cas d'utilisation
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Plsql
PlsqlPlsql
Plsql
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 

En vedette

Informe final foros virtuales programa conectadel
Informe final foros virtuales programa conectadelInforme final foros virtuales programa conectadel
Informe final foros virtuales programa conectadelConectaDEL
 
Universidad pedagogica naciona7 trabao de lupita 4 d octubre
Universidad pedagogica naciona7 trabao de lupita 4 d octubreUniversidad pedagogica naciona7 trabao de lupita 4 d octubre
Universidad pedagogica naciona7 trabao de lupita 4 d octubreDavid Hernandez
 
Data Shaker : StoryLab
Data Shaker : StoryLab Data Shaker : StoryLab
Data Shaker : StoryLab NumaParis
 
Dossier presse-tout-a-fait-moi
Dossier presse-tout-a-fait-moiDossier presse-tout-a-fait-moi
Dossier presse-tout-a-fait-moiToutafaitmoi
 
Le management stratégique
Le management stratégique Le management stratégique
Le management stratégique Béja
 
Técnicas de soporte: Microsoft outlook
Técnicas de soporte: Microsoft outlookTécnicas de soporte: Microsoft outlook
Técnicas de soporte: Microsoft outlookDani Catena Felipe
 
Synthese enquete VAE Uniformation 2014
Synthese enquete VAE Uniformation 2014Synthese enquete VAE Uniformation 2014
Synthese enquete VAE Uniformation 2014Uniformation
 
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 Montreal
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 MontrealCréer son manuel scolaire numérique - Sommet de l'iPad 2014 Montreal
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 Montrealbaudryceulemans
 
Sistema endocrino
Sistema endocrinoSistema endocrino
Sistema endocrinojairvevo
 

En vedette (20)

Bases de astrofísica contenido
Bases de astrofísica contenidoBases de astrofísica contenido
Bases de astrofísica contenido
 
Informe final foros virtuales programa conectadel
Informe final foros virtuales programa conectadelInforme final foros virtuales programa conectadel
Informe final foros virtuales programa conectadel
 
Universidad pedagogica naciona7 trabao de lupita 4 d octubre
Universidad pedagogica naciona7 trabao de lupita 4 d octubreUniversidad pedagogica naciona7 trabao de lupita 4 d octubre
Universidad pedagogica naciona7 trabao de lupita 4 d octubre
 
Beneficios de la maca
Beneficios de la macaBeneficios de la maca
Beneficios de la maca
 
Lupita
LupitaLupita
Lupita
 
Data Shaker : StoryLab
Data Shaker : StoryLab Data Shaker : StoryLab
Data Shaker : StoryLab
 
Presentation dizain
Presentation dizainPresentation dizain
Presentation dizain
 
Dossier presse-tout-a-fait-moi
Dossier presse-tout-a-fait-moiDossier presse-tout-a-fait-moi
Dossier presse-tout-a-fait-moi
 
Le management stratégique
Le management stratégique Le management stratégique
Le management stratégique
 
Poliedros
PoliedrosPoliedros
Poliedros
 
Poliedros
PoliedrosPoliedros
Poliedros
 
Técnicas de soporte: Microsoft outlook
Técnicas de soporte: Microsoft outlookTécnicas de soporte: Microsoft outlook
Técnicas de soporte: Microsoft outlook
 
Emotional
EmotionalEmotional
Emotional
 
Tailieu.vncty.com de so 2
Tailieu.vncty.com   de so 2Tailieu.vncty.com   de so 2
Tailieu.vncty.com de so 2
 
Cogedim jemmapes
Cogedim jemmapesCogedim jemmapes
Cogedim jemmapes
 
Synthese enquete VAE Uniformation 2014
Synthese enquete VAE Uniformation 2014Synthese enquete VAE Uniformation 2014
Synthese enquete VAE Uniformation 2014
 
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 Montreal
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 MontrealCréer son manuel scolaire numérique - Sommet de l'iPad 2014 Montreal
Créer son manuel scolaire numérique - Sommet de l'iPad 2014 Montreal
 
5
5 5
5
 
Sistema endocrino
Sistema endocrinoSistema endocrino
Sistema endocrino
 
9782100576692 extrait
9782100576692 extrait9782100576692 extrait
9782100576692 extrait
 

Similaire à UML

Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41megaplanet20
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++Lilia Sfaxi
 
Pont entre cet c++
Pont entre cet c++Pont entre cet c++
Pont entre cet c++maxcxi008
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
Caml intro
Caml introCaml intro
Caml introzan
 
05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptxBenacerLeila
 

Similaire à UML (17)

Diagramme de classes
Diagramme de classesDiagramme de classes
Diagramme de classes
 
Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41
 
Et3 5 diagsequence
Et3 5 diagsequenceEt3 5 diagsequence
Et3 5 diagsequence
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
556ef78d93c3b
556ef78d93c3b556ef78d93c3b
556ef78d93c3b
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
CM uml-diag-statiques
CM uml-diag-statiquesCM uml-diag-statiques
CM uml-diag-statiques
 
generation_code.pdf
generation_code.pdfgeneration_code.pdf
generation_code.pdf
 
1167844.ppt
1167844.ppt1167844.ppt
1167844.ppt
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Pont entre cet c++
Pont entre cet c++Pont entre cet c++
Pont entre cet c++
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Caml intro
Caml introCaml intro
Caml intro
 
Part1
Part1Part1
Part1
 
05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx
 

Plus de angeeLee

Plus de angeeLee (9)

ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
UML
UMLUML
UML
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 

UML

  • 1. Polytech Paris-Sud Formation initiale 3e année Spécialité Informatique UML Diagrammes de classes Delphine Longuet delphine.longuet@lri.fr
  • 2. Processus de développement logiciel Analyse des besoins Tests d'acceptation Spécification Tests système Conception architecturale Conception détaillée Tests d'intégration Tests unitaires Développement D. Longuet - UML 2
  • 3. Objets et classes Conception orientée objet : Représentation du système comme un ensemble d'objets interagissant Diagramme de classes ● Représentation de la structure interne du logiciel ● Utilisé surtout en conception mais peut être utilisé en analyse Diagramme d'objets ● Représentation de l'état du logiciel (objets + relations) ● Diagramme évoluant avec l'exécution du logiciel - création et suppression d'objets - modification de l'état des objets (valeurs des atributs) - modification des relations entre objets D. Longuet - UML 3
  • 4. Objets et classes Objet ● ● Entité concrète ou abstraite du domaine d'application Décrit par état (attributs) + comportement (opérations) nom de l'objet attributs opérations D. Longuet - UML MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float état (valeur des attributs) 4
  • 5. Objets et classes Classe : Regroupement d'objets de même nature (mêmes attributs + mêmes opérations) Objet = instance d'une classe nom de la classe MonCompteJoint : Compte MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float numéro = 854126 devise = EUR solde = 2215,03 déposer(montant : float) retirer(montant : float) solde() : float MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 déposer(montant : float) retirer(montant : float) solde() : float D. Longuet - UML Compte instances de attributs numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float opérations 5
  • 6. Classes Attributs ● Propriété partagée par tous les objets de la classe ● Associe à chaque objet une valeur ● Type associé simple (int, bool...), primitif (Date) ou énuméré Opérations ● Service qui peut être demandé à tout objet de la classe Ne pas confondre avec une méthode = implantation de l'opération Compte D. Longuet - UML numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 6
  • 7. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 D. Longuet - UML possède MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 7
  • 8. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets MarieDupont : Personne nom = "Dupont" prénom = "Marie" adresse = "Montrouge" naissance = 4/12/1992 possède possède JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 sesComptes possède possède MonCompteJoint : Compte numéro = 854126 devise = EUR solde = 2215,03 MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 D. Longuet - UML 8
  • 9. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets MarieDupont : Personne nom = "Dupont" prénom = "Marie" adresse = "Montrouge" naissance = 4/12/1992 possède possède JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 possède possède sesPropriétaires MonCompteJoint : Compte numéro = 854126 devise = EUR solde = 2215,03 MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 D. Longuet - UML 9
  • 10. Relations entre classes Association entre classes : Relation binaire (en général) Rôle : Nomme l'extrémité d'une association, permet d'accéder aux objets liés par l'association à un objet donné Cardinalité : Contraint le nombre d'objets liés par l'association nom : string prénom : string adresse : string naissance : Date ouvrirCompte(init : float) D. Longuet - UML Compte rôle Personne sesComptes sesPropriétaires 1..2 cardinalité possède nom de l'association (optionnel) * numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 10
  • 11. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Exemple de diagramme en conception Compte Personne nom : string prénom : string adresse : string naissance : Date ouvrirCompte(init : float) D. Longuet - UML sesPropriétaires 1..2 sesComptes * numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 11
  • 12. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Exemple de diagramme en conception détaillée Personne nom : string prénom : string attributs correspondants adresse : string aux deux rôles de l'association naissance : Date sesComptes : Collection(Compte) ouvrirCompte(init : float) D. Longuet - UML Compte numéro : int devise : Devise solde : float sesPropriétaires : Personne[2] déposer(montant : float) retirer(montant : float) solde() : float 12
  • 13. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Par conséquent, pas de référence à un objet dans un attribut s'il existe une association vers cet objet Compte Personne nom : string prénom : string adresse : string naissance : Date sesComptes : List(Compte) ouvrirCompte(init : float) D. Longuet - UML sesPropriétaires 1..2 sesComptes * numéro : int devise : Devise solde : float sesPropriétaires : Personne[2] déposer(montant : float) retirer(montant : float) solde() : float 13
  • 14. Cardinalités Nombre de B associés à un A A A n n,m,p B Exactement n B Exactement n ou m ou p A n..m B Entre n et m A n..* B Au moins n A * B Plusieurs (0 ou plus) D. Longuet - UML 14
  • 15. Association réflexive Diagramme de classes Personne nom : string prénom : string naissance : Date parents 2 * enfants association réflexive (d'une classe vers elle-même) Exemple de diagramme d'objets JeanDupont : Personne AnneBérou : Personne nom = "Bérou" prénom = "Anne" naissance = 14/12/1965 MichelDupont : Personne nom = "Dupont" prénom = "Michel" naissance = 2/09/1959 D. Longuet - UML MarieDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 nom = "Dupont" prénom = "Marie" naissance = 4/12/1992 PierreDupont : Personne nom = "Dupont" prénom = "Pierre" naissance = 30/05/1992 LucieDupont : Personne nom = "Dupont" prénom = "Lucie" naissance = 10/02/1996 VictorDupont : Personne nom = "Dupont" prénom = Victor naissance = 12/07/2012 15
  • 16. Association multiple plusieurs associations entre deux classes Diagramme de classes Personne nom : string prénom : string naissance : Date propose 1 loue * Appartement * adresse : string pièces : int * loyer : float Exemple de diagramme d'objets JeanDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 loue propose AlainDupuis : Personne nom = "Dupuis" prénom = "Alain" naissance = 15/01/1983 D. Longuet - UML BLR145 : Appartement adresse = "145 av gal Leclerc, Bourg-la-Reine" pièces = 2 loyer = 900 Cach23 : Appartement loue adresse = "23 rue Dumotel, Cachan" pièces = 3 loyer = 1200 16
  • 17. Navigabilité Orientation d'une association ● Restreint l'accessibilité des objets ● Depuis un A, on a accès aux objets de B qui lui sont associés, mais pas l'inverse A rôle rôle B Exemple (listes chaînées) Liste tête 1 0..1 Nœud contenu : int 1 0..1 suivant Par défaut, associations navigables dans les deux sens (pas de flèche) D. Longuet - UML 17
  • 18. Classe-association Permet de paramétrer une association entre deux classes par une classe Personne nom : string prénom : string naissance : Date 1..* * Entreprise nom : string Emploi intitulé : string début : Date fin : Date classe-association Équivalence en termes de classes et d'associations Personne nom : string prénom : string naissance : Date D. Longuet - UML Emploi 1 * intitulé : string début : Date fin : Date 1..* 1 Entreprise nom : string 18
  • 19. Classe-association Exemple de diagramme d'objets Développeur : Emploi MarieDupont : Personne nom = "Dupont" prénom = "Marie" naissance = 4/12/1992 intitulé = "Développeur web" début = ... fin = ... SecrétaireRH : Emploi JeanDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 AlainDupuis : Personne nom = "Dupuis" prénom = "Alain" naissance = 15/01/1983 D. Longuet - UML intitulé = "Secrétaire RH" début = ... fin = ... RespClientEssilor : Emploi intitulé = "Responsable clients" début = ... fin = ... Essilor : Entreprise nom = "Essilor" ville = "Créteil" Fnac : Entreprise nom = "Fnac" ville = "Bordeaux" RespClientFnac : Emploi intitulé = "Responsable clients" début = ... fin = ... 19
  • 20. Association n-aire Association reliant plus de deux classes Étudiant Enseignant 1 1..* 1 association ternaire Cours Utiliser de préférence des classes-associations D. Longuet - UML 20
  • 21. Agrégation Association particulière entre classes ● Dissymétrique : une classe prédominante sur l'autre ● Relation de type composant-composite Deux types d'agrégation ● Agrégation faible ● Composition Pièce 1..* 3..* agrégation faible D. Longuet - UML Mur * 1 Brique composition 21
  • 22. Agrégation faible Agrégation par référence ● Le composite fait référence à ses composants ● La création ou destruction du composite est indépendante de la création ou destruction de ses composants ● Un objet peut faire partie de plusieurs composites à la fois Exemple ● Une pièce est composée de murs ● Un mur peut être commun à plusieurs pièces Pièce 1..* 3..* Mur agrégation faible D. Longuet - UML 22
  • 23. Composition Agrégation par valeur ● Le composite contient ses composants ● La création ou destruction du composite entraîne la création ou destruction de ses composants ● Un objet ne fait partie que d'un composite à la fois Exemple ● Un mur est composé de briques ● Une brique n'appartient qu'à un mur Mur * 1 Brique composition D. Longuet - UML 23
  • 24. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Spécialisation : raffinement d'une classe en une sous-classe Généralisation : abstraction d'un ensemble de classes en super-classe CompteÉpargne CompteCourant numéro : int devise : Devise solde : float découvertAutorisé : float fraisDécouvert : float D. Longuet - UML déposer(montant : float) retirer(montant : float) solde() : float numéro : int devise : Devise solde : float plafond : float taux : float déposer (montant : float) retirer(montant : float) solde() : float calculerIntérêts() : float 24
  • 25. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Spécialisation : raffinement d'une classe en une sous-classe Généralisation : abstraction d'un ensemble de classes en super-classe Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float spécialisation découvertAutorisé : float fraisDécouvert : float généralisation CompteÉpargne CompteCourant D. Longuet - UML super-classe sous-classes plafond : float taux : float calculerIntérêts() : float 25
  • 26. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Héritage : Construction d'une classe à partir d'une classe plus haute dans la hiérarchie (partage des attributs, opérations, contraintes...) Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float classes héritant de la classe Compte CompteCourant découvertAutorisé : float fraisDécouvert : float D. Longuet - UML CompteÉpargne plafond : float taux : float calculerIntérêts() : float 26
  • 27. Classe abstraite Classe sans instance car certaines opérations non définies ● Opération non définie en italique ● Nom de la classe en italique (ou stéréotype « abstract ») Exemple : On ne peut pas calculer la surface d'une forme sans savoir de quelle forme il s'agit opération non définie (abstraite) D. Longuet - UML Forme nom : string surface() : float 27
  • 28. Polymorphisme Contexte : Définition d'une opération abstraite dans les classes héritant d'une classe abstraite Opération polymorphe : Opération définie dans différentes sous-classes mais opération spécifique à la sous-classe Forme nom : string surface() : float Rectangle longueur : float largeur : float opération polymorphe Cercle rayon : float surface() : float surface() : float D. Longuet - UML 28
  • 29. Interface Liste d'opérations constituant un contrat à respecter par les classes réalisant l'interface ● Pas une classe, ne peut pas servir à créer des objets ● Toutes les opérations sont abstraites Point abscisse : float ordonnée : float « interface » Comparable égal(Object o) : boolean supérieur(Object o) : boolean égal(Object o) : boolean supérieur(Object o) : boolean classes réalisant l'interface D. Longuet - UML Date jour : int mois : int année : int égal(Object o) : boolean supérieur(Object o) : boolean diff(Date d) : int String content : string égal(Object o) : boolean supérieur(Object o) : boolean print() 29
  • 30. Notations avancées Vecteur - début : Point - longueur : float = 0.0 - angle : float = 0.0 + / fin : Point + contient(in p : Point) : boolean + déplace(inout p : Point) Attributs [visibilité] [dérivé] nomAttribut [: type] [= valeur par défaut] Opérations [visibilité] nomOpération [(liste Paramètres)] [: typeRetour] Paramètre [direction] nom : type [= valeur par défaut] Direction in | out | inout (par défaut : in) D. Longuet - UML 30
  • 31. Notations avancées attributs privés attribut dérivé Vecteur - début : Point - longueur : float = 0.0 - angle : float = 0.0 + / fin : Point + contient(in p : Point) : boolean + déplace(inout p : Point) opérations publiques Visibilité + : public, accessible à toutes les classes # : protégé, accessible uniquement aux sous-classes - : privé, inaccessible à tout objet hors de la classe Pas de visibilité par défaut Attribut dérivé : Peut être calculé à tout moment à partir des autres attributs D. Longuet - UML 31
  • 32. Notations avancées Attributs et opérations de classes ● Attribut de classe : valeur commune à toutes les instances ● Opération de classe : opération sur la classe elle-même (création de nouvelles instances par exemple) ● Soulignés dans la classe Article - référence : int - prixHT : float - nbInstances : int + calculerPrixTTC(taxe : float) : float + créer() + compterInstances() : int D. Longuet - UML 32
  • 33. Contraintes Propriétés : ● Portant sur les éléments du modèle ● Doivent être vérifiées à tout instant ● En général, restriction sur les diagrammes d'objets possibles à partir du diagramme de classes Annotations dans le diagramme de classes ● Sous forme textuelle, entre accolades ● En OCL (Object Constraint Language) D. Longuet - UML 33
  • 34. Contraintes {age = diff(naissance,today)} Personne nom : string naissance : Date / age : int {age ≥ 0} 1 * appartient {subset} 1 administre ● * {ordered} ExpériencesPro entreprise : string entrée : Date sortie : Date ● ● ● D. Longuet - UML * * Groupe thème : string création : Date L'âge est toujours positif L'âge est calculé comme la différence entre la date de naissance et la date d'aujourd'hui L'administrateur d'un groupe en est membre On a accès aux expériences professionnelles dans l'ordre 34
  • 35. Contraintes en OCL Banque nom : string 1..* 1 banque banques 1..* clients Client nom : string naissance : Date 1..* comptes Compte 1 propriétaire comptes numéro : int devise : Devise 1..* solde : float dest 1 1 orig Virement montant : float 0..* date : Date 0..* Tout propriétaire d’un compte est client de la banque hébergeant ce compte. context c : Compte inv : c.banque.clients -> include(c.propriétaire) Tout client d’une banque y possède au moins un compte. context b : Banque inv : b.clients -> forAll(cl | cl.comptes -> select(c | c.banque = b) -> size() >= 1) Les virements ne sont autorisés qu'entre des comptes partageant la même devise. context v : Virement inv : v.orig.devise = v.dest.devise D. Longuet - UML 35