UML – UnifiedModelingLanguage2/4 : diagrammes statiques	Yannick PriéDépartement Informatique – Faculté des Sciences et TechnologiesUniversité Claude Bernard Lyon 12011-2012
Objectifs de ce coursApprendre la syntaxe et la sémantique des diagrammes statiques les plus importantsAméliorer au passage la compréhension de différents principes objets2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
PlanDiagrammes de classesDiagrammes d’objetsDiagrammes de paquetagesDiagrammes de composantsDiagrammes de déploiement2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Diagrammes de classes : présentation généraleDiagrammes fondamentaux les plus connus, les plus utilisésPrésentent la vue statique du système représentation de la structure et des déclarations comportementalesclasses, relations, contraintes, commentaires…Permettent de modéliser plusieurs niveauxconceptuel (domaine, analyse)implémentation (code)2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
ClassesDescripteurs de jeuxd’objets
structure / comportement / relations / sémantiquecommuns
Représentation
rectangle à trois compartiments
nom
attributs
opérations
plus ou moins de détails suivant les besoins
Nom : singulier, majuscule (en général)
ex. : Fichier, Client, Compte, ChatNomDeClasseattribut 1attribut 2opération 1opération 2AutreClasse2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Relations entre classes/ liens entre objetsAssociationles instances des classes sont liéespossibilité de communication entre objetsrelation forte : compositionGénéralisation/spécialisationles instances de la sous-classe sont des instances de la super-classe (niveau conceptuel) héritage (niveau implémentation)Dépendancela modification d’une classe peut avoir des conséquences sur une autre Réalisationune classe réalise une interface 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Un exempleElément de réseau2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Utilisation des diagrammes de classesExpression des besoins	modélisation du domaineConceptionspécification : gros grainConstructionimplémentation : précisrétro-ingénierieLes diagrammes de classes permettent de représenter toute modélisation en classes, que ce soit des classes implémentées en machine ou nonOn peut modéliser n’importe quel domaine avec des classes2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Petit exerciceDessiner un diagramme de classe du domaine avec les classes suivantesétudiantenseignantcourssalle de classe2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
AttributsVisibilité nom : type [multiplicité ] = valeur_initiale {propriétés}Facultatif public +privé -protégé #paquetage~Facultatifex. couleurs : Saturation [3]points : Points [2..*]Facultatifmais impératif pourl’implémentationFacultatifex. {frozen} mise à jour interdite{obligatoire} valuation oblig.Remarques
/nom : attribut dérivé (calculé)
souligné : attribut statique (de classe)
{frozen} : disparu de UML2 ; à utiliser quand-même2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Attributs : exempleVecteur- x : réel- y : réel+ /longueur- couleur [3] : réel-créateur = "yp" {frozen}Télévision on/off : Bouton
 couleur : enum {gris, noir}
 marque : chaine
 télétexte : booléen = vrai
 chaines [5…*] : canal {ordered}
 enceintes[2..6] : haut-parleur
 type : typeTV {frozen}
 volume : parallépipède = (600,650,500)valeur_x() : réel  valeur_y() : réellongueur() : réel2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Opérations de classesvisibilité nom (liste de paramètres) : type-retour {propriétés}argument ::= direction nom : type = valeur-défautpublic +privé -protégé #paquetage~asbtractquery…in | out | inoutRemarquesnotation : opération abstraite / opération statiqueopérations = comportement d’une classe, trouvées en examinant les diagrammes d’interactionméthode = implémentation d’une opération dont elle spécifie l’algorithme ou la procédure associée pré et post-conditions, description du contenu : commentaires + OCL2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Opérations : exemple« visuel »Fenêtre« precondition » p1 != p2…« constructor »+Fenêtre(p1:Point, p2:Point)…+surface() : Réel  {query}…« update »#couleur(in newcolor : color = ‘J’)…« method »  public int surface(){ return …}Renvoie| x2 –x1 | * | y2 – y1 | 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
