Upload
imane-mjimer
View
233
Download
0
Embed Size (px)
Citation preview
Approche objet avec UML (Unified Modeling Language)Pr. Jean-Marc JzquelIRISA - Univ. Rennes ICampus de Beaulieu F-35042 Rennes Cedex Tel : +33 299 847 192 Fax : +33 299 842 532 e-mail : [email protected] http://www.irisa.fr/prive/jezequel
J.-M. Jzquel
1
1 - IntroductionLingnierie du logiciel aujourdhui
J.-M. Jzquel
2
1
Automotive industry: Volkswagen
J.-M. Jzquel
3
Google300 000 serveurs rpartis dans une vingtaine de datacenters.
Une phnomnale capacit de calcul qui permet Google d'assurer le fonctionnement d'un grand nombre de services Google Earth
rpondre plus d'1 milliard de requtes par jour, chacune interrogeant 8 milliards de pages Web en moins d'un cinquime de seconde
J.-M. Jzquel
4
2
Nokia1,1 milliard de tlphones portables en circulation 100 millions de plus par an
Des milliers de versions de logiciels Time-to-market ~ 3 mois Evolution permanente infrastructure GSM Nokia 50% des exigences ont chang aprs le gel du cahier des charges 60% de ceux-ci ont chang au moins 2 fois!
Cest le cas gnral plutt que lexception Cahier des charges fig = rve des annes 70 J.-M. Jzquel 5
Des logiciels complexes...Logiciels de grande taille des millions de lignes de code des quipes nombreuses dure de vie importante des lignes de produits plateformes technologiques complexes volution continue
Logiciels complexes Logiciels critiques ... J.-M. Jzquel 6
3
L'industrie logicielle aujourd'huistandardization organization
assemblers architects
middleware providers
site administrators
component developers J.-M. Jzquel
component testers
application testers
tool vendors end users7
L'industrie logicielle aujourd'huistandardization organization
assemblers De nombreux acteurs architects
middleware providers
des proccupations diffrentes des mtiers diffrents des comptences varies des outils varis diffrents lments logiciels Sparation des proccupations tool vendors application component testers testers site administrators
component developers J.-M. Jzquel
end users
8
4
Sparations des proccupationsPoint de vue des
promoteursPoint de vue des
Point de vue des
locataires
pompiersPoint de vue du
Point de vue des
plombiers
cadastre
Point de vue des
Point de vue des
lectricienssystmePoint de vue des
assureurs
paysagistesPoint de vue des
notaires
Point de vue des
architectes
J.-M. Jzquel
9
Sparations des proccupationsUtile mme pour des systmes "moins" complexes
Point de vue du
propritairePoint de vue du
Point de vue du
plombier cadastre
Point de vue de l'
lectriciensystme
Point de vue de l'
Point de vue du
architecte
maon
J.-M. Jzquel
10
5
ProblmatiqueComplexit croissante des logiciels Sparations des proccupations Sparations des mtiers Multiplicit des besoins Multiplicit des plateformes volution permanente
Logiciel = Code ? J.-M. Jzquel 11
Multiples modles d'un mme systmemodles modlespour les pompiers pour les promoteurs
modles
pour les plombiers
modlespour le cadastre
modlessystme
pour les lectriciens
modles
pour l'assureur cadastre
modles modles
pour les paysagistes
modles J.-M. Jzquel
pour les notaires
pour les architectes
12
6
Objectifs du coursCe cours montre comment partir de la notation UML il est possible de dfinir un certain nombre de modles plus ou moins abstraits plus ou moins labors mais dcrivant tous une facette complmentaire du systme raliser selon un point de vue ou un mtier diffrent.
Laccent est mis sur les rgles de cohrence intra et intermodles, ainsi que sur la diffrence qui peut tre fait entre modles conceptuels, de spcification et dimplmentation modles mtiers et modles techniques modles produits et modles de processus.
J.-M. Jzquel
13
Client
1..4 titulaires
0..*
Compte numro solde ... 1
1..*
Banque numro nom
1..*carte insre
1 signataire CarteBleue Code retraitMax
0..* Consortium 1
En attentecarte retire
En attente du codemauvais code code frapp
0..*
0..1 AcceptPar> 1..* Distributeur 0..*
En attente retrait carte
En vrificationcode bon
montant incorrect
En attente du montantmontant correct
billets retirs
En distributionRetirerDeLArgent
ConsulterSonCompte Client
Ajouter DesBillets
Transporteur DeBillets
FaireUnVirement
Assurer LaMaintenance
Technicien
DistributeurDeBillet
systme
paul
le distrib.
la carte de P.
la reserve
la banque
le compte de P.
la reserve6 : sortir 5 billet de 100 fr
retirer 500 fr lire n compte
1 : retirer 500 fr
3 : retirer 500 fr sur compte n
4 : dbiter(500)
retirer 500 fr sur le compte n
le distributeur pauldbiter 500 fr
la banque5 : confirmer
confirmer sortir 5 billets de 100 fr prendre la carte
2 : lire n de compte
la carte de P.
le compte de paul
J.-M. Jzquel
14
7
SynthseDes Modles plutt que du Code Un modle est la simplification/abstraction dun aspect de la ralit Nous construisons donc des modles afin de mieux comprendre les systmes que nous dveloppons Nous modlisons des systmes complexes parce que nous somme incapables de les comprendre dans leur totalit Le code ne permet pas de simplifier/abstraire la ralit J.-M. Jzquel 15
2 - Pourquoi UML ?
J.-M. Jzquel
16
8
Origines de lapproche objetModlisation => Simulation Simula -> Simula 67 objet, classe, hritage, liaison dynamique.
Mais aussi OS : Moniteurs ADT : classe abstraite IA : frame unit autonome de connaissance intelligence, gestion complexit = proprit mergente du systme
J.-M. Jzquel
17
Gnalogie de UMLUML(Rumbaugh, Booch, Jacobson) FUSION(HP-Labs) CLASSERELATION (P. Desfray) CRC (R. Wirf-Brooks)
Use-Case (I.Jacobson)OOA (P. Coad) JSD (M. Jackson) OOA - OODLE (Schlaer & Mellor)
OMT(J. Rumbaugh et al.)
OOA-OOD(G.Booch)
Data-Flow SADT/SA-SD (De Marco) J.-M. Jzquel
Diagrammes Etat-Transition (HAREL)
Entite-Relation Merise (Chen)18
9
HistoriqueDfinition en cours par une commission de rvision Soumission lOMG
UML 2.0 UML 1.x UML 1.21999-2002 Juin 1998 Novembre 1997 Septembre 1997 Janvier 1997 Juin 1996 Octobre 1995
Standardisation par lOMG Soumission lOMG Soumission lOMG Version bta OOPSLA96 OOPSLA95
UML 1.1 UML 1.0 UML 0.9 Mthode unifie 0.8 Booch93 OMT-2 OMT-1 OOSE
Autres mthodes J.-M. Jzquel
Booch91
Partenaires19
AujourdhuiUML est le langage de modlisation orient objet le plus connu et le plus utilis au monde UML sapplique plusieurs domaines OO, RT, Deployment, Requirement,
UML nest pas une mthode RUP
Peut dutilisateurs connaissent le standard, ils ont une vision outille dUML (Vision Utilisateur) 5% forte comprhension, 45% faible comprhension, 50% aucune comprhension
UML est fortement critiqu car pas assez formel Le march UML est important et saccrot MDA et MDD, UML2.1, IBM a rachet Rational !!!
J.-M. Jzquel
20
10
Un peu de Mthodologie...Une mthode de dveloppement de logiciels, cest : Une notation La syntaxe --- graphique dans le cas de UML
Un mta-modle La smantique --- paramtrable dans UML (strotypes)
Un processus Dtails dpendants du domaine dactivit : Informatique de gestion Systmes ractifs temps-rels Shrink-wrap software (PC)
J.-M. Jzquel
21
Processus de dveloppement avec UMLApproche itrative, incrmentale, dirige par les cas dutilisation Expression des besoins Analyse Elaboration d un modle idal
Conception passage du modle idal au monde rel
Ralisation et Validation
J.-M. Jzquel
22
11
3 UML pour lutilisateur
J.-M. Jzquel
23
Modlisation UMLModlisation selon 4 points de vue principaux : Aspects statiques du systme (le QUI?) Description des objets et de leurs relations Modularit, contrats, relations, gnricit, hritage Structuration en paquetages
Vision utilisateur du systme (le QUOI?) Cas dutilisation
Aspects dynamiques du systme (le QUAND?) Diagramme de squences (scnarios) Diagramme de collaborations (entre objets) Diagramme dtats-transitions (Harel) Diagramme dactivits
Vision implantation (le OU?) Diagramme de composants et de dploiement J.-M. Jzquel 24
12
Modlisation UMLModlisation selon 4 points de vue principaux : Aspects statiques du systme (le QUI?) Description des objets et de leurs relations Modularit, contrats, relations, gnricit, hritage Structuration en paquetages
Vision utilisateur du systme (le QUOI?) Cas dutilisation
Aspects dynamiques du systme (le QUAND?) Diagramme de squences (scnarios) Diagramme de collaborations (entre objets) Diagramme dtats-transitions (Harel) Diagramme dactivits
Vision implantation (le OU?) Diagramme de composants et de dploiement J.-M. Jzquel 25
Objet (Dfinition)Formellement : la fermeture transitive dune fonction Concrtement : encapsulation dun tat avec un ensemble doprations travaillant sur cet tat abstraction dune entit du monde rel existence temporelle : cration, volution, destruction
identit propre chaque objet peut tre vu comme une machine ayant une mmoire prive et une unit de traitement, et rendant un ensemble de services
J.-M. Jzquel
26
13
Classe Dfinition en temps que typeImplantation dun type de donn abstrait Description des proprits et des comportements communs un ensemble dobjets un objet est une instance dune classe (eq. variable vs. type)
Chaque classe a un nom, et un corps qui dfini : les attributs possds par ses instances les oprations dfinies sur ses instances, et permettant daccder, de manipuler, et de modifier leurs attributs
une classe peut elle mme tre un objet (Smalltalk) J.-M. Jzquel 27
Notations UML pour classes et objetsReprsentation dune classeReprsentation simplifie
Comptesolde: Somme plancher: Somme crditer (Somme) dbiter (Somme)
Compte
Nom de la classe
Reprsentation des objetsCL805699 : Compte
Compartiment des Attributs Compartiment des Oprations
Nom de lobjet
J.-M. Jzquel
28
14
Classe vs. ObjetsUne classe spcifie la structure et le comportement d'un ensemble d'objets de mme natureLa structure d'une classe est constante
Compte numro solde : rel dcouvertMax : entier consulterSolde() : entier crditer( somme : entier) dbiter( somme )
Diagramme de classes
M1 M0Des objets peuvent tre ajouts ou dtruits pendant l excution La valeur des attributs des objets peut changer J.-M. JzquelleCompteDeMarie:Compte numro = 2275 solde = 10000 dcouvertMax = -1000 leCompteDePaul : Compte numro = 6688 solde = 5000 dcouvertMax = -100
Diagramme d objets
:Compte numro = 1200 solde = 150 dcouvertMax = 10
29
Classe Dfinition en temps que moduleModularit = Gestion complexit des systmes Concept prsent depuis longtemps en informatique subroutines, unit de compilation (le fichier en C)
Notion de module intgre aux langages Modula-2 (module), Ada83 (package), puis lang. objets
Favorise : masquage dinformation (abstraction) encapsulation (facilite les modifications porte locale) dissociation interface/implantation=> composant rutilisable J.-M. Jzquel 31
15
VisibilitDiffrentes visibilits des membres d'une classe
public = + Interface protg = #
usager
hritier
priv = implmenteur
corps J.-M. Jzquel 32
Visibilit : ExempleReprsentation
Classe+a1 : T1 -a2 : T2 #m1 (p1,P2,p3) +m2 (p1,P2,p3)
J.-M. Jzquel
33
16
Principe de lapproche objetStructurer les systmes autour des objets Plutt quautour des fonctions
Lapproche par modlisation facilite Communication (et V&V) avec donneur dordre (Validation) entre les activits de dvp et de maintenance (Vrification)
Continuit entre les diffrentes phases du cycle de vie cf. Jackson et JSD
Obtenir des systmes modulaires et maintenables Notion de lignes de produits Assemblage de briques de base vs. dvp ad-hoc Produire des canevas d application vs. un programme J.-M. Jzquel 34
Approche OO : Modlisation et Composants
Canevas dapplications (frameworks) Composants changeables mme aprs dploiement Garanties ?
Fonctionnelles , synchronisation, performances, QdS J.-M. Jzquel 35
17
Facteurs de qualit externesValidit Aptitude raliser les tches dfinies par sa spcification Spcifications informelles => objectif difficile atteindre
Robustesse Aptitude fonctionner mme dans des conditions anormales Raction non catastrophique des situations non prvues par la spcification, forcment incomplte
Extensibilit Facilit dadaptation dun logiciel aux changements (correctifs ou volutifs) de spcification viter les logiciels chteau de cartes J.-M. Jzquel 36
Facteurs de qualit externesRutilisabilit Aptitude tre rutilis en partie pour de nouvelles applications Cesser de rinventer, re-coder, et surtout, re-tester
Compatibilit Aptitude des logiciels pouvoir tre combins entre eux Paradigme de lenvoi de messages
Efficacit Bonne utilisation des ressources du matriel: processeurs, mmoires, communications, etc. A ne pas confondre avec temps rel
J.-M. Jzquel
37
18
Facteurs de qualit externesPortabilit Facilite avec laquelle un produit logiciel peut-tre adapt diffrents environnements matriels et logiciels souvent imcompatible avec efficacit optimale...
Vrifiabilit Facilit de prparation des procdures de validation (tests), de recette et de certification
Ergonomie Facilit avec laquelle les utilisateurs dun composant peuvent apprendre lutiliser et en tirer le meilleur parti documentation jour (=> extraite du code)
J.-M. Jzquel
38
Les concepts de lapproche objetPour aller vers la ralisation des objectifs de qualit externe, il faut : modularit (cf ci-dessus) contrats (exprims en OCL) relations entre objets (abstraient implantation) gnricit (modules paramtrs) hritage (classification, rutilisation) et liaison dynamique J.-M. Jzquel 39
19
Problme de la validit des composantsIntra-composant validit dun composant isol hypothse : environnement correct problme : correction vis--vis dune spcification
Inter-composants validit dun assemblage de composants hypothse : chaque composant valide vs sa spcification problme : intgration de systmes
J.-M. Jzquel
40
De la difficult de la validation intracomposantAcqurir une valeur positive n Tant que n > 1 faire si n est pair alors n := n / 2 sinon n := 3n+1 Sonner alarme;
Prouver que lalarme est sonne pour tout n? Indcidabilit de certaines proprits problme de larrt de la machine de Turing...
Recours au test ici, si machine 32 bits, 2^31 = 10^10 cas de tests 5 lignes de code => 10 milliards de tests ! J.-M. Jzquel 41
20
Validit inter-composants : Peut-on (r)-utiliser un composant?
J.-M. Jzquel
42
Ariane 501 Vol de qualification Kourou, ELA3 -- 4 Juin 1996,12:34 UTH0 -> H0+37s : nominal Dans SRI 2: BH (Bias Horizontal) > 2^15 convert_double_to_int(BH) fails! exception SRI -> crash SRI2 & 1
OBC disoriented Angle attaque > 20, charges arodynamiques leves Sparation des boosters
J.-M. Jzquel
43
21
Ariane 501 : Vol de qualificationKourou, ELA3 -- 4 Juin 1996,12:34 UTH0 + 39s: auto-destruction (cot:500M)
J.-M. Jzquel
44
Pourquoi ? (cf. IEEE Comp. 01/97)
Pas une erreur de programmation Non-protection de la conversion = dcision de conception ~1980
Pas une erreur de conception Dcision justifie vs. trajectoire Ariane 4 et contraintes TR
Problme au niveau du test dintgration As always, could have theoretically been caught. But huge test space vs. limited resources Furthermore, SRI useless at this stage of the flight! J.-M. Jzquel 45
22
Pourquoi? (cf. IEEE Computer 01/97)
Rutilisation dans Ariane 5 dun composant de Ariane 4 ayant une contrainte cache ! Restriction du domaine de dfinition Prcondition : abs(BH) < 32768.0
Valide pour Ariane 4, mais plus pour Ariane 5
J.-M. Jzquel
46
Spcification = contrat entre un composant et ses clientsDans la vie relle, diffrents types de contrats Du Contrat social de Jean-Jacques Rousseau au cash & carry
De mme, plusieurs types de contrats dans un monde rparti
J.-M. Jzquel
47
23
Quatre niveaux de contrats logicielsElmentaire (syntaxique) le programme compile
Comportemental (fonctionnel) pr et post conditions
Cf. IEEE Computer July 1999
Synchronisations e.g. path expressions, etc. [McHale]
Qualit de service (quantitative) Ngociation dynamique possible
J.-M. Jzquel
48
Composant de confiance?
Spcification (e.g., avec UML)
Implantation(EJB,COM+,CCM)
V & V (e.g., tests)
Confiance = cohrence entre ces 3 aspects J.-M. Jzquel 49
24
Reprsentation des contrats en UMLTypage par signature des mthodes insuffisant besoin de pouvoir exprimer des restrictions valeurs d entres et de sorties
besoin de prciser la smantique ce que fait une mthode (le quoi) sans entrer dans le dtail comment : Indpendance vis--vis de limplantation
Inspire par la notion de Type Abstrait de Donnes: Spcification = Signature + Prconditions (conditions sous lesquelles une routine peut tre appele) Postconditions (proprits garanties par une routine) Invariants de classe (vrai lentre et la sortie des routines) J.-M. Jzquel 50
OCL : Object Constraint LanguageLangage de description de contraintes de UML des contraintes restreignant les domaines de valeurs peuvent tre ajoutes aux lments du modle UML
Contrainte = expression boolenne (sans effet de bord) portant sur oprations usuelles sur types de base (Boolean, Integer...) attributs dinstances et de classes oprations de query (fonctions sans effet de bord) associations du modle UML tats des StateCharts associs
J.-M. Jzquel
51
25
Reprsentation des contraintes OCLDirectement dans le modle notation entre { } accroche un lment de modle Compte{solde>=plancher}
solde: Somme plancher: Somme crditer (Somme) dbiter (Somme)
Dans un document spar, en prcisant le contexte
context Compte inv: solde >= plancher
Invariants = Proprits vraies pour l'ensemble des instances de la classe dans un tat stable, chaque instance doit vrifier les invariants de sa classe J.-M. Jzquel 52
Prcondition: ce qui doit tre respect par le clientSpcification des conditions ncessaires pour quun client soit autoris appeler une mthode exemple: montant > 0
Notation en UML {precondition OCL boolean expression} Abbreviation: {pre: OCL boolean expression}
J.-M. Jzquel
53
26
Postcondition: Ce qui doit tre assu par limplantationSpcification de ce qui sera vrai la compltion dun appel valide une mthode exemple: solde = solde @pre + montant
Notation en UML {postcondition OCL boolean expression} Abbreviation: {post: OCL boolean expression} Oprator pour accder la valeur d avant (idem old Eiffel): OCL expression @pre J.-M. Jzquel 54
Etre abstrait et prcis avec UMLCompte{solde>=plancher}
solde: Somme plancher: Somme crditer (montant : Somme){pre: montant > 0} {post: solde = solde @pre + montant}
dbiter (montant: Somme){pre: montant > 0 and montant
Distributeur
0 . . *
1 . . *
Un diagramme dobjets dcrit un tat possible un instant t, un cas particulier doit tre conforme au modle de classes
: Carte Bleue s i g n a t a i r e
paul : Client t i t u l a ti ir te us tl i a t i u r l t e a i s i t r u e l s a i r e s
c1 : Comp te
: B a n q u e
pierre : Client
c2 : Comp te
: Cons ortiu m
marie : Client s i g n a t a i r e
c3 : Comp te
: B a n q u e
: Carte Bleue EstA ccept Par > EstA ccept Par > : Carte Bleue
sophi e: Client
: Distri buteu r s i g n a t a i r e
: B a n q u e
c1 : Comp te
paul : Client t i t u l a it ri et su lt ai i t r u l
: Cons ortiu m
c2 : Comp te
pierre : Client
: B a n q u e
c3 : Comp te
e t s i t
a i r e s
: Carte Bleue EstA ccept Par > EstA ccept Par >
u l a i r e s
marie : Client s i g n a t a i r e
: Distri buteu r
sophi e: Client
Les diagrammes dobjets peuvent tre utiliss pour expliquer un diagramme de classe (donner un exemple) valider un diagramme de classe (le "tester")
J.-M. Jzquel
70
Cas particuliers de relations
Relations rflexivesencadre chef 1 sous-fifre 1..*
Personne
Une relation rflexive lie des objets de mme classe
J.-M. Jzquel
71
35
Composition et AgrgationCas particuliers de relations : Notion de tout et parties1 transporte
Voiture
passager Personne *
moyen_de_transport
1
1 roulement >4,6
Composition
Roue
Agrgation
structure > 1
Chassis
J.-M. Jzquel
72
Autre vues de la composition/agrgationDiffrentes formes suggrant linclusionVoiture roulement[4-6]: Roue structure: Chassis Voiture roulement 4-6 structure 1 Roue Chassis
J.-M. Jzquel
73
36
Relations n-airesRelations entre plus de 2 classes ( viter si possible)PROFESSEUR* Enseignant Destinataire 1..* Enseignement 1..* Enseigne MATIERE
CLASSE
PROFESSEUR
0..*
1..*
1..*
Enseignement1..* 1..* 1 Enseigne
MATIERE
Enseignant
Destinataire J.-M. Jzquel
CLASSE74
Associations attribuesL'attribut porte sur le lien
candidat preuve Etudiant Note
n..k objet_preuve Matire
J.-M. Jzquel
75
37
Classes associationPour associer des attributs et/ou des mthodes aux associations => classes associations
employs
socits 0..2
Personne
*
Socit
Emploisalaire augmenter()
Le nom de la classe correspond au nom de lassociation (problme: il faut choisir entre forme nominale et forme verbale) J.-M. Jzquel 76
Classes associationemploys socits
Personne
*
0..2
Socit
Emploi
M1 M0e1 salaire = 1500 xerox
salaire augmenter()
employ employ
e2 salaire = 700
jean e3 salaire = 1000 marieemploy
ujf
Le salaire est une information correspondant ni une personne, ni une socit, mais un emploi (un couple personne-socit).
J.-M. Jzquel
77
38
Classes association : traductionemploys socits 0..2
Personne
*
Socit
Emploi
employ
emplois 0..2
emplois *
Personne
1
Emploi
socit
1
Socit
Il ne peut y avoir qu'un Emploi entre une Personne et une Socit J.-M. Jzquel 78
Qualifieurs dassociationsUn qualifieur est un attribut spcial qui permet, dans le cas d'une relation 1-vers-plusieurs ou plusieurs-vers-plusieurs, de rduire la cardinalit. Il peut tre vu comme une cl qui permet de distinguer de faon unique un objet parmi plusieurs.
J.-M. Jzquel
79
39
Qualifieurs dassociations : Exemple
Rpertoire
0..*
0..1 FichierNom du fichier
Rpertoire
Nom du fichier
Fichier
Relation non qualifie
Relation qualifie Un rpertoire + un nom de fichier identifient de faon unique un fichier
J.-M. Jzquel
80
Cardinalit des Associations QualifiesCas classique: cardinalit 0..1 Banquenc
0..1
Compte
Cas plus rare: cardinalit * (pas de contrainte particulire exprime) Banquetitre
*
*
Employe
Cas plus rare: cardinalit 1 (gnralement c'est une erreur) Echiquiernl : NumLigne nc : NumCol
1
Case
181
0 comme cardinalit minimale, sauf si le domaine de l'attribut qualifieur est fini et toutes les valeurs ont une image. J.-M. Jzquel
40
Contraintes OCL navigant les relationsChaque association est un chemin de navigation Le contexte d une expression OCL est le point de dpart (la classe de dpart) Les noms de rles sont utiliss pour identifier quelle relation on veut naviguerPersonne 1 propritairepossession
proprit *
Voiture
Context Voiture inv: self.propritaire.age >= 18
J.-M. Jzquel
82
Navigation des relations 0..*Par navigation on n obtient plus un scalaire, mais une collection d objets OCL dfini 3 sous-types de collections Set : obtenu par navigation dune relation 0..* Context Personne inv: proprit retourne un Set[Voiture] chaque lment est prsent au plus une fois
Bag : si plus dun pas de navigation un lment peut tre prsent plus d une fois
Sequence : navigation dune relation {ordered} c est un Bag ordonn
Nombreuses oprations prdfinies sur les types collection. Syntaxe :Collection->opration J.-M. Jzquel 83
41
Oprations de base sur collectionsisEmpty vrai si la collection na pas dlments Context Personne inv: ageisEmpty
notEmpty size
vrai si la collection a au moins un lment nombre dlments dans la collection
count (elem) nombre doccurrences de elem dans la collection J.-M. Jzquel 84
Opration selectSyntaxes possibles collection->select(elem:T | expr) collection->select(elem | expr) collection->select(expr)
Slectionne le sous-ensemble de collection pour lequel la proprit expr est vraie e.g.context Personne inv: proprit->select(v: Voiture | v.kilometragenotEmpty
ou en raccourci :context Personne inv: proprit->select(kilometragenotEmpty J.-M. Jzquel86
42
Opration forAllSyntaxes possibles collection->forall(elem:T | expr) collection->forall(elem | expr) collection->forall(expr)
Vrai si expr est vrai pour chaque lment de collection e.g.context Personne inv: proprit->forall(v: Voiture | v.kilometrageforall(kilometrage graphe orient (graphe dhritage)Hritage simple AEROPLANE Hritage multipleAEROPLANE VEHICULE_DE_TRANSPORT
AVION J.-M. Jzquel
AVION93
Utilisation de lhritageMcanisme dextension de module ajout de fonctionnalits dans la sous-classe customisation et combinaison de composants logiciels rutilisation de code
Mcanisme de classification : sous-typage relation X est-une-sorte-de Y (est substituable ) organisation des systmes complexes (cf. Linnaeus) rutilisation dinterface
J.-M. Jzquel
94
46
Classes abstraitesCapturent des comportements communs Servent structurer un systme Ont des oprations dont limplantation est absente deferred en Eiffel pure virtual en C++ abstract en Java
Ne peuvent donc pas tre instancies Smantique des oprations abstraites spcifiable invariants, pre et post-conditions J.-M. Jzquel 95
Reprsentation de classes abstraitesClasses sans instances immdiatesForme {abstract}
Carre
Cercle
Une instance de Forme est obligatoirement une instance de la classe Carre ou de la classe Cercle
J.-M. Jzquel
96
47
Reprsentation des oprations abstraitesOpration sans corps dune classe abstraiteForme {abstract}calculer_surface () {abstract}
Carrecalculer_surface()
Cerclecalculer_surface()
J.-M. Jzquel
97
Interfaces et lollipop
interface
MOBILE
MOBILE
RaffinementAVION
AVION
J.-M. Jzquel
98
48
Hritage des relationsLes relations sont hrites par les sous classes :VEHICULE motorisation 1 MOTEUR
VOITURE REPERTOIRE
CAMION lien logique 1..* * FICHIER
DRIVER
FICHIER_TEXTE
FICHIER_BINAIRE
J.-M. Jzquel
99
Hritage des contratsLSP (Liskov Substituability Principle) Analogy with subcontracting a routine subcontracts its implementation to its redefined version
Preconditions can only be weakened in Eiffel: require else
Postconditions can only be strengthened in Eiffel: ensure then
J.-M. Jzquel
100
49
Polymorphisme et liaison dynamiquePolymorphisme : possibilit de changer de forme f : FORME; c: CERCLE; k: CARRE; f := c; f := k
Liaison dynamique : leffet de lappel dune opration dun objet dpend de sa forme effective lexcution f.imprimer; -- diffrent selon que f est CERCLE ou CARRE
Espace de nommage rduit et uniforme Mise en facteur des parties communes Possibilit de conteneurs htrognes J.-M. Jzquel 101
Polymorphisme : exempleT contient des FORMEs en fait des instances de sous-classes de FORME
Programmes de type : T[1]