2Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Construire un bon logiciel :➢ Répondre aux objectifs fixés (satisfaire le client)➢ Avoir une base architecturale solide qui permette l’évolution➢ Mettre en place un processus de développement
� maîtriser coûts et délais
➢ Définir des modèles pour➢ Spécifier la structure et les comportements attendus du système➢ Visualiser et contrôler l’architecture pour mieux la comprendre
� simplifier, réutiliser, gérer les risques
Modélisation
3Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Construire une niche➢ Planches, un marteau, des clous, une personne, quelques heures.➢ Le client (le chien) sera probablement
➢ Construire une maison➢ Matériaux et outils plus « complexes »➢ Dessiner des plans,➢ Qualité ⇒ tenir compte des contraintes (utilisation, besoins en
éclairage, chauffage, eau, normes, …)➢ Une seule personne ?➢ Délais ? Coûts ?
De la niche à l'immeuble
4Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Construire un immeuble :➢ Prendre l’avis des investisseurs (style, forme, taille , etc.)
(y compris les modifications) ➢ Plannings temps et budget primordiaux➢ De nombreuses personnes réparties en équipes➢ Concevoir de nombreux plans et modèles➢ Le plus souvent, faire une maquette➢ Coordonner les différentes équipes, faciliter la communication entre elles➢ etc.
Pour une voiture, démarche similaire...
5Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Ecrire beaucoup de lignes de code, même très propres, ne suffit pas
➢ Nécessité de penser au préalable l’architecture logicielle du système
Construction d’un modèle indispensable
Système logiciel = Immeuble
6Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Qu’est-ce que c’est ?« Une simplification de la réalité »
➢ Pourquoi ?« Mieux comprendre le système à développer »Servir d’interface entre les acteurs du projet
➢ Doit être proche de la réalité➢ 4 objectifs :
➢ Aider à visualiser un système tel qu’il est ou doit être.➢ Préciser la structure ou le comportement d’un système.➢ Fournir un canevas pour la construction du système.➢ Permettre de documenter les décisions prises.
➢ D’autant plus nécessaire que le système est complexe
Modèle
7Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ UML : Unified Modeling Language➢ langage conçu pour l’écriture de plans d’élaboration de logiciels (pas
une méthode)➢ né de la fusion de plusieurs méthodes objet, standard de fait➢ utilisable pour visualiser, spécifier, construire et documenter
➢ un méta-modèle : ➢ Langage sans ambiguïtés➢ Peut servir de support pour tout langage objet➢ Notation graphique simple compréhensible par des non informaticiens
et facilitant la communication
Modélisation orientée objet
8Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Vues statiques ➢ diagrammes d’objets, ➢ diagrammes de classes, ➢ diagrammes des cas d’utilisation, ➢ diagrammes de déploiement.
➢ Vues dynamiques➢ diagrammes de séquences, ➢ diagrammes de collaboration, ➢ diagrammes d’états-transitions,➢ diagrammes d’activités.
Statique et Dynamique
9Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Rectangle
largeur
hauteur
draw()
moveTo()
resize()
appli::geom::Triangle
nom
attributs
méthodes
nom « complet », intégrant le paquetage
Classe documentée
Classe non documentée
Classes
10Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
UneClasse
+ attPublic
- attPrivate
- attStatic
+ methPublic()
- methPrivate()
privé
publique
statique
11Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Rectangle
- largeur : float
- hauteur : float
- estVisible : boolean = true
+ draw()
+ moveTo( newP : Position)
+ resize( scale : Float)
+ toString() : String return “rectangle ”+largeur+“,”+hauteur;
note
Classe détaillée
12Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Objet1
:Rectangle
:Rectangle
largeur = 10
hauteur = 20
estVisible = true
stylo
stylo:Crayon
relation de visibilité
Objets (instances)
13Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Identifier les classes ne suffit pas, elles coopèrent/ interagissent entre elles, il faut exprimer ces relations (le plus souvent binaires).
Relations
➢ Dépendances➢ relations d’utilisation
➢ Associations➢ relations structurelles, connexion sémantique
➢ Agrégation, composition
➢ Généralisations : interfaces➢ + relations d’héritage (relation « is a », cf. UE COO du S6)
14Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
C’est une relation structurelle qui exprime une relation sémantique entre (le plus souvent) deux classes.
Elle est le plus souvent réflexive.
On peut la compléter de 4 informations :� Nom� Rôles� Multiplicité� Agrégation
Association
15Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Personne Entrepriseemployé employeur
Travaille pour�1..* 0..1
cardinalitésdirection
nom
association
rôles
Exemple
16Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ Définissent la multiplicité des rôles
➢ Une cardinalité à une extrémité signifie qu’à l’autre extrémité ce nombre d’éléments doit exister pour tout objet de la classe.
➢ Expressions possibles :➢ n : exactement n➢ n..m : de n à m➢ * : quelconque (équivalent à « 0..n » ou « 0.. »)➢ n..* : n ou plus➢ liste de cardinalités : 1..2,3..5 = 1 à 5 sauf 4
Cardinalités
17Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Personne Entreprise
Travaille pour ►
employéemployeur
0..11..*
◄ est dirigée pardirecteur
1 0..n
Il peut exister plusieurs relations entre les mêmes classes
18Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Exprimer le fait qu’une classe en utilise une autre.Toute modification de la classe utilisée risque d'avoir un impact sur la classe
utilisatrice. Relation d'obsolescence.
Rectangle
largeur
hauteur
draw()
moveTo()
resize()
java::awt::Color
dépendance
Dépendance
19Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Rendre unidirectionnelle la relation Pour indiquer que les instances d'une classe ne "connaissent" pas les instances d'une autre.
CandidatElecteur vote pour
* 0..1
Navigabilité restreinte
20Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
quand on veut exprimer les propriétés d’une relation
Personne Entrepriseemployé employeur
Travaille pour�1..* 0..1
Emploi
salaire
dateEmbauche
fonction
classe-association
Classe-association
...
21Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Interfaces
22Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Association « tout/partie », relation de possession « has-a »
Zoo
Animal
*
1agrégationtout
partie
Agrégation : le tout est responsable de la gestion de ses parties.Relation de subordination.
Agrégation/Composition
Un animal peut appartenir à un zoo (qui peut posséder plusieurs animaux).Un objet animal peut être lié à un autre objet.
23Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Port
Bateau
0..1
*
Compagnie
1
*
appartient
la partie est éventuellement partagée
24Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Composition : agrégation forte, la partie n’est pas partagée
Zoo
Animal
1..*
0..1compositiontout
partie
Un animal peut appartenir à un zoo (qui peut posséder plusieurs animaux).Un objet animal ne peut pas être lié à un autre objet.Si on détruit l'objet zoo, on détruit aussi les instances animaux liées.
25Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
CounterGraphicInterface
Counter
#value : int#incF:IncrementFunction
+getValue() : int+increment()+initValue(value:int)
« interface »IncrementFunction
increment(value : int) : int
SimpleIncrement ModularIncrementAnotherIncrement
IncrementFunction
Javax::swing::JFrame
value = incF.increment(value);
Exemple : compteur
1 *�affiche
26Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
➢ représenter le modèle conceptuel➢ identifier les acteurs et leurs interactions avec le système
➢ permettre de structurer les besoins des utilisateurs et les objectifs du système
➢ permettre de définir le comportement attendu du système, sans en préciser la réalisation ➢ on ne s’occupe que des objectifs, pas des solutions d’implémentation➢ clarification et organisation des besoins
Cas d'utilisation (use cases)
27Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
traiter login
acteur cas d’utilisation
gestionnairede sécurité
� acteur : une personne ou un composant à l’origine d’une interaction avec le système
� cas d’utilisation : un objectif du système, un besoin d’un acteur
noms
Représentation
28Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
client
imprimer solde compte
débite
consulter solde compte
imprimer ticket
retirer argent
« include »
« include »
relation d’utilisation
Inclusion
29Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
consulter solde compte
retirer argent
mise en service
ravitailler billets
client
technicien
visualise
débite
DAB
package
retrait possible dans la limite du stock du coffre
technicien éteint DAB avant de le ravitailler
Diagramme de cas d'utilisation
30Programmation Orientée ObjetUSTL - Licence Informatique
UML : introduction
Counter CounterGraphicInterface
1 *�affiche
IncrementFunction
1
*
incremente
initialise
utilisateur
afficher valeur
visualise affiche
donnevaleur interface
Top Related