SlideShare une entreprise Scribd logo
UML Analyse et Conception  Objet (C++)
Plan du cours & Objectifs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les concepts Objets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les problèmes
Les principales causes de l'échec
Les symptômes de l'échec
Programmation Objet : Avantages (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les bénéfices des techniques OO From the corporate Use Of Object Technology
OO Versus Dvp classique Dvp = 20% Maintenance = 50%
C versus C++ en Maintenance
Notion d'abstraction Classe Moule Seau ~ChateauDeSable()  c'est le destructeur Constructeur Objet ChateauDeSable ChateauDeSable couleur : Bleu, Blanc, Rouge poids : int ChateauDeSable(p1 : Couleur, p2 : int)
Un programme objet (1)
Un programme objet : Réutilisation
Un Objet est Nain et Paresseux et snob !!!
Un programme objet (2) Mere Run Bronzer Enfant Creer JchaiPasQuoiFaire FaisUnChateau ChateauDeSable Creer Garnir Casser JchaiPasQuoiFaire
Un programme objet (3) ChateauDeSable Mere Run Bronzer Enfant JchaiPasQuoiFaire PrendreBain Delete
Un programme objet (3) Mere Run Bronzer Enfant JchaiPasQuoiFaire PrendreBain Mer Creer AllerDans FaireVagues BoireTasse Crier
Un programme objet (4) Mere Run Bronzer Enfant Mer Crier Delete
Un programme objet (5) Fuite Mémoire Mere Run Bronzer Mer
Un programme objet (6) Enfant College Lycée Enfant Enfant Enfant Usine
Un programme objet (7) Enfant College Lycée Enfant Enfant Enfant Usine
Un programme objet (8) Enfant College Lycée Enfant Enfant Enfant Usine
Un programme objet persistant P P P P P P Enfant College Lycée Enfant Enfant Enfant Usine T T
Les types d’Objet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les langages de programmation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les langages Objet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Généricité Object Arithmétique
Compilation-Interprétation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Source Compilateur Binaire Source Interpréteur Source Compilateur Code Intermédiaire Interpréteur MV JIT
Encapsulation Public  : accessible par tout le monde Protected  : accessible par l'objet et par les héritiers Private  : accessible seulement par l'objet Les accesseurs : SetAttr et GetAttr
Héritage Est un
Polymorphisme Un petit programme  : Personne p; Dentiste d; Chirurgien c; p = d; p.Travailler(); p = c; p.Travailler(); Arracher des dents Opérer Faire du pain
Les concepts d'une bonne conception Ouverture-Fermeture OCP Inversion des dépendances DIP Substitution de Liskov LSP Séparation des interfaces ISP
Exemple : utilisation de la délégation abstraite ( OCP ) ,[object Object]
Exemple : ( OCP ) Personne nom : string age : int Personne(n : string, a : int) Appl1 Appl2 BD Appl3 Avec adr ,[object Object],[object Object],[object Object],[object Object],[object Object],ID nom age
Exemple : ( OCP ) Solution Appl1 Appl2 Personne nom : string age : int Personne(n : string, a : int) GetAdresse() : string PersonneDomicilee adresse : string PersonneDomiciliee(n : string, a : int, adr : string) GetAdresse() : string SetAdresse(p : string) : void Rend une chaîne vide: Appl3 peut alors utiliser des Personnes ,[object Object],[object Object],[object Object],[object Object],Appl3
Principes de substitution de LISKOV ( LSP ) ,[object Object],[object Object],[object Object]
Principes d’inversion des dépendances ( DIP ) ,[object Object]
L’abstraction comme technique d’inversion des dépendances ( DIP ) ,[object Object],Pour inverser la dépendance de A vers B, on introduit une classe d'interface I dont dérive B comme suit :
Principes de séparation des interfaces ( ISP ) ,[object Object],[object Object]
Techniques de séparation ( ISP ) ,[object Object],[object Object],[object Object]
Séparation par héritage multiple ( ISP ) ,[object Object],[object Object]
Séparation par adaptateur ( ISP ) ,[object Object]
UML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La notation UML Introduction : notion de modèle
Le but d ’UML Trouver les bons objets
La modélisation : Pourquoi Une bonne société qui développe des programmes est celle qui fabrique des programmes de qualité qui satisfont les besoins des clients (livraison à temps, utilisation des ressources humaines et matérielles optimales) Le but principal n’est donc pas de produire de beaux documents, ni de conduire de nombreuses réunions, ni de proclamer de beaux  slogans, ni de gagner des prix Pulitzer sur les lignes de code; mais simplement de produire des programmes capables de  satisfaire le client aujourd’hui et demain.  Tout le reste est secondaire UML-User Guide
Notion de Modèle Ce qui sert ou doit servir d’objet d’imitation pour faire ou reproduire quelque chose Le petit robert Top Model ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Firesmith-Dictionary of object tecnology
Un Modèle ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les diagrammes UML + = = = +++ + + +++
Les 13 diagrammes UML2.0
Un outil UML Navigateur Définitions Boutons génériques Boutons Spécifiques Les diagrammes Classe Use Case Composants
Historique d'UML 2005 2.0 DOC-PDF UML1.3 =  4,7MB DOC-PDF UML2.0 = 5.8 MB 2006 2.1 Booch-93 Rumbaugh( OMT2) Oct-95 0.8 Jacobson (use case - sdl) Juillet-96 0.9 Janv-97 1.0 Nov-97 1.0 Sept-97 1.1 (OMG) 2000 1.4
La notation UML Diagramme de Use case
Diagramme de Use case Les acteurs Un  acteur  est un rôle d’un ou plusieurs objets situés à  l’extérieur  du système et qui  interagissent avec lui pour remplir une  fonctionnalité  donnée  de ce système. Un acteur caractérise le rôle joué par un objet à l’extérieur  du système. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Diagramme de Use case Use Case Un Cas d’utilisation (  use case  ) est une  fonctionnalité  remplie par le système et qui se manifeste par un  ensemble de messages  échangés entre le système et un ou plusieurs acteurs.
Diagramme de Use case Description d'un Use Case ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],(3-5 pages) Ce n ’est pas une  description formelle Mais doit être très détaillé Ceci est l ’usage mais ne fait partie de la norme UML
Diagramme de Use case Description d'un Use Case Les scénarios
Diagramme de Use case Payer cash Payer par carte Manger Demander facture Maitre d'hotel Prendre la commande client Aller au restaurant <<include>> <<include>> Caissier Payer <<include>> <<extend>> Sommelier Commander pinard <<extend>> Serveur Retourner plat en cuisine <<extend>>
Utilisation des Use case Manger Distribuer le comportement des fonctionnalités aux méthodes des objets Descriptions
Use Case : Ex1 Une société de vente par correspondance vous demande de développer son système informatique. Ce système doit pouvoir prendre en compte des commandes passées par la poste et des commandes passées par internet. Il doit suivre les expéditions qui ne sont effectuées que si le paiement est OK. Les paiements se font par carte bancaire dans le cas d'internet et par chèque dans le cas de la poste. Les paiements sont validés par un système bancaire  appartenant à la société et existant. Il faut récupérer ce système. Le nouveau système est chargé aussi de la gestion de stocks, lorsqu'un article atteint un seuil minimal, alors il faut passer une nouvelle commande au fournisseur adéquat. A la réception de la commande, la mise à jour de la  base est faite par un employé. Dans le cas d'un paiement accepté et de stock disponible, l'expédition est faite par un robot existant au quel il suffit de passer les coordonnées du client, et la liste des produits achetés. En cas  d'indisponibilité, une lettre doit être envoyé au client. Correction
Supplément sur UC : User Story ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supplément sur UC (1) Un &quot; Use case &quot; modélise un service rendu par le système. Il  représente un ensemble de séquences d'actions qu'un système ou  toute autre entité peut accomplir en interagissant avec les acteurs du  système.  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supplément sur UC (2) User Stories et Use Cases formalisent  les besoins utilisateurs  et sont  orientés But Ils font facilement l'objet  d'ateliers de travail avec les utilisateurs   pour les découvrir, les expliciter Ils vont être  priorisés  et vont ainsi  guider les développements Ils mettent en avant les rôles, les différents  profils d'utilisateurs Ils ne traitent que des  exigences fonctionnelles  (les aspects non  fonctionnels sont décrits dans les spécifications supplémentaires (contexte UP) et dans les &quot;Constraints Cards&quot; (contexte XP)) Ils sont  textuels  et obéissent à des règles de construction très précises  Ils ne traitent pas des  aspects interface et ergonomie Ils aident à organiser le modèle Ils facilitent le choix du contenu des itérations Ils peuvent être rédigés par les analystes (UC) ou le client (US)
Business use case La première étape de la définition d’un système d’information consiste donc à s’interroger sur   l’organisation (l’entreprise)  pour laquelle ce système d’information fonctionne, sur son identité, sur  ce qui en fait partie et sur ce qui n’en fait pas partie business  actor1 business use-case realization business entity business  actor business worker business use case
Business use case Une extension UML Que fait l’entreprise Comment fait l’entreprise Sur quoi travaille l’entreprise Qui travaille dans l’entreprise business  actor1 business use-case realization business entity business  actor business worker business use case Qui utilise l’entreprise Qui est utilisé par  l’entreprise (en externe)
Business use case : Ex2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La notation UML Diagramme de classe
Diagramme de classe ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Un diagramme de classe montre la structure  statique du modèle, les choses qui existent, leur structure interne et les relations aux autres choses.
Diagramme de classe Les classes Abstrait Nom : type [= Initialisation] Syntaxe libre Attribut dérivé Attribut de classe Opération de classe Responsabilité {abstract}
Les classes : Génération de code
Diagramme de classe Représentation des classes
Diagramme de classe Héritage et agrégation 1 0..32 0..32 Composition Agrégation Héritage Cardinalité multiplicité Héritage = Est un Composition et Agrégation = Est composé de
De quoi hérite -t-on ? [ PAM-97 p55 ]
Généralisation multiple (1) ,[object Object],[ PAM-00 p52 ]
Généralisation multiple (2) ,[object Object],[object Object],[object Object]
Classification dynamique [ PAM-00 p58 ]
L’héritage ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conflit de noms [ PAM-00 p60 ]
Les classes abstraites ,[object Object],[object Object],[ PAM-00 p146 ]
Les interfaces
Finalité des interfaces [ PAM-00 p120 ] ,[object Object],[object Object]
Finalité et réalisation des interfaces
Finalité et réalisation des interfaces ,[object Object]
Le polymorphisme [ PAM-00 p63 ]
Les associations ,[object Object]
Diagramme de classe : Associations  Nom d'association Nom de rôle Cardinalité-Multiplicité Personne employeur : Societe Societe employe : ListeOfPersonne Navigabilité Societe Personne 1..* -employes 1..* Societe employes : Personne Personne
Association réflexive
Qualité des associations ,[object Object],[object Object],[object Object]
Diagramme de classe Classe d'association Où mettre le salaire??? La classe ContratTravail est une classe normale qui peut hériter, être associée à d'autres classes, …. L'association et la classe ne  forme qu'un élément
Diagramme de classe Associations exclusives Contraintes
Les qualificateurs (1) ,[object Object],[object Object]
Les qualificateurs (2) ,[object Object],[object Object]
Les qualificateurs (3) ,[object Object]
Trouver un qualificateur?
qualificateur
Association : Génération du code
Diagramme de classe Dépendance Depenser i = Banque::GetInstance()->DonnerSolde(); Acheter(i); Voler b = new Banque(); i = b->DonnerSolde(); Economiser (p : Banque) p->Deposer(10000);
Les classes paramétrées
Diagramme de classe Exo3
Diagramme de packages
Diagramme de packages On peut montrer ce qu’il y a à l’intérieur du package Une classe appartient à un package et un seule, mais peut être utilisée dans d'autres package. Un  package  est un  regroupement  des éléments  du model. Cela s’applique à tous les éléments UML ainsi qu’aux différents diagrammes. Les packages sont la base de la gestion de configuration P.13
Notion de package ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Packages et dépendances ,[object Object],[object Object],[object Object],[object Object]
Packages et dépendances(1)
Organisation des packages RMQ  : On peut rajouter des classes P-AB1B2 P-CD
Trouver trois packages et les relations
Trouver trois packages et les relations (suite) K L A B I E J G D H C F
Trouver trois packages et les relations (suite) K L A B I E J G D H C F p1 P2 P3 Design Pattern Façade
Dépendances circulaires (Pb)
Dépendances circulaires (Solution) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dépendances circulaires (Solution) Rmq : si il y a des méthodes différentes, alors faire plusieurs interfaces
Dépendances circulaires (RMQ 1) Rmq1 : L'objet A ne doit pas créer l'objet B Rmq2 : L'objet B ne doit pas créer l'objet A Rmq3 : Si nécessaire, on peut laisser l'un des deux Rmq1 Rmq2
Dépendances circulaires (RMQ 1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dépendances circulaires (RMQ 1) op1 fqq fqq() A::AddMonB(FqqAble p) B::AddMonA(FqqAble p)
Conclusion sur les dépendances ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Simple Luxueux
Notion de stéréotypes Un stéréotype est une nouvelle classe d’un élément de  modélisation qui est introduit au moment de la  modélisation. Cela représente une sous classe d’un élément de modélisation existant avec la même forme, mais avec une intention différente. ,[object Object],[object Object],[object Object],[object Object]
Notion de stéréotypes(2) ,[object Object],[object Object]
Diagramme de classe Boundary-Controleur-Entité (1) Environnement Métier Fonctionnel B C E Fonctionnel Métier Environnement
Diagramme de classe Boundary-Contrôleur-Entité (2)
Diagramme de classe Boundary-Contrôleur-Entité (2)
Diagramme de classe Exo4 Immeuble Famille Appartement Pièce Cuisine Salon Gardemanger Chien Chat Animal Locataire Proprietaire Nourriture Lapin Whisky Mariage CompteBanquaire Personne
Diagramme de classe Exo4 Immeuble Famille Appartement Pièce Cuisine Salon Gardemanger Chien Chat Animal Locataire Proprietaire Nourriture Lapin Whisky Mariage CompteBanquaire Personne
Diagramme de classe Exo5
La notation UML Diagramme d'objets
Diagramme d'objets ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Rmq  : aucune information  sur les liens (cardinalité, rôle, navigation, ….)
Diagramme d'objets Exo5 ,[object Object],[object Object],[object Object],[object Object],Reprendre le résultat de l'Exo4 et faire les diagrammes d'objets correspondants Modifier éventuellement le diagramme de classe Locataire proprio
La notation UML Diagrammes dynamiques
Diagramme dynamique ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Diagramme de Séquence new
Diagramme de Communication Collaboration
Diagramme de communication
Diag. de Séquence :Navigation
Diagramme de communication  Génération de code
Diagramme de Séquence (UML2.0)
Diagramme d'interaction Exo6 Avant Après ,[object Object],[object Object],[object Object]
Automate ,[object Object],[object Object],[object Object]
Automate État & Transition Événement qui déclenche la transition Garde Action effectuée sur la transition Envoie de Ev2 à un objet Cible Action en entrant dans l'état Action en sortant de l'état Action déclenchée sur réception de Ev1 Activité
Automate imbriqué
Représentation d'un automate imbriqué
Automate:état historique profond
Automate :point de Jonction(1)
Automate :point de Jonction(2)
Automate :point de décision
Automate Parallèle ,[object Object]
Automate : exo7 E1 E3 E1 E3 E1 E2 E1 E2 E3   E1 ST1 entry: i  = 0 exit: i++ ST2 entry: i++ exit: i++ on E4: i ++ E1 / i++ ST3 ST4 on E2: i  = i - 2 E3[ i == 5 ] E2 E1 E1 E3 E3
Diagramme d'activité(1)
Diagramme d'activité(2)
Diagramme d'activité : nœud d'objet avec état
La notation UML Les autres diagrammes
Diagramme de composants (1)
Diagramme de composants (2)
Diagramme de composants (3)
Diagramme de déploiement(1)
Diagramme de déploiement(2)
Structure Composite :le problème
Structure Composite : exemple
Diagramme de temps
Vue d'ensemble des interactions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La notation UML Utilisation des diagrammes
Importance des diagrammes
La notation UML Les diagrammes (1) ==> Les fonctionnalités vues de l'extérieure du  système ==> Les choses qui existent à l'intérieure du système ==> Distribution des fonctionnalités aux choses qui existent. Découverte des opérations des classes, de nouvelles  classes, …. Diagramme d'activité ==> Description des opérations complexes Diagramme de UC Diagramme de classe Diagramme d'interaction
La notation UML Les diagrammes (2) Diagramme  Automate ==> Comportement des classes  complexes ==> Validation des diagrammes de classe ==> Description des fichiers contenant  l'application (source, exe, …) ==> Les machines supportant l'application Diagramme d'instance Diagramme de composants Diagramme de déploiement
Cinématique des diagrammes UML Interaction Diagram Requirements Sequence Collaboration Use Cases GUI Class diagram State Activity Implementation Component Deployment Code Code Code Code Tests
La démarche Process Process Qui Quoi Quand Méthode Comment Langage Avec quoi UML Outils Hommes UP XP: Binôme TD Scrum
Processus en V V Winston Royce Addison Wesley
Processus en Y ,[object Object],[object Object],[object Object],[object Object],[object Object],Y ,[object Object]
Un processus  itératif et incrémental (I) ,[object Object],Conceptualisation Analyse Architecture Définition des  incréments Conception Implémentation
Processus en Y Les phases ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conceptualisation (1) ,[object Object],[object Object],[object Object],[object Object],ExpertMetier ExpertObjet Train Oméoplasmose Sténotype Classe Polymorphisme Relinker Langage commun
Conceptualisation (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Analyse ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conception ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],RMQ : Ne pas refaire ce qu’a fait l’architecte
Processus : le RUP : Historique
Processus : le RUP Unify Process (Énorme process pour tous) RUP Rational Unify Process  Process customisé à partir du UP C'est un outil (site web, customisable) Custom AirFranceUP ,[object Object],[object Object],[object Object],[object Object]
Processus : le RUP Les phases
Processus : le RUP Analyse et conception Mettre en place les mécanismes de persistance Méthode Concepteur BD Concepteur Analyste Architecte Architecte Architecte Trouver et spécifier avec des responsabilités les classes Boundary-Control et entité Trouver les abstractions clés Faire le mapping objet BDR
Méthode ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Méthode Persistance (1) Mapping objet vers Table relationnelle fait automatiquement par les outils (choix de l'architecte) T_B a c T_B_ID b 50 Raymonde 0 1 55 Casta 1 1 45 Simone 2 1 T_A a c T_A_ID b 55 Robert 0 0 60 Haddock 1 0 35 0 Tintin 2 T_0 T_A_ID T_B_ID 0 1 0 1 1 0 0 2
Méthode Persistance (2) Data Modeler
Processus Light XP Process Agile RAD Programmation visuelle TV4IT : Pourquoi le poste de développeur est déconsidéré en France Eric Groise
Design patterns
Classification des patterns Création Comportement Structure
Les Design patterns de comportement (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les Design patterns de comportement (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
State : UML Client Etat +Op1(Context) +Op2(Context) +Op3(Context) * Etat1 +Op1(Context) +Op2(Context) Etat2 +Op2(Context) +Op3(Context)
State + Singleton
Stratègie : UML
Patron de méthode
l’Observer : UML Réutilisable Rmq : souvent UpDate contient des paramètres (evt, le sujet, l'état du sujet, …)
l ’Observer : la dynamique
Visitor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Visitor : UML
Mémento : UML La classe à surveiller-----La mémoire----Le programme client (main)  UnDo-ReDo
Itérateur: UML
Chain of Resp : Exemple Président <100000 Vice-président <25000 Directeur <10000 Comité >=100000 Director grouillot = new Director();  VicePresident Sam = new VicePresident();  President Tammy = new President();  Grouillot.SetSuccessor(Sam);  Sam.SetSuccessor(Tammy);  Purchase p = new Purchase( 350.00, &quot;Formation&quot;);  Grouillot.ProcessRequest(p);  p = new Purchase( 24000, &quot;Voiture&quot;);  Grouillot.ProcessRequest(p); p =new Purchase ( 99000, &quot;Maison&quot;); Grouillot.ProcessRequest(p); p = new Purchase( 122100.00, &quot;Usine&quot;);  Grouillot.ProcessRequest(p);  U M V F
Command : UML Configurateur Utilisateur
Mediator : UML Mediator ConcreteMediator Colleague +mediator bouton liste textArea Controleur menu Rmq :Façade-Observer
Les Design patterns de Structure  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Proxy : UML Proxy.Operation1() { fait qqchose….. leSujet.Operation1();} Proxy.Proxy(Sujet param){ leSujet = param;}
Decorator : UML Decorateur.Operation(): fait qq chose super.Operation() Cela revient à rajouter une responsabilité à une classe mais sans en changer l'interface.  Comparer avec le composite ComposantConcret.Operation :  fin de la chaîne Decorateur.Operation() : monComposant.Operation()
l ’Adaptateur : Uml et Exemple
Composite : Le contexte & UML ,[object Object],[object Object],[object Object],[object Object],Comparer avec le décorateur
Façade : UML
Flyweight : Poids mouche :UML Utilisation :  beaucoup de petits objets à se partager à plusieurs. Exemple : les caractères d'un document   PluriGleton
Bridge : UML Rmq : ressemble au state
Les Design patterns de Création  ,[object Object],[object Object],[object Object],[object Object],[object Object]
Le singleton uml
Fabrication : le Design pattern
Fabrication Abstraite : motivation Application IHM Motif IHM windows Application IHM IHM Motif IHM windows L’application utilise IHM sans savoir si il s ’agit de Motif ou bien de Windows
Fabrication Abstraite : Structure Application <<instancie>>
Builder : UML
Prototype ,[object Object],[object Object],[object Object],[object Object],[object Object]
Etude de cas
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],UML : Bibliographie
UML : Bibliographie (suite)
WWW CETUS
Autres sites web http://www.numbersix.com/ http://www.m2tech.net/
Corrections des exercices
Use Case : Correction Ex1
Use Case : Correction Ex1
UC :  Secrétaire
UC: Détails
UC: Suppléments
IHM : Secrétaire
UC Web
 
 
 
 
UC : Requirements
Business use case : Correction Ex2 (1) Business Actor Business Worker ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Business use case : Correction Ex2 (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Business Entité Business use case
Diagramme de classe Correction Exo3 (1)
Diagramme de classe Correction Exo3 (2) {or} Construction ContratSimple ContratDouble Contrat Vehicule Maison Couple Roue Personne 0..* 0..* 2 2 Entreprise Voiture 4 4
Diagramme de classe Correction Exo4
Diagramme d'objets  Correction Exo5 (1) Famille : Tintin & Milou, locataire
Diagramme d'objets  Correction Exo5 (2) Haddock qui boit du whisky est  marié à la Castafiore et est  propriétaire de Moulinsart ????????
Diagramme d'objets  Correction Exo5 (3) Haddock qui boit du whisky est  marié à la Castafiore et est  propriétaire de Moulinsart
Diagramme d'objets  Correction Exo5 (4) Tournesol est locataire d’une  partie de Moulinsart
Diagramme d'interaction Correction Exo6 (1)
Diagramme d'interaction Correction Exo6 (2)
Diagramme d'interaction Correction Exo6 (3)
Les développeurs Français Comment revaloriser le métier d'informaticien et d'ingénieur ? Je crois qu'il est important de mieux expliquer ce qu'est le logiciel. Car c'est encore trop  abstrait pour beaucoup de monde. Il faut expliquer que c'est une  véritable industrie  (qui  demande donc des investissements et une approche industrielle..) mais également en quelque  sorte  un art  (car les talents sont clés). Ensuite il faut rappeler qu'il y aura plus d'innovation dans les 30 ans qui viennent que dans  les 30 ans passés - et que nous sommes donc au cœur d'une industrie qui va générer de la  croissance et des emplois . Enfin il faudrait refaire rêver sur les perspectives d'une carrière dans l'informatique et  revaloriser les filières techniques . Nous avons chez Microsoft des architectes logiciels qui  sont à des niveaux hiérarchiques supérieurs à des managers de grandes divisions. Cette  révolution &quot;culturelle&quot; n'a pas encore eu lieu en France mais nous sommes optimistes.
Supplément sur UC : User Story ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supplément sur UC (1) Un &quot; Use case &quot; modélise un service rendu par le système. Il  représente un ensemble de séquences d'actions qu'un système ou  toute autre entité peut accomplir en interagissant avec les acteurs du  système.  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Supplément sur UC (2) User Stories et Use Cases formalisent  les besoins utilisateurs  et sont  orientés But Ils font facilement l'objet  d'ateliers de travail avec les utilisateurs   pour les découvrir, les expliciter Ils vont être  priorisés  et vont ainsi  guider les développements Ils mettent en avant les rôles, les différents  profils d'utilisateurs Ils ne traitent que des  exigences fonctionnelles  (les aspects non  fonctionnels sont décrits dans les spécifications supplémentaires (contexte UP) et dans les &quot;Constraints Cards&quot; (contexte XP)) Ils sont  textuels  et obéissent à des règles de construction très précises  Ils ne traitent pas des  aspects interface et ergonomie Ils aident à organiser le modèle Ils facilitent le choix du contenu des itérations Ils peuvent être rédigés par les analystes (UC) ou le client (US)
Supplément sur UC (3)
Le robot Correction
Le robot correction : les UC
Le robot correction : les UC : jouer(1)
Le robot correction : les UC : jouer(2)
Le robot correction : les UC : Deplacer
Le robot correction : les UC : Prendre
Le robot correction : les UC : Deposer
Le robot correction : les UC : Attaquer
Le robot correction : les UC : IHM
 
 

Contenu connexe

Tendances

Uml
UmlUml
013 mediha cgi - sensibilisation uml
013   mediha cgi - sensibilisation uml013   mediha cgi - sensibilisation uml
013 mediha cgi - sensibilisation umlAbdessamad Hamouch
 
Cours uml
Cours umlCours uml
Cours uml
zimamouche1
 
Introduction rapide à 'objet et à UML
Introduction rapide à 'objet et  à UML Introduction rapide à 'objet et  à UML
Introduction rapide à 'objet et à UML
Mireille Blay-Fornarino
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
Amir Souissi
 
Modeliser une application_web
Modeliser une application_webModeliser une application_web
Modeliser une application_web
Moez Moezm
 
Les limites-de-l uml (1)
Les limites-de-l uml (1)Les limites-de-l uml (1)
Les limites-de-l uml (1)
Samah Dekhil
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
agnes_crepet
 
Tp3 - UML
Tp3 - UMLTp3 - UML
Tp3 - UML
Lilia Sfaxi
 
Seminaire Borland UML (2003)
Seminaire Borland UML (2003)Seminaire Borland UML (2003)
Seminaire Borland UML (2003)
Pascal Roques
 
Chp4 - UML
Chp4 - UMLChp4 - UML
Chp4 - UML
Lilia Sfaxi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
Amir Souissi
 

Tendances (19)

Uml
UmlUml
Uml
 
013 mediha cgi - sensibilisation uml
013   mediha cgi - sensibilisation uml013   mediha cgi - sensibilisation uml
013 mediha cgi - sensibilisation uml
 
CM uml-diag-dynamiques-interaction
CM uml-diag-dynamiques-interactionCM uml-diag-dynamiques-interaction
CM uml-diag-dynamiques-interaction
 
Cours uml
Cours umlCours uml
Cours uml
 
Introduction rapide à 'objet et à UML
Introduction rapide à 'objet et  à UML Introduction rapide à 'objet et  à UML
Introduction rapide à 'objet et à UML
 
Manuel uml-poweramc
Manuel uml-poweramcManuel uml-poweramc
Manuel uml-poweramc
 
Uml
UmlUml
Uml
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Modeliser une application_web
Modeliser une application_webModeliser une application_web
Modeliser une application_web
 
CM uml-concepts-avances
CM uml-concepts-avancesCM uml-concepts-avances
CM uml-concepts-avances
 
Les limites-de-l uml (1)
Les limites-de-l uml (1)Les limites-de-l uml (1)
Les limites-de-l uml (1)
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
 
Tp3 - UML
Tp3 - UMLTp3 - UML
Tp3 - UML
 
Seminaire Borland UML (2003)
Seminaire Borland UML (2003)Seminaire Borland UML (2003)
Seminaire Borland UML (2003)
 
Chp4 - UML
Chp4 - UMLChp4 - UML
Chp4 - UML
 
CM uml-diag-statiques
CM uml-diag-statiquesCM uml-diag-statiques
CM uml-diag-statiques
 
7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 

En vedette

Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
Mireille Blay-Fornarino
 
Wbs website
Wbs website Wbs website
Wbs website
Stefan Csosz
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec Symfony
Mohammed Rhamnia
 
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
Caféine.Studio
 
Une Approche d'aide pour l'analyse des besoins informationnels dans les pme
Une Approche d'aide pour l'analyse des besoins informationnels dans les pmeUne Approche d'aide pour l'analyse des besoins informationnels dans les pme
Une Approche d'aide pour l'analyse des besoins informationnels dans les pme
espenel
 
Resilient manager-gary-hogman-111025
Resilient manager-gary-hogman-111025Resilient manager-gary-hogman-111025
Resilient manager-gary-hogman-111025
Chartered Management Institute
 
Nigel Girling launches National Centre for Strategic Leadership
Nigel Girling launches National Centre for Strategic LeadershipNigel Girling launches National Centre for Strategic Leadership
Nigel Girling launches National Centre for Strategic Leadership
Chartered Management Institute
 
L'analyse du Besoin, c'est HAS-BEEN
L'analyse du Besoin, c'est HAS-BEENL'analyse du Besoin, c'est HAS-BEEN
L'analyse du Besoin, c'est HAS-BEEN
Vincent HOLLEY
 
Making Sense of API Access Control
Making Sense of API Access ControlMaking Sense of API Access Control
Making Sense of API Access Control
CA API Management
 
UML
UMLUML
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
PMI-Montréal
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102MRamo2s
 
Conception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-locationConception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-location
ALALSYSE
 
Fiche 04a - Analyse des clientèles et de leurs besoins
Fiche 04a - Analyse des clientèles et de leurs besoinsFiche 04a - Analyse des clientèles et de leurs besoins
Fiche 04a - Analyse des clientèles et de leurs besoins
Social Business Models
 
Cours et TP Ms Project
Cours et TP Ms ProjectCours et TP Ms Project
Cours et TP Ms Projecthindif
 

En vedette (17)

Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Wbs website
Wbs website Wbs website
Wbs website
 
Design patterns avec Symfony
Design patterns avec SymfonyDesign patterns avec Symfony
Design patterns avec Symfony
 
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
Présentation du rapport intermédiaire de la recherche « MOOC Afrique : Analys...
 
Use Case examples
Use Case examplesUse Case examples
Use Case examples
 
Une Approche d'aide pour l'analyse des besoins informationnels dans les pme
Une Approche d'aide pour l'analyse des besoins informationnels dans les pmeUne Approche d'aide pour l'analyse des besoins informationnels dans les pme
Une Approche d'aide pour l'analyse des besoins informationnels dans les pme
 
Resilient manager-gary-hogman-111025
Resilient manager-gary-hogman-111025Resilient manager-gary-hogman-111025
Resilient manager-gary-hogman-111025
 
Nigel Girling launches National Centre for Strategic Leadership
Nigel Girling launches National Centre for Strategic LeadershipNigel Girling launches National Centre for Strategic Leadership
Nigel Girling launches National Centre for Strategic Leadership
 
L'analyse du Besoin, c'est HAS-BEEN
L'analyse du Besoin, c'est HAS-BEENL'analyse du Besoin, c'est HAS-BEEN
L'analyse du Besoin, c'est HAS-BEEN
 
Making Sense of API Access Control
Making Sense of API Access ControlMaking Sense of API Access Control
Making Sense of API Access Control
 
UML
UMLUML
UML
 
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
Symposium CONF. 102 L’analyse de la valeur : Processus de gestion des attente...
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102
 
Exposé 1
Exposé   1Exposé   1
Exposé 1
 
Conception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-locationConception et developpement d'une application mobile Android e-location
Conception et developpement d'une application mobile Android e-location
 
Fiche 04a - Analyse des clientèles et de leurs besoins
Fiche 04a - Analyse des clientèles et de leurs besoinsFiche 04a - Analyse des clientèles et de leurs besoins
Fiche 04a - Analyse des clientèles et de leurs besoins
 
Cours et TP Ms Project
Cours et TP Ms ProjectCours et TP Ms Project
Cours et TP Ms Project
 

Similaire à U M L Analyse Et Conception Objet

Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
VINOT Bernard
 
Definitiondesbesoinsuml
DefinitiondesbesoinsumlDefinitiondesbesoinsuml
Definitiondesbesoinsuml
VINOT Bernard
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
Zineb ELGARRAI
 
Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptx
PrinceLankoand
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
Sana Aroussi
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
Sana Aroussi
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
Aziz Darouichi
 
Devlog2013: SysML et Simulation (French)
Devlog2013: SysML et Simulation (French)Devlog2013: SysML et Simulation (French)
Devlog2013: SysML et Simulation (French)
Jean-Michel Bruel
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
Mohammed Zaoui
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
Aziz Darouichi
 
UML use case class2UML use case class2.ppt
UML use case class2UML use case class2.pptUML use case class2UML use case class2.ppt
UML use case class2UML use case class2.ppt
ryoko1935
 
UML use case class une presentation sur uml .ppt
UML use case class une presentation sur uml .pptUML use case class une presentation sur uml .ppt
UML use case class une presentation sur uml .ppt
ryoko1935
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
Amina HAMEURLAINE
 
Uml2 i formation-uml-2-les-bases
Uml2 i formation-uml-2-les-basesUml2 i formation-uml-2-les-bases
Uml2 i formation-uml-2-les-basesCERTyou Formation
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
LuneSabsPericolo1
 
Unified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFUnified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VF
cifaf13039
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
Johan Moreau
 

Similaire à U M L Analyse Et Conception Objet (20)

Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
Definitiondesbesoinsuml
DefinitiondesbesoinsumlDefinitiondesbesoinsuml
Definitiondesbesoinsuml
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptx
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Devlog2013: SysML et Simulation (French)
Devlog2013: SysML et Simulation (French)Devlog2013: SysML et Simulation (French)
Devlog2013: SysML et Simulation (French)
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
UML use case class2UML use case class2.ppt
UML use case class2UML use case class2.pptUML use case class2UML use case class2.ppt
UML use case class2UML use case class2.ppt
 
UML use case class une presentation sur uml .ppt
UML use case class une presentation sur uml .pptUML use case class une presentation sur uml .ppt
UML use case class une presentation sur uml .ppt
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
diagramme de cas d'utilisation
diagramme de cas d'utilisationdiagramme de cas d'utilisation
diagramme de cas d'utilisation
 
Apprentissage du java
Apprentissage du javaApprentissage du java
Apprentissage du java
 
CM uml-intro
CM uml-introCM uml-intro
CM uml-intro
 
Uml2 i formation-uml-2-les-bases
Uml2 i formation-uml-2-les-basesUml2 i formation-uml-2-les-bases
Uml2 i formation-uml-2-les-bases
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Unified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFUnified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VF
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 

U M L Analyse Et Conception Objet

  • 1. UML Analyse et Conception Objet (C++)
  • 2.
  • 3.
  • 6. Les symptômes de l'échec
  • 7.
  • 8. Les bénéfices des techniques OO From the corporate Use Of Object Technology
  • 9. OO Versus Dvp classique Dvp = 20% Maintenance = 50%
  • 10. C versus C++ en Maintenance
  • 11. Notion d'abstraction Classe Moule Seau ~ChateauDeSable() c'est le destructeur Constructeur Objet ChateauDeSable ChateauDeSable couleur : Bleu, Blanc, Rouge poids : int ChateauDeSable(p1 : Couleur, p2 : int)
  • 13. Un programme objet : Réutilisation
  • 14. Un Objet est Nain et Paresseux et snob !!!
  • 15. Un programme objet (2) Mere Run Bronzer Enfant Creer JchaiPasQuoiFaire FaisUnChateau ChateauDeSable Creer Garnir Casser JchaiPasQuoiFaire
  • 16. Un programme objet (3) ChateauDeSable Mere Run Bronzer Enfant JchaiPasQuoiFaire PrendreBain Delete
  • 17. Un programme objet (3) Mere Run Bronzer Enfant JchaiPasQuoiFaire PrendreBain Mer Creer AllerDans FaireVagues BoireTasse Crier
  • 18. Un programme objet (4) Mere Run Bronzer Enfant Mer Crier Delete
  • 19. Un programme objet (5) Fuite Mémoire Mere Run Bronzer Mer
  • 20. Un programme objet (6) Enfant College Lycée Enfant Enfant Enfant Usine
  • 21. Un programme objet (7) Enfant College Lycée Enfant Enfant Enfant Usine
  • 22. Un programme objet (8) Enfant College Lycée Enfant Enfant Enfant Usine
  • 23. Un programme objet persistant P P P P P P Enfant College Lycée Enfant Enfant Enfant Usine T T
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. Encapsulation Public : accessible par tout le monde Protected : accessible par l'objet et par les héritiers Private : accessible seulement par l'objet Les accesseurs : SetAttr et GetAttr
  • 30. Polymorphisme Un petit programme : Personne p; Dentiste d; Chirurgien c; p = d; p.Travailler(); p = c; p.Travailler(); Arracher des dents Opérer Faire du pain
  • 31. Les concepts d'une bonne conception Ouverture-Fermeture OCP Inversion des dépendances DIP Substitution de Liskov LSP Séparation des interfaces ISP
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43. La notation UML Introduction : notion de modèle
  • 44. Le but d ’UML Trouver les bons objets
  • 45. La modélisation : Pourquoi Une bonne société qui développe des programmes est celle qui fabrique des programmes de qualité qui satisfont les besoins des clients (livraison à temps, utilisation des ressources humaines et matérielles optimales) Le but principal n’est donc pas de produire de beaux documents, ni de conduire de nombreuses réunions, ni de proclamer de beaux slogans, ni de gagner des prix Pulitzer sur les lignes de code; mais simplement de produire des programmes capables de satisfaire le client aujourd’hui et demain. Tout le reste est secondaire UML-User Guide
  • 46.
  • 47.
  • 48. Les diagrammes UML + = = = +++ + + +++
  • 50. Un outil UML Navigateur Définitions Boutons génériques Boutons Spécifiques Les diagrammes Classe Use Case Composants
  • 51. Historique d'UML 2005 2.0 DOC-PDF UML1.3 = 4,7MB DOC-PDF UML2.0 = 5.8 MB 2006 2.1 Booch-93 Rumbaugh( OMT2) Oct-95 0.8 Jacobson (use case - sdl) Juillet-96 0.9 Janv-97 1.0 Nov-97 1.0 Sept-97 1.1 (OMG) 2000 1.4
  • 52. La notation UML Diagramme de Use case
  • 53.
  • 54. Diagramme de Use case Use Case Un Cas d’utilisation ( use case ) est une fonctionnalité remplie par le système et qui se manifeste par un ensemble de messages échangés entre le système et un ou plusieurs acteurs.
  • 55.
  • 56. Diagramme de Use case Description d'un Use Case Les scénarios
  • 57. Diagramme de Use case Payer cash Payer par carte Manger Demander facture Maitre d'hotel Prendre la commande client Aller au restaurant <<include>> <<include>> Caissier Payer <<include>> <<extend>> Sommelier Commander pinard <<extend>> Serveur Retourner plat en cuisine <<extend>>
  • 58. Utilisation des Use case Manger Distribuer le comportement des fonctionnalités aux méthodes des objets Descriptions
  • 59. Use Case : Ex1 Une société de vente par correspondance vous demande de développer son système informatique. Ce système doit pouvoir prendre en compte des commandes passées par la poste et des commandes passées par internet. Il doit suivre les expéditions qui ne sont effectuées que si le paiement est OK. Les paiements se font par carte bancaire dans le cas d'internet et par chèque dans le cas de la poste. Les paiements sont validés par un système bancaire appartenant à la société et existant. Il faut récupérer ce système. Le nouveau système est chargé aussi de la gestion de stocks, lorsqu'un article atteint un seuil minimal, alors il faut passer une nouvelle commande au fournisseur adéquat. A la réception de la commande, la mise à jour de la base est faite par un employé. Dans le cas d'un paiement accepté et de stock disponible, l'expédition est faite par un robot existant au quel il suffit de passer les coordonnées du client, et la liste des produits achetés. En cas d'indisponibilité, une lettre doit être envoyé au client. Correction
  • 60.
  • 61.
  • 62. Supplément sur UC (2) User Stories et Use Cases formalisent les besoins utilisateurs et sont orientés But Ils font facilement l'objet d'ateliers de travail avec les utilisateurs pour les découvrir, les expliciter Ils vont être priorisés et vont ainsi guider les développements Ils mettent en avant les rôles, les différents profils d'utilisateurs Ils ne traitent que des exigences fonctionnelles (les aspects non fonctionnels sont décrits dans les spécifications supplémentaires (contexte UP) et dans les &quot;Constraints Cards&quot; (contexte XP)) Ils sont textuels et obéissent à des règles de construction très précises Ils ne traitent pas des aspects interface et ergonomie Ils aident à organiser le modèle Ils facilitent le choix du contenu des itérations Ils peuvent être rédigés par les analystes (UC) ou le client (US)
  • 63. Business use case La première étape de la définition d’un système d’information consiste donc à s’interroger sur   l’organisation (l’entreprise) pour laquelle ce système d’information fonctionne, sur son identité, sur ce qui en fait partie et sur ce qui n’en fait pas partie business actor1 business use-case realization business entity business actor business worker business use case
  • 64. Business use case Une extension UML Que fait l’entreprise Comment fait l’entreprise Sur quoi travaille l’entreprise Qui travaille dans l’entreprise business actor1 business use-case realization business entity business actor business worker business use case Qui utilise l’entreprise Qui est utilisé par  l’entreprise (en externe)
  • 65.
  • 66. La notation UML Diagramme de classe
  • 67.
  • 68. Diagramme de classe Les classes Abstrait Nom : type [= Initialisation] Syntaxe libre Attribut dérivé Attribut de classe Opération de classe Responsabilité {abstract}
  • 69. Les classes : Génération de code
  • 70. Diagramme de classe Représentation des classes
  • 71. Diagramme de classe Héritage et agrégation 1 0..32 0..32 Composition Agrégation Héritage Cardinalité multiplicité Héritage = Est un Composition et Agrégation = Est composé de
  • 72. De quoi hérite -t-on ? [ PAM-97 p55 ]
  • 73.
  • 74.
  • 76.
  • 77. Conflit de noms [ PAM-00 p60 ]
  • 78.
  • 80.
  • 81. Finalité et réalisation des interfaces
  • 82.
  • 83. Le polymorphisme [ PAM-00 p63 ]
  • 84.
  • 85. Diagramme de classe : Associations Nom d'association Nom de rôle Cardinalité-Multiplicité Personne employeur : Societe Societe employe : ListeOfPersonne Navigabilité Societe Personne 1..* -employes 1..* Societe employes : Personne Personne
  • 87.
  • 88. Diagramme de classe Classe d'association Où mettre le salaire??? La classe ContratTravail est une classe normale qui peut hériter, être associée à d'autres classes, …. L'association et la classe ne forme qu'un élément
  • 89. Diagramme de classe Associations exclusives Contraintes
  • 90.
  • 91.
  • 92.
  • 96. Diagramme de classe Dépendance Depenser i = Banque::GetInstance()->DonnerSolde(); Acheter(i); Voler b = new Banque(); i = b->DonnerSolde(); Economiser (p : Banque) p->Deposer(10000);
  • 100. Diagramme de packages On peut montrer ce qu’il y a à l’intérieur du package Une classe appartient à un package et un seule, mais peut être utilisée dans d'autres package. Un package est un regroupement des éléments du model. Cela s’applique à tous les éléments UML ainsi qu’aux différents diagrammes. Les packages sont la base de la gestion de configuration P.13
  • 101.
  • 102.
  • 104. Organisation des packages RMQ : On peut rajouter des classes P-AB1B2 P-CD
  • 105. Trouver trois packages et les relations
  • 106. Trouver trois packages et les relations (suite) K L A B I E J G D H C F
  • 107. Trouver trois packages et les relations (suite) K L A B I E J G D H C F p1 P2 P3 Design Pattern Façade
  • 109.
  • 110. Dépendances circulaires (Solution) Rmq : si il y a des méthodes différentes, alors faire plusieurs interfaces
  • 111. Dépendances circulaires (RMQ 1) Rmq1 : L'objet A ne doit pas créer l'objet B Rmq2 : L'objet B ne doit pas créer l'objet A Rmq3 : Si nécessaire, on peut laisser l'un des deux Rmq1 Rmq2
  • 112.
  • 113. Dépendances circulaires (RMQ 1) op1 fqq fqq() A::AddMonB(FqqAble p) B::AddMonA(FqqAble p)
  • 114.
  • 115.
  • 116.
  • 117. Diagramme de classe Boundary-Controleur-Entité (1) Environnement Métier Fonctionnel B C E Fonctionnel Métier Environnement
  • 118. Diagramme de classe Boundary-Contrôleur-Entité (2)
  • 119. Diagramme de classe Boundary-Contrôleur-Entité (2)
  • 120. Diagramme de classe Exo4 Immeuble Famille Appartement Pièce Cuisine Salon Gardemanger Chien Chat Animal Locataire Proprietaire Nourriture Lapin Whisky Mariage CompteBanquaire Personne
  • 121. Diagramme de classe Exo4 Immeuble Famille Appartement Pièce Cuisine Salon Gardemanger Chien Chat Animal Locataire Proprietaire Nourriture Lapin Whisky Mariage CompteBanquaire Personne
  • 123. La notation UML Diagramme d'objets
  • 124.
  • 125.
  • 126. La notation UML Diagrammes dynamiques
  • 127.
  • 129. Diagramme de Communication Collaboration
  • 131. Diag. de Séquence :Navigation
  • 132. Diagramme de communication Génération de code
  • 134.
  • 135.
  • 136. Automate État & Transition Événement qui déclenche la transition Garde Action effectuée sur la transition Envoie de Ev2 à un objet Cible Action en entrant dans l'état Action en sortant de l'état Action déclenchée sur réception de Ev1 Activité
  • 140. Automate :point de Jonction(1)
  • 141. Automate :point de Jonction(2)
  • 142. Automate :point de décision
  • 143.
  • 144. Automate : exo7 E1 E3 E1 E3 E1 E2 E1 E2 E3 E1 ST1 entry: i = 0 exit: i++ ST2 entry: i++ exit: i++ on E4: i ++ E1 / i++ ST3 ST4 on E2: i = i - 2 E3[ i == 5 ] E2 E1 E1 E3 E3
  • 147. Diagramme d'activité : nœud d'objet avec état
  • 148. La notation UML Les autres diagrammes
  • 157.
  • 158. La notation UML Utilisation des diagrammes
  • 160. La notation UML Les diagrammes (1) ==> Les fonctionnalités vues de l'extérieure du système ==> Les choses qui existent à l'intérieure du système ==> Distribution des fonctionnalités aux choses qui existent. Découverte des opérations des classes, de nouvelles classes, …. Diagramme d'activité ==> Description des opérations complexes Diagramme de UC Diagramme de classe Diagramme d'interaction
  • 161. La notation UML Les diagrammes (2) Diagramme Automate ==> Comportement des classes complexes ==> Validation des diagrammes de classe ==> Description des fichiers contenant l'application (source, exe, …) ==> Les machines supportant l'application Diagramme d'instance Diagramme de composants Diagramme de déploiement
  • 162. Cinématique des diagrammes UML Interaction Diagram Requirements Sequence Collaboration Use Cases GUI Class diagram State Activity Implementation Component Deployment Code Code Code Code Tests
  • 163. La démarche Process Process Qui Quoi Quand Méthode Comment Langage Avec quoi UML Outils Hommes UP XP: Binôme TD Scrum
  • 164. Processus en V V Winston Royce Addison Wesley
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 172.
  • 173.
  • 174. Processus : le RUP : Historique
  • 175.
  • 176. Processus : le RUP Les phases
  • 177. Processus : le RUP Analyse et conception Mettre en place les mécanismes de persistance Méthode Concepteur BD Concepteur Analyste Architecte Architecte Architecte Trouver et spécifier avec des responsabilités les classes Boundary-Control et entité Trouver les abstractions clés Faire le mapping objet BDR
  • 178.
  • 179. Méthode Persistance (1) Mapping objet vers Table relationnelle fait automatiquement par les outils (choix de l'architecte) T_B a c T_B_ID b 50 Raymonde 0 1 55 Casta 1 1 45 Simone 2 1 T_A a c T_A_ID b 55 Robert 0 0 60 Haddock 1 0 35 0 Tintin 2 T_0 T_A_ID T_B_ID 0 1 0 1 1 0 0 2
  • 180. Méthode Persistance (2) Data Modeler
  • 181. Processus Light XP Process Agile RAD Programmation visuelle TV4IT : Pourquoi le poste de développeur est déconsidéré en France Eric Groise
  • 183. Classification des patterns Création Comportement Structure
  • 184.
  • 185.
  • 186. State : UML Client Etat +Op1(Context) +Op2(Context) +Op3(Context) * Etat1 +Op1(Context) +Op2(Context) Etat2 +Op2(Context) +Op3(Context)
  • 190. l’Observer : UML Réutilisable Rmq : souvent UpDate contient des paramètres (evt, le sujet, l'état du sujet, …)
  • 191. l ’Observer : la dynamique
  • 192.
  • 194. Mémento : UML La classe à surveiller-----La mémoire----Le programme client (main) UnDo-ReDo
  • 196. Chain of Resp : Exemple Président <100000 Vice-président <25000 Directeur <10000 Comité >=100000 Director grouillot = new Director(); VicePresident Sam = new VicePresident(); President Tammy = new President(); Grouillot.SetSuccessor(Sam); Sam.SetSuccessor(Tammy); Purchase p = new Purchase( 350.00, &quot;Formation&quot;); Grouillot.ProcessRequest(p); p = new Purchase( 24000, &quot;Voiture&quot;); Grouillot.ProcessRequest(p); p =new Purchase ( 99000, &quot;Maison&quot;); Grouillot.ProcessRequest(p); p = new Purchase( 122100.00, &quot;Usine&quot;); Grouillot.ProcessRequest(p); U M V F
  • 197. Command : UML Configurateur Utilisateur
  • 198. Mediator : UML Mediator ConcreteMediator Colleague +mediator bouton liste textArea Controleur menu Rmq :Façade-Observer
  • 199.
  • 200. Proxy : UML Proxy.Operation1() { fait qqchose….. leSujet.Operation1();} Proxy.Proxy(Sujet param){ leSujet = param;}
  • 201. Decorator : UML Decorateur.Operation(): fait qq chose super.Operation() Cela revient à rajouter une responsabilité à une classe mais sans en changer l'interface. Comparer avec le composite ComposantConcret.Operation : fin de la chaîne Decorateur.Operation() : monComposant.Operation()
  • 202. l ’Adaptateur : Uml et Exemple
  • 203.
  • 205. Flyweight : Poids mouche :UML Utilisation : beaucoup de petits objets à se partager à plusieurs. Exemple : les caractères d'un document PluriGleton
  • 206. Bridge : UML Rmq : ressemble au state
  • 207.
  • 209. Fabrication : le Design pattern
  • 210. Fabrication Abstraite : motivation Application IHM Motif IHM windows Application IHM IHM Motif IHM windows L’application utilise IHM sans savoir si il s ’agit de Motif ou bien de Windows
  • 211. Fabrication Abstraite : Structure Application <<instancie>>
  • 213.
  • 215.
  • 218. Autres sites web http://www.numbersix.com/ http://www.m2tech.net/
  • 220. Use Case : Correction Ex1
  • 221. Use Case : Correction Ex1
  • 222. UC : Secrétaire
  • 226. UC Web
  • 227.  
  • 228.  
  • 229.  
  • 230.  
  • 232.
  • 233.
  • 234. Diagramme de classe Correction Exo3 (1)
  • 235. Diagramme de classe Correction Exo3 (2) {or} Construction ContratSimple ContratDouble Contrat Vehicule Maison Couple Roue Personne 0..* 0..* 2 2 Entreprise Voiture 4 4
  • 236. Diagramme de classe Correction Exo4
  • 237. Diagramme d'objets Correction Exo5 (1) Famille : Tintin & Milou, locataire
  • 238. Diagramme d'objets Correction Exo5 (2) Haddock qui boit du whisky est marié à la Castafiore et est propriétaire de Moulinsart ????????
  • 239. Diagramme d'objets Correction Exo5 (3) Haddock qui boit du whisky est marié à la Castafiore et est propriétaire de Moulinsart
  • 240. Diagramme d'objets Correction Exo5 (4) Tournesol est locataire d’une partie de Moulinsart
  • 244. Les développeurs Français Comment revaloriser le métier d'informaticien et d'ingénieur ? Je crois qu'il est important de mieux expliquer ce qu'est le logiciel. Car c'est encore trop abstrait pour beaucoup de monde. Il faut expliquer que c'est une véritable industrie (qui demande donc des investissements et une approche industrielle..) mais également en quelque sorte un art (car les talents sont clés). Ensuite il faut rappeler qu'il y aura plus d'innovation dans les 30 ans qui viennent que dans les 30 ans passés - et que nous sommes donc au cœur d'une industrie qui va générer de la croissance et des emplois . Enfin il faudrait refaire rêver sur les perspectives d'une carrière dans l'informatique et revaloriser les filières techniques . Nous avons chez Microsoft des architectes logiciels qui sont à des niveaux hiérarchiques supérieurs à des managers de grandes divisions. Cette révolution &quot;culturelle&quot; n'a pas encore eu lieu en France mais nous sommes optimistes.
  • 245.
  • 246.
  • 247. Supplément sur UC (2) User Stories et Use Cases formalisent les besoins utilisateurs et sont orientés But Ils font facilement l'objet d'ateliers de travail avec les utilisateurs pour les découvrir, les expliciter Ils vont être priorisés et vont ainsi guider les développements Ils mettent en avant les rôles, les différents profils d'utilisateurs Ils ne traitent que des exigences fonctionnelles (les aspects non fonctionnels sont décrits dans les spécifications supplémentaires (contexte UP) et dans les &quot;Constraints Cards&quot; (contexte XP)) Ils sont textuels et obéissent à des règles de construction très précises Ils ne traitent pas des aspects interface et ergonomie Ils aident à organiser le modèle Ils facilitent le choix du contenu des itérations Ils peuvent être rédigés par les analystes (UC) ou le client (US)
  • 250. Le robot correction : les UC
  • 251. Le robot correction : les UC : jouer(1)
  • 252. Le robot correction : les UC : jouer(2)
  • 253. Le robot correction : les UC : Deplacer
  • 254. Le robot correction : les UC : Prendre
  • 255. Le robot correction : les UC : Deposer
  • 256. Le robot correction : les UC : Attaquer
  • 257. Le robot correction : les UC : IHM
  • 258.  
  • 259.  

Notes de l'éditeur

  1. Nous nous inspirons de l’exemple de la figure 70 pour réaliser une structure de classes respectant le concept d’encapsulation. Les propriétés sont privées et accessibles par des opérations. L’opération ageDansFourchette() permet de déterminer si un livre convient à un enfant dont l’âge est passé en paramètre. Créez un nouveau modèle ou projet. Créez un nouveau diagramme de classes correspondant à la généralisation ci-dessus. Créez les attributs et opérations donnés en exemple.
  2. Les propriétés de Y et Z sont protégées. T hérite simultanément des propriétés de Y et Z.
  3. Le diagramme de classes ci-dessus modélise l’ensemble naturel des papillons. Chaque papillon du monde réel sera un objet de la classe Papillon.
  4. Pour que la classe Z hérite des propriétés de X et Y, les propriétés de X et Y doivent être publiques ou protégées. La classe Z possède 2 attributs A hérités de 2 super-classes différentes!
  5. Les 2 représentations ci-dessus reflètent le même contenu du modèle. Rational Rose montre la relation entre la classe Ville et l’interface Representable sous forme de relation de couplage ou de relation de réalisation selon le mode d’affichage choisi pour l’interface. La relation que nous avons intitulée « de couplage » n’est qu’une représentation externe, via le diagramme, de la relation de réalisation. La représentation iconographique de l’interface Representable montre le comportement visible de la classe Ville au travers d’une relation de couplage. La représentation stéréotypée de l’interface Representable montre l’implantation par la classe Ville au travers d’une relation de réalisation.
  6. La classe Animal est un exemple de classe abstraite telle que décrite en [PAM-00 p53]. Une classe abstraite est notée en italique. L’opération dormir() de la classe Animal est abstraite; elle est polymorphe et réalisée par chacune des sous-classes Lion, Tigre et Ours. Nous avons complété l’exemple de la figure 98 pour en faire un exercice plus complet, la classe Animal comporte: Une propriété privée Nom Une opération protégée tonNom() qui permet à chacune des sous-classes de récupérer le nom de l’animal. Le nom de chacun des animaux est enregistré par les constructeurs qui ne sont pas indiqués comme opérations dans ce diagramme. Créez un nouveau modèle ou projet. Créez un nouveau diagramme de classes correspondant à la spécialisation ci-dessus.
  7. L’utilisation du qualificateur a permis de réduire la cardinalité des instances de la classe Siege. L’utilisation du qualificateur a permis de ne prendre ici qu’un sous-ensemble de sièges réduit à un seul élément. Le rôle du qualificateur est de réduire la cardinalité d’une association. Ainsi, la cardinalité de Siege est passée de plusieurs à 1. Ce n’est pas toujours le cas. Nous rendons, encore une fois, le lecteur attentif à l’introduction de concepts qui nous semblent intéressants dans une vision de « programmation objet » mais sujette à remettre en cause tous les concepts des bases de données relationnelles qui actuellement garantissent la persistance de la majorité des systèmes d’information à base d’objets. Christian Soutou, dans l’ouvrage [SOU-99], propose de considérer le diagramme de classes comme un niveau de représentation conceptuelle et propose un niveau navigationnel à base de pointeurs pour gérer les associations entre classes. La construction de ce niveau navigationnel est inspiré du modèle relationnel et nous semble plus à même de concilier les besoins de la programmation objet et les besoins de persistance des objets par les bases de données relationnelles. Cette représentation à 2 niveaux est mise en œuvre dans l’atelier de génie logiciel d’Oracle, Designer/2000.
  8. Le qualificateur permet de partitionner l’ensemble des instances possibles de Siege suivant un critère indiqué par le qualificateur rangee . Le qualificateur est utile lors de la conception et de l’implémentation, il suggère: l’utilisation d’un dictionnaire dans la classe portant le qualificateur, ce dictionnaire étant composé de couples qualificateur(s)  objet ( s ) qualifié(s): 1  siège1, 2  siège2, 3  siège3 etc.; La mise en place de clés primaires lors de l’élaboration du modèle de bases de données. Une partition est la décomposition d’un ensemble E en sous-ensembles disjoints (c’est-à-dire qu’aucun élément n’appartient à deux sous-ensembles) dont la réunion forme l’intégralité de l’ensemble E. Un dictionnaire est une collection d’éléments, chaque élément étant une association entre une clé et une valeur. Une clé primaire est un identifiant unique pour un enregistrement d’une base de données.
  9. [RV-00 p147] Où placer l’attribut matricule ? A première vue, il s’agit de la propriété de la classe Personne. Mais en fait, une personne possède un matricule pour chacun de ses employeurs. Il s’agit donc plutôt d’un attribut de l’association, que nous pouvons placer dans la classe Emploi. Créez un nouveau modèle ou projet. Créez le modèle ci-dessus.
  10. [RV-00 p147] Poussons l’analyse encore un peu plus loin: à quoi sert l’attribut matricule sinon à référencer un employé au sein de son employeur? Il s’agit d’un identifiant relatif, dont la valeur permet d’accéder à une instance particulière de Personne, pour une (instance de) Société donnée. C’est exactement la notion de qualificatif en UML. Un objet Société doté d’une valeur particulière du qualificatif matricule a accès à un objet Personne au plus, car la multiplicité a été réduite à « 0..1 ». Il peut y avoir des numéros de matricule inutilisés, d’où la limite inférieure à 0. Copiez le modèle précédent sous un nouveau nom de fichier. Adaptez-le pour mettre en place la qualification comme ci-dessus.
  11. Créez un nouveau modèle ou projet. Créez les paquetages et les dépendances comme ci-dessus. Spécifiez le paquetage Erreur comme étant d’utilisation globale.