Static modeling, Thu G. Falquet, L. Nerima
ISIISI June G. Falquet, L. NerimaClasses 2 References Grady Booch, James Rumbaugh, Ivar Jacobson The Unified Modeling Language User Guide, Addison- Wesley 1999 Pierre-Alain Muller Modélisation objet avec UML, Eyrolles 1997 Grady Booch, James Rumbaugh, Ivar Jacobson The Unified Modeling Language Reference Manual, Addison-Wesley 1999
ISIISI June G. Falquet, L. NerimaClasses 3 Outline vObjects and classes vClass diagrams vRelationships vClass hierarchies and inheritance vClass modeling exercise
ISIISI June G. Falquet, L. NerimaClasses 4 C'est quoi un objet Une entité contenant: des données (état) des procédures (comportement) Exemple d'objet Le rectangle r1 Chaque objet a une identité (Oid)
ISIISI June G. Falquet, L. NerimaClasses 5 Messages et Méthodes le message déclenche l'exécution de la méthode sur l'objet r1.surface()retournera la valeur 40 r1.agrandir(5)modifie l'état de r1 -> largeur=25 et hauteur=40 Métaphore:1 objet …. 1 collection 1 objet …. N objets ….1 artisan 1 industrie … 1 Classe
ISIISI June G. Falquet, L. NerimaClasses 6 Les classes Une classe est un moule pour fabriquer des objets · De meme structure · De meme comportement · Régit par les memes règles Exemple: La classe Rectangle
ISIISI June G. Falquet, L. NerimaClasses 7 Instanciation dun objet Instanciation d'objet à partir de la classe new Rectangle(5,8) new Rectangle(4,4) Un objet est une instance d'une classe
ISIISI June G. Falquet, L. NerimaClasses 8 Pourquoi les objets ? Bonne propriété "génie logiciel" Réunir données et traitements (le comportement est défini dans la classe) Encapsulation (cacher comment sont réalisées les méthodes) (cacher les variables) Héritage (affiner le comportement d'une classe) (factoriser le code, réutilisation) Polymorphisme Liaison dynamique
ISIISI June G. Falquet, L. NerimaClasses 9 Contrôle de la visbilité
ISIISI June G. Falquet, L. NerimaClasses 10 Diagramme de classe UML Notation UML Exemples
ISIISI June G. Falquet, L. NerimaClasses 11 Diagramme dobjets Notation UML: Exemples: Le rectangle r1 un rectangle en général un objet avec ses attributs
ISIISI June G. Falquet, L. NerimaClasses 12 Des liens entre les objets Les objets ont des liens entre eux Mais les classes ont des associations entre elles
ISIISI June G. Falquet, L. NerimaClasses 13 Associations Indépendance des classes Association est un couplage faible entre classes Nommer l'association
ISIISI June G. Falquet, L. NerimaClasses 14 Associations orienter le nom Les roles Le role que joue une classe dans une association
ISIISI June G. Falquet, L. NerimaClasses 15 VillePersonne habitation Naissance Ordinateur Personne possèder allumer éteindre réparer Les roles multiples Stabilité des associations: Les liens entre les objets doivent exister en dehors de l'exécution d'une méthode. allumer, éteindre, réparer sont des méthodes
ISIISI June G. Falquet, L. NerimaClasses 16 Multiplicité des associations Tout objet de A est associé par r à min objets de B et au plus max objets de B Cas 1, 0..1 Tout objet de A est associé exactement 1 objet de B Tout objet de A est associé au plus à 1 objet de B
ISIISI June G. Falquet, L. NerimaClasses 17 Multiplicité (suite) Cas *, 0..*, 1..* Tout objet de A est associé optionnellement à plusieurs objets de B Tout objet de A est associé à plusieurs objets de B Exemple: Tout objet de A est associé à au moins 1 objet de B
ISIISI June G. Falquet, L. NerimaClasses 18 1 et 1 seul Des exemples
ISIISI June G. Falquet, L. NerimaClasses 19 au plus 1 Des exemples
ISIISI June G. Falquet, L. NerimaClasses 20 à plusieurs … Des exemples
ISIISI June G. Falquet, L. NerimaClasses 21 Association binaire, ternaire, … Arité de l'association (combien de classes) binaire ternaire
ISIISI June G. Falquet, L. NerimaClasses 22 Association … encore plus ?
ISIISI June G. Falquet, L. NerimaClasses 23 association attribuée Classe anonyme permet de mémoriser des informations dans le lien
ISIISI June G. Falquet, L. NerimaClasses 24 parfois la classe doit perdre son anonymat (pour etre associées à d'autres classes) Classe - association ou bien des association ternaire …
ISIISI June G. Falquet, L. NerimaClasses 25 ou encore une classe (permet la co-édition!) Classe - association
ISIISI June G. Falquet, L. NerimaClasses 26 Employé Vol pilote copilote {ou exclusif} Contraintes Ordonner les liens ou-exclusif sous-ensemble de
ISIISI June G. Falquet, L. NerimaClasses 27 Contraintes L'association ne se parcourt que dans un sens Le sens de navigation est indiqué par une flèche alternative
ISIISI June G. Falquet, L. NerimaClasses 28 Agrégation Association non symétrique A est formé de B A pré-existe à B B n'existe pas sans A Autres dépendances A contient B (ensembliste) Les attributs d'une classe sont dépendants de l'autres Les actions d'une classe sont dépendants de l'autres Agrégation modèlise un couplage plus fort que l'association
ISIISI June G. Falquet, L. NerimaClasses 29 Exemple d'agrégation :A … est un ensemble de …:B Si un :B n'est lié qu'à un :A alors l'agrégation est une composition
ISIISI June G. Falquet, L. NerimaClasses 30 Composition
ISIISI June G. Falquet, L. NerimaClasses 31 Attribut de type classe attributs avec des types Classe ! Les objets :B et :C dans un objet :A
ISIISI June G. Falquet, L. NerimaClasses 32 Autres exemples de composition
ISIISI June G. Falquet, L. NerimaClasses 33 La généralisation Objectifs: partager Attributs (statique) Comportement (dynamique) On parle aussi de relation d'héritage
ISIISI June G. Falquet, L. NerimaClasses 34 Différence entre agrégation et composition ?
ISIISI June G. Falquet, L. NerimaClasses 35 Exemple de généralisation L'eau gazeuse est une eau L'eau est une boisson
ISIISI June G. Falquet, L. NerimaClasses 36 L'eau contient du NaCl Généralisation - agrégation
ISIISI June G. Falquet, L. NerimaClasses 37 Autre exemple de généralisation L'héritage a une propriété classifiante
ISIISI June G. Falquet, L. NerimaClasses 38 La classification cela n'est pas simple ! Autre exemple de généralisation
ISIISI June G. Falquet, L. NerimaClasses 39 Principe de substitution de Liskow Si :A est un :B Alors il doit etre possible de substituer à un objet de la classe la plus générale (B) un objet d'une de ses sous-classes (A) sans modifier le comportement du système (un programme) :le chat miaule devient après substitution :le chat siamois miaule pas toujours respecté par les développeurs: L'héritage est utilisé pour propager du code Mécanisme de version Mécanisme de réutilisation
ISIISI June G. Falquet, L. NerimaClasses 40 Exemple: La trajectoire des satellites peut se calculer comme celle d'une planète. Cependant la lune n'est pas une planète. Factoriser le code (sans classification)
ISIISI June G. Falquet, L. NerimaClasses 41 On n'hérite son comportement depuis plusieurs classes ne partageant pas la meme arborescence Héritage Multiple
ISIISI June G. Falquet, L. NerimaClasses 42 Héritage Multiple
ISIISI June G. Falquet, L. NerimaClasses 43 Covariance Intégrer plusieurs critères indépendants dans une meme arborescence ? Exemple : Critères du milieu ou …
ISIISI June G. Falquet, L. NerimaClasses 44 Moteur Véhicule MarinTerrestreAérien Sans MarinTerrestreAérien … ou de propulsion Covariance (suite)
ISIISI June G. Falquet, L. NerimaClasses 45 Covariance et Héritage Multiple
ISIISI June G. Falquet, L. NerimaClasses 46 Break … and exercise time !