Modélisation avec UML

  • View
    591

  • Download
    0

Embed Size (px)

Transcript

  • PO3T Programmation oriente objet

    Sance 5

    Modlisationavec UML

    Sbastien Combfis, Quentin Lurkin lundi 26 octobre 2015

  • Ce(tte) uvre est mise disposition selon les termes de la Licence Creative CommonsAttribution Pas dUtilisation Commerciale Pas de Modification 4.0 International.

  • Rappels

    Hritage et polymorphisme des objets

    Rfrence polymorphique et conversion

    Rsolution des appels de mthodes (statique et dynamique)

    Classe abstraite et interface

    Factorisation de code similaire entre classes

    Contrat respecter pour limplmentation

    3

  • Objectifs

    Comprendre et utiliser la modlisation dun logiciel

    Structure et architecture de lapplication oriente objet

    Description de laspect dynamique et de lexcution

    Dcouvrir le langage UML

    Diagramme de classe

    Diagramme dactivit

    4

  • Modlisation

  • Object Modelling Technique (OMT)

    Notation dvelopp en 1991 par Rumbaugh

    Dvelopp pour supporter la programmation oriente objet

    Quatre buts pour lutilisation en dveloppement logiciel

    Tester des entits physique avant construction (simulation)

    Communiquer avec le client

    Visualisation (prsentation alternative de linformation)

    Rduction de la complexit

    Prdcesseur du langage UML

    6

  • Trois modles dOMT

    Modle objet pour les lments statiques

    Classes et associations, avec les attributs et les oprations

    Modle dynamique pour une vue tat/transition

    tats, transitions et vnements pour dclencher les transitions

    Modle fonctionnel gre laspect processus

    Processus, stockage et flux de donnes et acteurs

    7

  • Unified Modelling Language (UML)

    Language de modlisation utilis en ingnierie logicielle

    Notation unifie pour visualiser le design dun systme

    Standard de lObject Management Group (OMG) en 1997

    galement adopt comme un standard ISO en 2005

    Trs utilis pour le design de programme en oriente objet

    Mais pourrait tre utilis pour le design de base de donnes

    8

  • Modlisation

    Permet de visualiser le plan architectural dun systme

    laide dun ensemble de diagrammes

    Distinction entre le modle du systme et les diagrammes

    Diagramme = reprsentation graphique partielle dun systme

    Deux vues dun systme

    Statique dcrit la structure du systme

    Dynamique dcrit le comportement dynamique du systme

    9

  • Diagrammes prdfinis en UML 2

    Quatorze diagrammes prdfinis diviss en deux catgories

    Structurel Classe (Class diagram)Objet (Object diagram)Composant (Component diagram)Dploiement (Deployment diagram)Package (Package diagram)Structure composite (Composite structure diagram)Profil (Profile diagram)

    Comportemental Cas dutilisation (Use case diagram)tats-transitions (State machine diagram)Activit (Activity diagram)

    Interaction Squence (Sequence diagram)Communication (Communication diagram)Aperu de linteraction (Interaction overview diagram)Temps (Timing diagram)

    10

  • Diagramme structurel

  • Diagramme de classe

    Capturer les relations statiques dans le programme

    Comment les lments du programme sont mis ensemble

    Plusieurs types de relation

    Stockage de rfrences vers dautres classes

    Appartenance de classes

    ...

    Capture de la structure physique dun systme

    12

  • Reprsenter une classe (1)

    Classe modlise par un diagramme de classe

    Dfinition compose de trois compartiments

    Nom pour identifier la classe

    Attributs avec visibilit et valeur par dfaut (optionnel)

    Oprations avec visibilit

    Employee{author = Combfis}

    +office : String#salary : Float = 1000name : String

    +getName() : String+promote() : void

    13

  • Reprsenter une classe (2)

    Possibilit dajouter des valeurs taggues

    Rattaches un lment qui dfinit leur porte

    Quatre niveau de visibilit

    + pour public

    pour private

    # pour protected

    ~ pour package

    Employee{author = Combfis}

    +office : String#salary : Float = 1000name : String

    +getName() : String+promote() : void

    14

  • Attribut

    Un attribut est un type primitif simple ou un objet

    Peut tre une relation vers dautres objets complexes

    Deux formes possibles pour un attribut

    Attribut dclar directement dans la classe

    Relation entre classes

    Proprits de multiplicit, dunicit et dordre

    Dfinissable pour les deux formes dattribut

    visibilit nom : type [multiplicit] = dfaut {proprits}

    15

  • Visibilit

    Quatre niveaux de visibilit

    Visibilit publique (public) rend llment visible de partout

    Visibilit prive (private) restreint la visibilit la classe

    Visibilit protge (protected) utilise avec lhritage

    Publique pour les sous-classes et prive ailleurs

    Visibilit package rend llment visible dans le package

    Applicable pour les attributs et les pour les oprations

    16

  • Multiplicit

    La multiplicit dfinit le nombre dinstances de lattribut

    Pour chaque instance de la classe principale cre

    Simple entier, un liste dentier, un intervalle dentiers

    Multiplicit par dfaut est de 1, valeur non borne avec *

    Flightname : Stringpassengers : Person[0..400]operator : Airlinepartners : Airline[*]pilots : Person[2]

    17

  • Proprit des attributs

    Imposer un stockage squentiel des lments avec {ordered}

    Pour les attributs multiples uniquement, non ordonn par dfaut

    Autoriser les doublons avec {notunique}

    Pour les attributs multiples uniquement, {unique} par dfaut

    Figer la valeur dun attribut avec {readOnly}

    La valeur de lattribut ne peut tre change une fois initialise

    18

  • Contrainte des attributs

    Ajout de restriction sur les lments avec des contraintes

    Expression boolenne derrire llment ou comme note

    On peut ajouter une tiquette la contrainte

    Quon place devant lexpression boolenne, suivie de :

    Carlength : Float {length > 0}seating : Intcolor : Color

    iscar : 0 < seating

  • Attribut driv

    Attribut driv ne doit pas tre dans limplmentation

    Il peut tre calcul partir dautres

    Peut nanmoins tre prsent pour raison defficacit

    Signal en prfixant le nom avec un slash ( / )

    Pairx : Floaty : Float/ordered : Boolean

    +getX() : Float+getY() : Float+isOrdered() : Boolean

    ordered == trueif x

  • Relation

    Reprsentation dun attribut par une relation

    Illustre comment lattribut est en lien avec la classe

    Une classe qui contient lattribut et une qui le reprsente

    Lien entre les classes, avec le nom de lattribut

    Mmes informations que pour attribut dclar dans la classe

    Mais places diffrents endroits

    Schoolname : String+getName() : String

    1director

    Personfirstname : Stringlastname : Stringbirthdate : Date

    +getName() : String+getBirthdate() : Date

    21

  • Opration

    Une opration permet dinvoquer un comportement

    Le comportement agit sur une instance de la classe

    UML fait la distinction entre opration et mthode

    Opration spcifie comment invoquer un comportement

    Mthode implmente lopration

    visibilit nom (paramtres) : type {proprits}

    22

  • Paramtre

    Un paramtre dune opration se dfinit comme un attribut

    Nom, type, multiplicit, valeur par dfaut et proprits

    La direction dcrit comment un paramtre est utilis

    in : pass lopration

    inout : pass par lappelant, modifiable par lopration

    out : modifi par lopration

    return : pass par lappelant, renvoy par lopration

    direction nom : type [multiplicit] = dfaut {proprits}

    23

  • Contrainte des oprations (1)

    Association de contraintes sur les oprations

    Contrat que limplmentation de lopration doit respecter

    Dfinition des contraintes comme pour les attributs

    Quelques contraintes spciales (tiquettes prdfinies)

    Precondition doivent tre satisfaite avant lappel

    Postcondition seront satisfaites aprs lappel

    bodyCondition contraint la valeur de retour

    24

  • Contrainte des oprations (2)

    Shapeposition : Coordcolor : Color

    +nbSides() : Int+draw(c : Canvas) : void

    Square+nbSides() : Int+draw(c : Canvas) : void

    bodyCondition :Int > 0

    bodyCondition :Int == 4

    Precondition :c.contains(position)

    Postcondition : theshape has been drawnin the specified canvas

    25

  • Effet de bord

    Indiquer que lobjet nest pas modifi avec {query}

    Limplmentation ne peut pas modifier ltat de lobjet

    Lappel de lopration ne provoque aucun effet de bord

    Personfirstname : Stringlastname : String

    +getName() : String {query}

    26

  • Classe abstraite

    Classe abstraite contient des oprations sans implmentation

    Peut ne contenir aucune opration

    Impossible de crer une instance dune classe abstraite

    tendue par des classes concrtes

    Nom de la classe crit en italique dans le diagramme UML

    Animal+isMammal() : Bool+yell() : void

    27

  • Relation de dpendance

    Dpendance lorsquune classe utilise une autre (relation uses)

    La relation entre les classes nest pas durable

    Quelques exemples

    Une opration reoit un paramtre de type dune autre classe

    Le type de retour dune opration est dune autre classe

    ...

    Math ArithmeticException

    28

  • Relation dassociation

    Association lorsquune classe retient une autre (relation has-a)

    La relation entre les classes est durable

    Le