« Visuel »Fenêtre{ abstract,auteur = yp,statut = testé }+forme : zone = [100,100]#visibilité : booléen = faux+forme_défaut : rectangle-xptr : Xwindow« Visuel »  Fenêtre+afficher()+masquer()+créer-attachXWindow(xwin : Xwindow)forme : zonevisibilité : booléenafficher()masquer()Autres exemples de classes « enumeration »CouleurrougeblancbleuContrôleur d’entrée-- gère les événements en entréeResponsabilitéss’afficherse masquer FenêtreResponsabilités de la classe2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Associationsnom association x..yx..yClasse 1Classe 2rôle 1rôle 2Nom : forme verbale, sens de lecture avec flècheRôles : forme nominale, identification extrémité associationMultiplicité : 1, 0..1, 0..*, 1..*, n..mMots-clés : set, ordered set (uniques) ; bag, list (doublons) actionnaire**1..**EntreprisePersonneemployeuremployé travaille pourServicesIndustrielleLes associations ont une durée de vie, sont indépendantes les unes des autres, sont héritées, comme les attributs2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Associations : exempleAssociation réflexive travaille pourSociéténomPersonnenom0..*1..*patron0..1employeuremployé {ordered, set}dirige *emploie employésReprésentation d’une collection2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
Associations : remarquesTout objet doitêtre accessible via un lien
ne peutrecevoir de messages sinon
liens plus oumoins permanents : voir “Visibilités”
Multiplicité
nombred’instancesd’uneclasse en relation avec une instance d’uneautreclasse
pour chaque association
deuxdécisionsàprendre : deuxextrémités
Directionnalité
bidirectionnalité par défaut, evtexplicitée
restriction de la navigation àune direction2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 =
2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 PersonneA pour titulaireCompte{XOR}EntrepriseA pour titulaireAssociations et contraintesvisible sur 1{ordered}FenêtreEcran2..*2..*situé sur association navigablePoint d’intersectionSegment0..*est de type TypeVéhiculeVéhicule{Véhicule.charge < Typevéhicule.chargeMax}chargechargeMax1..*HistoriqueÉvénement{add only, ordered}
Propriétés : caractéristiques structurelles des classes Concept unique regroupant attributs et associations monodirectionnelles : équivalence des représentations
Pour choisir
attribut (texte) pour les types de données
objets dont l’identité n’est pas importante
association pour insister sur les classes2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 Commande+dateDeRéception: Date[0..1]+estPrépayée: Booléen[1]+lignes: LIgneDeCommande[*] {ordered}(Fowler, 2004)0..1*1CommandeBooléenDate+estPrépayée+dateDeRéception1lignes{ordered}*LigneDeCommande
Agrégation et compositionAssociations asymétriques, fortes
Agrégation
non nommée, structure d’arbre sous-jacente (pas de cycle), rôle prépondérant d’une extrémité
Composition
non partage des éléments composants, création et destruction des composants avec le composite 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 ElémentAgrégat1..*0..*ElémentComposite0..*1
Composition, agrégation et associationQuelques questions à se poser
asymétrie et lien de subordination entre instances des deux classes (agrégation/composition) ouindépendance des objets (association) ?
propagation d’opérationsoud’attributs du tout vers les parties ? (agrégation/composition)
création et destruction des parties avec le tout ? (composition)
Remarquesimportantes

