La programmation orientée Objet / UML

Transcription

La programmation orientée Objet / UML
La programmation orientée
Objet / UML
Laurent Pérochon
Outils à utiliser
•Langage de
modélisation
•Méthode
•Langage
d’analyse et
de
de conception programmation
Pourquoi ?
Système réel
Objectifs
Méthode
d’analyse et
de
conception
Langage de
modélisation
UML
Système
modélisé
Logiciel
UP
Langage de
programmation
Orienté objet
L ’orientation Objet
C ’est une technique de modélisation de
système, associée à un langage de
programmation.
Le système
Un système est composé d ’objets en relation
Exemples :
• Une compagnie aérienne (avions, pilotes …)
• Un amphithéâtre (élèves, professeur, tables …)
Les objets
Les objets du système amphithéâtre
Paul
Lucie
Table n°
n°1
Chaise n°
n°2
Pascal
Table°
Table°2
Chaise n°
n°1
Les objets
Objet = attributs + Méthodes (Opérations)
Pascal
• 23 ans
Table°
Table°2
Attributs
• célibataire
• mange
• dors
• étudie
• 4 pieds
• marron
Opérations
Méthodes
• ouverture tiroir
• tirer rallonge
Les classes
Elles regroupent les objets ayant des
caractéristiques communes
(informations/comportements).
Même « moule »
Les classes
Objets
Paul
Table n°
n°1
Chaise n°
n°1
Table°
Table°2
Chaise n°
n°2
Pascal
Lucie
Classes
Personne
Table
Chaise
Les classes et les instances
Pascal
Paul
Lucie
• 23 ans
• 25 ans
• 20 ans
• célibataire
• marié
• célibataire
• mange
• dors
• étudie
• mange
• dors
• étudie
• mange
• dors
• étudie
Objet
Instance
Personne
• âge
• statut marital
• mange
• dors
• étudie
Classe
Les classes et les instances
Chaque instance est forcément associée à
une classe.
Résumé : Entités de
l ’approche orientée objet
Objets
Valeurs particulières
Classes
« Cases »
vides
•Attributs
•Méthodes
Les associations
(liens entre classes)
• Héritage
• Agrégation
• Association
• ...
L ’héritage
Généralisation/Spécialisation
•Lorsque des classes ont des caractéristiques
communes, ont peut mettre en commun ces
informations/comportements dans une classe
spécifique.
•Les classes d ’origine hériteront des
caractéristiques de celle-ci.
L ’héritage
Personne
• âge
• statut marital
Personne
• mange
• dors
• étudie
• âge
• dors
Homme
Bébé
• statut marital
• mange
• étudie
• mange
L ’héritage
Personne
• âge
• statut marital
Personne
• mange
• dors
• étudie
• âge
Modification
de ‘Mange’
• dors
• mange
Homme
Bébé
• statut marital
• étudie
• mange
L ’héritage
Personne
• âge
Parent
• dors
• mange
Homme
Bébé
• statut marital
Descendants
• étudie
• mange
Agrégation
Composition
l ’objet contient, regroupe, possède
Pied n°
n°1
Plateau
Table°
Table°2
Pied n°
n°2
tiroir
Pied n°
n°3
rallonge
Pied n°
n°4
Exemple de relation « regroupe «
Association
Communication entre objets. Un objet
envoi un message/stimulus à un autre
Demande rapport
Lucie
Demande rapport
Envoi partie n°1
Professeur
Martin
Binôme n°
n°1
Envoi partie n°2
Remise rapport
Demande rapport
Pascal
Résumé
• Un objet/instance contient les données
(attributs) et les traitements (méthodes)
• Chacun d ’eux est associé à une classe
(moule)
• Les classes sont associées entre elles par
des relations
Exemple
Demande rapport
Lucie
Demande rapport
Envoi partie n°1
Professeur
Martin
Binôme n°
n°1
Envoi partie n°2
Remise rapport
Demande rapport
Schéma logique
Pascal
Les classes ?
•Qu’est ce qui agit, pense, fourni un service …?
Professeur
Martin
Lucie
Pascal
Personnes physiques qui ne font
pas la même chose
Et binôme n°1 ? …….
Les classes ?
•Sans objectifs plus précis, sans spécifications
supplémentaires, il y a plusieurs représentations
possibles
•simple
•complexe
Les classes ?
Simple
instance
classe
Personne
-Statut
-Nom
Demande rapport()
Envoie partie()
-Élève
-Lucie
-Élève
-Pascal
-Professeur
-Martin
Les classes ?
Trop Simple
classe
Personne
-Statut
-Nom
Demande rapport()
Envoie partie()
instance
-Élève
-Lucie
-Élève
-Pascal
-Professeur
-Martin
•L’instance Lucie ne connaît quelle même
•L’instance de professeur ne connaît pas de binôme ni d’élève
•Et le binôme ? C’est le seul qui fait une remise de rapport
•Seul Professeur et binôme peuvent demander un rapport
•Seul les élèves remettent des parties de rapport
Les classes ?
•L’instance Lucie ne connaît quelle même
•L’instance de professeur ne connaît pas de binôme ni d’élève
Deux types de problèmes
•Et le binôme ? C’est le seul qui fait une remise de rapport
•Seul Professeur et binôme peuvent demander un rapport
•Seul les élèves remettent des parties de rapport
Les classes ?
•Et le binôme ? C’est le seul qui fait une remise de rapport
•Seul Professeur et binôme peuvent demander un rapport
•Seul les élèves remettent des parties de rapport
Il manque des notions/informations
+
Mélange de fonctions
Les classes ?
Personne
•Et le binôme ? C’est le seul qui fait une remise de rapport
•Seul Professeur et binôme peuvent demander un rapport
•Seul les élèves remettent des parties de rapport
-nom
Correspondance
Professeur
Élève
Demande rapport() Envoie partie()
Binôme
Appartient à
-numéro
Demande rapport()
Remise rapport()
Les classes ?
•L’instance Lucie ne connaît quelle même
•L’instance de professeur ne connaît pas de binôme ni d’élève
divergence
Personne
-nom
Professeur
Demande rapport()
Élève
Envoie partie()
Binôme
Appartient à
-numéro
Demande rapport()
Remise rapport()
Les classes ?
Soit on fait une représentation spécifique
avec un seul binôme, soit on veut représenter
un système plus large
•Un professeur, une classe, des binômes et
Des élèves.
•Les spécifications du système étaient
insuffisantes
Les classes et les associations
?
Une solution possible :
Classe
Demande rapport()
Est composée de
Dirige une
Personne
-nom
Binôme
-numéro
Demande rapport()
Remise rapport()
Est composé de
Professeur
Demande rapport()
Élève
Envoie partie()
Les classes et les associations
?
Classe
Demande rapport()
Est composé
composée de
Dirige une
Personne
-nom
Binôme
-numé
numéro
Demande rapport()
Remise rapport()
Est composé
composé de
Professeur
Demande rapport()
Élève
Envoie partie()
Le professeur connaît la classe qui connaît des binômes qui
savent qui les compose. Avec cette représentation le professeur
peut demander à tous les binômes, ou à un binôme particulier,
via la classe, un rapport.
Les classes et les associations
?
Et si le professeur veut contacter un élève en
Particulier ?
Classe
Demande rapport()
Est composé
composée de
Dirige une
Personne
-nom
Binôme
-numé
numéro
Demande rapport()
Remise rapport()
Est composé
composé de
Professeur
Demande rapport()
Élève
Envoie partie()
Avec cette représentation il devra fournir le nom recherché à la classe,
qui demandera à chacun des binômes s’il le connaît … avec bien sûr des
méthodes supplémentaires dans professeur, classe, binôme.
Les classes et les associations
Une solution possible ?
Classe
Est composée de
Demande rapport()
Dirige une
Binôme
Personne
-nom
Professeur
Demande rapport()
Est composée de
-numéro
Demande rapport()
Remise rapport()
Élève
Envoie partie()
Est composé de
Les classes et les associations
?
Une autre plus
Personne
-nom
Connaît
Professeur
Demande rapport()
simple, donc …
MEILLEURE.
Connaît
Binôme
-numéro
Demande rapport()
Remise rapport()
Est composé de
Élève
Envoie partie()
Les classes et les associations
? Une classe pour juste mettre
Personne
en commun un nom c’est
faire compliqué pour rien.
-nom
Connaît
Professeur
-Nom
Demande rapport()
Connaît
Binôme
-numéro
Demande rapport()
Remise rapport()
Est composé de
Élève
-Nom
Envoie partie()
Les classes et les associations
?
Connaît
Professeur
-Nom
Demande rapport()
Connaît
Élève
-Nom
Envoie partie()
Binôme
-numéro
Demande rapport()
Remise rapport()
Est composé de
Difficile d’arriver à cette solution !
Raisons : problèmes de spécifications et surtout
de méthode et de représentation non normée.