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.