CM uml-diag-statiques

  • 1.
    UML – UnifiedModelingLanguage2/4: diagrammes statiques Yannick PriéDépartement Informatique – Faculté des Sciences et TechnologiesUniversité Claude Bernard Lyon 12011-2012
  • 2.
    Objectifs de cecoursApprendre la syntaxe et la sémantique des diagrammes statiques les plus importantsAméliorer au passage la compréhension de différents principes objets2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 3.
    PlanDiagrammes de classesDiagrammesd’objetsDiagrammes de paquetagesDiagrammes de composantsDiagrammes de déploiement2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 4.
    Diagrammes de classes: présentation généraleDiagrammes fondamentaux les plus connus, les plus utilisésPrésentent la vue statique du système représentation de la structure et des déclarations comportementalesclasses, relations, contraintes, commentaires…Permettent de modéliser plusieurs niveauxconceptuel (domaine, analyse)implémentation (code)2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 5.
  • 6.
    structure / comportement/ relations / sémantiquecommuns
  • 7.
  • 8.
    rectangle à troiscompartiments
  • 9.
  • 10.
  • 11.
  • 12.
    plus ou moinsde détails suivant les besoins
  • 13.
    Nom : singulier,majuscule (en général)
  • 14.
    ex. : Fichier,Client, Compte, ChatNomDeClasseattribut 1attribut 2opération 1opération 2AutreClasse2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 15.
    Relations entre classes/liens entre objetsAssociationles instances des classes sont liéespossibilité de communication entre objetsrelation forte : compositionGénéralisation/spécialisationles instances de la sous-classe sont des instances de la super-classe (niveau conceptuel) héritage (niveau implémentation)Dépendancela modification d’une classe peut avoir des conséquences sur une autre Réalisationune classe réalise une interface 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 16.
    Un exempleElément deréseau2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 17.
    Utilisation des diagrammesde classesExpression des besoins modélisation du domaineConceptionspécification : gros grainConstructionimplémentation : précisrétro-ingénierieLes diagrammes de classes permettent de représenter toute modélisation en classes, que ce soit des classes implémentées en machine ou nonOn peut modéliser n’importe quel domaine avec des classes2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 18.
    Petit exerciceDessiner undiagramme de classe du domaine avec les classes suivantesétudiantenseignantcourssalle de classe2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 19.
    AttributsVisibilité nom :type [multiplicité ] = valeur_initiale {propriétés}Facultatif public +privé -protégé #paquetage~Facultatifex. couleurs : Saturation [3]points : Points [2..*]Facultatifmais impératif pourl’implémentationFacultatifex. {frozen} mise à jour interdite{obligatoire} valuation oblig.Remarques
  • 20.
    /nom : attributdérivé (calculé)
  • 21.
    souligné : attributstatique (de classe)
  • 22.
    {frozen} : disparude UML2 ; à utiliser quand-même2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 23.
    Attributs : exempleVecteur-x : réel- y : réel+ /longueur- couleur [3] : réel-créateur = "yp" {frozen}Télévision on/off : Bouton
  • 24.
    couleur :enum {gris, noir}
  • 25.
    marque :chaine
  • 26.
    télétexte :booléen = vrai
  • 27.
    chaines [5…*]: canal {ordered}
  • 28.
    enceintes[2..6] :haut-parleur
  • 29.
    type :typeTV {frozen}
  • 30.
    volume :parallépipède = (600,650,500)valeur_x() : réel valeur_y() : réellongueur() : réel2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 31.
    Opérations de classesvisibiliténom (liste de paramètres) : type-retour {propriétés}argument ::= direction nom : type = valeur-défautpublic +privé -protégé #paquetage~asbtractquery…in | out | inoutRemarquesnotation : opération abstraite / opération statiqueopérations = comportement d’une classe, trouvées en examinant les diagrammes d’interactionméthode = implémentation d’une opération dont elle spécifie l’algorithme ou la procédure associée pré et post-conditions, description du contenu : commentaires + OCL2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 32.
    Opérations : exemple« visuel »Fenêtre« precondition »p1 != p2…« constructor »+Fenêtre(p1:Point, p2:Point)…+surface() : Réel {query}…« update »#couleur(in newcolor : color = ‘J’)…« method »  public int surface(){ return …}Renvoie| x2 –x1 | * | y2 – y1 | 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 33.
    « Visuel »Fenêtre{ abstract,auteur =yp,statut = testé }+forme : zone = [100,100]#visibilité : booléen = faux+forme_défaut : rectangle-xptr : Xwindow« Visuel »  Fenêtre+afficher()+masquer()+créer-attachXWindow(xwin : Xwindow)forme : zonevisibilité : booléenafficher()masquer()Autres exemples de classes « enumeration »CouleurrougeblancbleuContrôleur d’entrée-- gère les événements en entréeResponsabilitéss’afficherse masquer FenêtreResponsabilités de la classe2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 34.
    Associationsnom association x..yx..yClasse1Classe 2rôle 1rôle 2Nom : forme verbale, sens de lecture avec flècheRôles : forme nominale, identification extrémité associationMultiplicité : 1, 0..1, 0..*, 1..*, n..mMots-clés : set, ordered set (uniques) ; bag, list (doublons) actionnaire**1..**EntreprisePersonneemployeuremployé travaille pourServicesIndustrielleLes associations ont une durée de vie, sont indépendantes les unes des autres, sont héritées, comme les attributs2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 35.
    Associations : exempleAssociationréflexive travaille pourSociéténomPersonnenom0..*1..*patron0..1employeuremployé {ordered, set}dirige *emploie employésReprésentation d’une collection2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1
  • 36.
    Associations : remarquesToutobjet doitêtre accessible via un lien
  • 37.
    ne peutrecevoir demessages sinon
  • 38.
    liens plus oumoinspermanents : voir “Visibilités”
  • 39.
  • 40.
    nombred’instancesd’uneclasse en relationavec une instance d’uneautreclasse
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
    restriction de lanavigation àune direction2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 =
  • 46.
    2010-2011 / YannickPrié - Université Claude Bernard Lyon 1 PersonneA pour titulaireCompte{XOR}EntrepriseA pour titulaireAssociations et contraintesvisible sur 1{ordered}FenêtreEcran2..*2..*situé sur association navigablePoint d’intersectionSegment0..*est de type TypeVéhiculeVéhicule{Véhicule.charge < Typevéhicule.chargeMax}chargechargeMax1..*HistoriqueÉvénement{add only, ordered}
  • 47.
    Propriétés : caractéristiquesstructurelles des classes Concept unique regroupant attributs et associations monodirectionnelles : équivalence des représentations
  • 48.
  • 49.
    attribut (texte) pourles types de données
  • 50.
    objets dont l’identitén’est pas importante
  • 51.
    association pour insistersur les classes2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 Commande+dateDeRéception: Date[0..1]+estPrépayée: Booléen[1]+lignes: LIgneDeCommande[*] {ordered}(Fowler, 2004)0..1*1CommandeBooléenDate+estPrépayée+dateDeRéception1lignes{ordered}*LigneDeCommande
  • 52.
  • 53.
  • 54.
    non nommée, structured’arbre sous-jacente (pas de cycle), rôle prépondérant d’une extrémité
  • 55.
  • 56.
    non partage deséléments composants, création et destruction des composants avec le composite 2010-2011 / Yannick Prié - Université Claude Bernard Lyon 1 ElémentAgrégat1..*0..*ElémentComposite0..*1
  • 57.
    Composition, agrégation etassociationQuelques questions à se poser
  • 58.
    asymétrie et liende subordination entre instances des deux classes (agrégation/composition) ouindépendance des objets (association) ?
  • 59.
    propagation d’opérationsoud’attributs dutout vers les parties ? (agrégation/composition)
  • 60.
    création et destructiondes parties avec le tout ? (composition)
  • 61.