340 likes | 501 Views
Analyse et conception orientée objet Réalisation des transparents : M. Exbrayat, I. Todinca. Approche fonctionnelle : la modélisation est réalisée à partir de fonctions que doit réaliser le système.
E N D
Analyse et conception orientée objetRéalisation des transparents : M. Exbrayat, I. Todinca • Approche fonctionnelle : la modélisation est réalisée à partir de fonctions que doit réaliser le système. • Approche orientée objet : on identifie les objets manipulés par le système, avec leurs états et leurs comportements.
Approche objet • L’idée est connue depuis 1976 • Programmation orientée objet : 1980, version industrielle de SmallTalk • Langages de programmation : Ada, C++, Java • Les outils de POO existent, qu’en est-il de l’analyse et de la conception?
Historique • Méthodes fonctionnelles et Systémiques • Années 60 90 • Apparitions de méthodes objets : 90 • Booch, OMT (Rumbaugh), Objectory (Jacobson) • Insuffisances • Méthodes partielles, cantonnées à des domaines distincts • « Abondance de biens nuit »
Naissance d’UML UML 2 Soumission OMG UML 1.3 juin 1999 UML 1.2 juin 1998 Standardisation OMG Soumission OMG UML 1.1 Novembre 1997 Septembre 1997 Soumission OMG UML 1.0 Janvier 1997 OOPSLA ‘ 96 UML 0.9 Juin 1996 Méthode Unifiée 0.8 OOPSLA ‘ 95 Octobre 1995 Booch ’93 OMT-2 OMT-1 Objectory Partenaires Autres méthodes Booch ’91
UML ? • C’est: • Une notation, un langage de modélisation objet • Une description complète, évolutive, publique • Un standard, utilisé par des AGL • Ce n’est pas : • Une méthodologie
Généralités sur l’approche objet • Dans la vie courante on manipule des objets. • Un objet possède un état et réagit selon un comportement. • L’état évolue au cours du temps, en fonction du comportement • Les objets échanges des messages.
Les classes • Objets : Alice, Pierre, Paul; université d’Orléans, université Paris 7, université Lyon 1. • Classe : regroupement d ’objets de même type. • Personne • Université • L’objet est une instance de sa classe.
Objet Classe Les attributs Pierre : Personne 25 ans Pierre Durand 40 rue ZOLA Personne Age : int Nom : string Adresse :string
Les méthodes Personne Age : int Nom, Adresse : string renvoie Nom SePrésenter() Vieillir() ChangerNom(…) Age = Age+1
Encapsulation • Regroupement des attributs et des méthodes • Modularité : • protège les données d ’une utilisation erronée • cache les détails des méthodes • Evolutivité, fiabilité Personne Age : int Nom, Adresse : string SePrésenter() Vieillir() ChangerNom(…)
Héritage • Relation entre classes • Oiseaux est un cas particulier de Animaux • Animaux généralise Oiseaux • La classe fille • hérite les attributs et les comportements • peut avoir des attributs et des méthodes nouvelles • peut avoir un comportement modifié Animaux Reptiles Oiseaux
Polymorphisme Animaux SeDeplacer() • Tout animal peut se déplacer • Il le fait différemment s’il s’agit d’un oiseau ou d’un serpent Reptiles Serpents SeDeplacer() { en volant } SeDeplacer() { en glissant }
Les diagrammes UML Diagramme Diagramme structurel Diagramme comportemental Vue statique Vue dynamique
Diagramme structurel d’objets de classes de composants de déploiement Diagramme comportemental de cas d’utilisation de collaboration de séquence d’activités d’états-transitions Les diagrammes
Diagramme de classes Nom de classe Nom de classe attributs Attributs attr1 attr2 méthodes Opérations op 1 op 2... d’autres séparateurs peuvent être rajoutés pour mieux regrouper des attributs ou des méthodes Exceptions ex1 ex2
Attributs • [<Visibilité>]<nom d ’attribut>[:nom de type ou de classe>[=<valeur initiale>]] • Visibilité • Publique + • Privée - • Protégée # • Attribut de classe ou d ’instance • sa valeur est la même pour tous les objets de la classe (ex : TVA) • on souligne la définition de l ’attribut • Attribut référençant un autre objet • Par valeur • Par référence
Attributs (suite) Par valeur : losange noir du cote du conteneur Boissons Boissons - nbrBoissons:int =100 - produits:Ensemble # boissonPreparee:Boisson Produits 1 1 boissonPreparee Ensemble Boisson Par référence : losange blanc du cote de la classe référençante Affecter * Camion Chauffeur
Attributs dérivés Rectangle Rectangle longueur largeur /Surface longueur largeur Surface ( ) Conception {Surface=longueur*largeur}
Méthodes <nom_operation>([nom_param:type_param[=valeur-par-defaut],…])[:type_retour] • Exemple • +ChangerNom(nouveauNom : String) • +SePrésenter():String • Méthode abstraite • indique une méthode non implémentée dans cette classe • Définition en Italique ou précédée de {abstrait}
Classes utilitaires • On ne crée pas d ’instance de la classe • Equivalent en C++ : classe ayant uniquement des mambres statiques « utilitaire » Maths +Pi: Réel +e: Réel +sin(Degré):Réel +sqrt(Réel):Réel
Classe paramétrable Paramètres formels Classe paramétrable • « templates » du C++ Eléments Table générique Deux notations possibles « lie » (Entreprise) Table générique <Entreprise> Annuaire d ’entreprises
Relations entre classes • Association • Composition / agrégation • Utilisation ou délégation • Dépendance • Héritage
Associations Très semblable au modèle entité-association Classe A Classe B Cardinalité : 1 0..1 N M..N * 0..1 0..* 1..* employeur Société Personne employé < travaille pour Société Personne 1 0..*
Associations (suite) Association n-aire Classe 4 1..* 1 1 Classe 1 Classe 3 0..1 nom Navigabilité 1 instance de 3 correspond a plusieurs de 5 * 1 1..* Classe 5 Classe 2 *
Association attribué Elève Matière Elève Résultat Matière Note Note
Qualification A B Qualif. Réseau :B :B :B :B email :B :B :B 0..1 :A Personne
La Navigation Classe A Classe B Classe A Classe B • Idée : voire une association comme un canal de navigation entre objets • A priori on peut aller de A à B ou de B à A • Flèche : seulement la classe A « voit » la classe B • implémentation : seulement les objets de la classe A ont un pointeur vers des objets de la classe B
Contraintes sur les associations Société Personne • Les employés sont triés par leur numéro • Les délégués font partie des parents • On ne peut que rajouter des faits à un historique {ordonné} < Parents élèves Classe d ’école Personne {sous-ensemble} < Délégués Historique Fait {ajout uniquement}
Composition / agrégation Classe 1 Classe 1 o1 Classe 3 Classe 2 O2.1 Classe 4 o1 o2 O2.2 Classe 5 Classe 2 Classe 3 Nom o2 0..* O2.1 O2.2 Classe 4 Classe 5 Structure multivaluée Classe 1 o1 o2 Par référence Classe 2 Classe 3 O2.1 O2.2 Par valeur Classe 4 Classe 5
Héritage Heritage contraint {disjoint} / {complet} / {incomplet} {chevauchement} Animaux {disjoint} Héritage simple Oiseaux Reptiles Mammifères Héritage multiple • Plus délicat à gérer! • certaines langages de programmation n'acceptent pas l'héritage multiple • provient quelquefois d’une erreur de classification... Classe A Classe B Un peu de chaque
Diagrammes d’objets • Visualisation d’instances • Montrer un contexte • Influence des interactions • Faciliter la compréhension • Structures récursives • Structures complexes • Illustrer, tout simplement
Diagrammes d ’objets Classe C Attention, ne pas confondre avec « instancie » « instance de » On souligne le nom Une instance de C Jean:Personne :Personne Jean:Gestion::Personne :Voiture « Exception » : Erreur I/O marque=’’Renault ’’ puissance=120
Liens entre objets Nicolas:Personne :Voiture stagiaire 1 4 Matthieu:Personne :Roues :Passagers directeur Lionel:Personne
Et encore... :Tout Objet composite :Partie :Partie :Partie Etudiant :ObjetActif {Si réussi exams} « devient » Diplômé