Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

46
Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima

Transcript of Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

Page 1: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

Static modeling, Thu 21.6.2001

G. Falquet, L. Nerima

Page 2: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 2

ISI

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

Page 3: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 3

ISI

Outline

Objects and classes Class diagrams Relationships Class hierarchies and inheritance Class modeling exercise

Page 4: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 4

ISI

variables

méthodes

Largeur=5Largeur=5Hauteur=8surface

périmètreagrandir

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)

Page 5: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 5

ISI

Largeur=5Largeur=5Hauteur=8

surface

messages

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 artisan1 industrie … 1 Classe

Page 6: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 6

ISI

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

 

Largeur=5Largeur=Hauteur=surface

périmètreagrandir

NEW

Page 7: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 7

ISI

Instanciation d’un objet

Instanciation d'objet à partir de la classe 

new Rectangle(5,8)new Rectangle(4,4)

Largeur=5Largeur=5Hauteur=8surface

périmètreagrandir

Largeur=5Largeur=4Hauteur=4surface

périmètreagrandir

Un objet est une instance d'une classe

Page 8: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 8

ISI

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

Page 9: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 9

ISI

 

public privé

Contrôle de la visbilité

Page 10: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 10

ISI

Nom de classe

Nom de classe

attribut

opération( )

Rectangle

largeurhauteur

surface( )périmètre( )agrandir( )diagonal( )

Triangles

Diagramme de classe UML

Notation UML Exemples

Page 11: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 11

ISI

Nom Objet

: Classe

Nom Objet : Classer1 : Rectangle

: Rectangle

r2

largeur=5hauteur=8

Diagramme d’objets

Notation UML: Exemples:

Le rectangle r1

un rectangle en général

un objet avec ses attributs

Page 12: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 12

ISI

:Cours

B00210h-12h

:rétroprojecteur

:Table

:Etudiant

:Chaise

:Guidon

:Vélo :Roue

Des liens entre les objets

Les objets ont des liens entre eux

Mais les classes ont des associations entre elles

Page 13: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 13

ISI

KlasseClasse Nom Association

Etudiant Courssuit un

Etudiant Cours

Est suivi par

Associations

Indépendance des classes

  Association est un couplage faible entre classes

Nommer l'association

Page 14: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 14

ISI

Etudiant Cours

<Est suivi par

suit un>

Entreprise Employeur

Employement

Employé

Personne

Associations

orienter le nom < >

Les roles

Le role que joue une classe dans une association

Page 15: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 15

ISI

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

Page 16: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 16

ISI

BAmin..max

r

BA1

r

BA0..1

r

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

Page 17: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 17

ISI

BA*

r

BA0..*

r

BA1..*

r

0..*Cours

6..30

Etudiant0..*

6..30

suit un

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

Page 18: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 18

ISI

     

Personnalité

0..n

Etre humain

1

possède

Religion

0..n

Croyants

1

Est de

Mère

1..n

Enfant

1

Né de

Canton

1..n

Ville

1

Rattachée à

1 et 1 seul

Des exemples

Page 19: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 19

ISI

     

 

Personne

0..n

Immeuble

0..1

Concierge de

Permis de conduire

1

Personne

0..1

possède

Homme

0..1

Femme

0..1

Marié à

Personne

0..1

0..1

marié a

conjoint

conjointe

0..1

0..1

Pays

0..1

Ville

1

Capitale de

au plus 1

Des exemples

Page 20: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 20

ISI

Auteurs

0..*

Livres

1..*

Ecrit par

Nationalité

0..n

Personne

0..n

possède

Personne

Ami de

0..*

0..*

Pays

1

Monuments

0..n

Situé dans

à plusieurs …

Des exemples

Page 21: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 21

ISI

Personne Villenaitre a

Personne Ville

Zodiaque

naitre a

Association binaire, ternaire, …

Arité de l'association (combien de classes)

binaire

ternaire

Page 22: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 22

ISI

P e rs o n n e V ille

Z o d ia q u e

Z o d ia q u eC h in o is

s ig n e a s c e n d a n t

Association … encore plus ?

Page 23: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 23

ISI

association attribuée

Classe anonymepermet de mémoriser des informations dans le lien

Personne Ville

depuisjusqua

travailler à

auteur livre

éditeurparution

Ecrit par

Page 24: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 24

ISI

parfois la classe doit perdre son anonymat (pour etre associées à d'autres classes)

Classe - association

auteur livre

édition

parution

éditeur

auteur livre

éditeurparution

editeurr

ou bien des association ternaire …

Page 25: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 25

ISI

Auteur

nomprénom

Livre

titrelangue originale

Publication

ISBNdate_parution

1..*1..* 1..11..*

Editeur

raison_sociale

1..*

1..*

1..*1..* 1..11..*

1..*

1..*

taux_participation

ou encore une classe (permet la co-édition!)

Classe - association

Page 26: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 26

ISI

  

*

Tirage LOTO

6

Boules

* 6

suit un

{ordonné}

Employé Vol

pilote

copilote

{ou exclusif}

Personne Papier

auteur

conférencier

{sous ensemble}

Contraintes

Ordonner les liens

ou-exclusif

sous-ensemble de

Page 27: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 27

ISI

Pers. physique

Contribuable

Pers. morale

{ou}

Contraintes

L'association ne se parcourt que dans un sensLe sens de navigation est indiqué par une flèche

Espion Personne

alternative

Page 28: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 28

ISI

BA

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

Page 29: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 29

ISI

IngrédientRecette

0..* 1..*0..* 1..*

PointPolygone

3..n1

Type_placementPortefeuille

0..* 1..*0..* 1..*

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

Page 30: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 30

ISI

ComposantComposé

0..1 *0..1 *

B

1..1

*

C

A

1..1

*

1..1

*

1..1

*

Composition

Page 31: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 31

ISI

A

b : Bc : C

:A

: B

: C

Attribut de type classe

attributs avec des types Classe !

Les objets :B et :C dans un objet :A

Page 32: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 32

ISI

Curseur Paneau

Fenetre

21

iconeLibellé

Entete

12

1 1

fond comportement

bouton

Autres exemples de composition

Page 33: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 33

ISI

Général

Particulier 1 Particulier 2

est un

La généralisation

Objectifs: partager

       Attributs (statique)

       Comportement (dynamique)

On parle aussi de relation d'héritage

Page 34: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 34

ISI

A

B

A est un B (etre)

B

A

A a des B (avoir)

Différence entre agrégation et composition ?

Page 35: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 35

ISI

Boisson

Bière VinJus de fruit

plategazeuse

Eau minérale

Exemple de généralisation

L'eau gazeuse est une eau

L'eau est une boisson

Page 36: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 36

ISI

Eau minérale

Quantité (mg/l)

Sels Minéraux

L'eau contient du NaCl

Généralisation - agrégation

Page 37: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 37

ISI

Etre vivant

Plante

InvertébréVertébré

Animal

Mammifère Reptile

Autre exemple de généralisation

L'héritage a une propriété classifiante

Page 38: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 38

ISI

La classification cela n'est pas simple !

Surface Plane

Ellipse

TriangleRectangle

Polygone

Carré

Cercle

Autre exemple de généralisation

Page 39: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 39

ISI

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)

Chat

Siamois Gouttière

: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

Page 40: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 40

ISI

Exemple: La trajectoire des satellites peut se calculer comme celle d'une planète. Cependant la lune n'est pas une planète.

Planète

trajectoire_calcul( )

Satellite

Factoriser le code (sans classification)

Page 41: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 41

ISI

On n'hérite son comportement depuis plusieurs classes ne partageant pas la meme arborescence 

Corps Céleste

trajectoire_calcul( )

Satellite

Sphère

volume( )

Planète Comète

Héritage Multiple

Page 42: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 42

ISI

Fruit

Peche Prune

Brugnon-Nectarine

Héritage Multiple

Page 43: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 43

ISI

Véhicule

Marin TerrestreAérien

MoteurMoteur MoteurSansSans Sans

Covariance

Intégrer plusieurs critères indépendants dans une meme arborescence ?

Exemple : Critères du milieu ou …

Page 44: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 44

ISI

Moteur

Véhicule

Marin TerrestreAérien

Sans

Marin TerrestreAérien

… ou de propulsion

Covariance (suite)

Page 45: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 45

ISI

Véhicule

Marin TerrestreAérien Moteur Sans

Hors bord Vélo

Covariance et Héritage Multiple

Page 46: Static modeling, Thu 21.6.2001 G. Falquet, L. Nerima.

June 2001 - G. Falquet, L. Nerima Classes 46

ISI

Break … and exercise time !