Modèle d'analyse. Dans UP, le modèle d'analyse décrit le système d'un point de vue structurel.

Documents pareils
Diagramme de classes

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Héritage presque multiple en Java (1/2)

UML (Diagramme de classes) Unified Modeling Language

IFT2255 : Génie logiciel

3. UML - Unified Modeling Language Diagrammes statiques

GOL502 Industries de services

Chapitre I : le langage UML et le processus unifié

Université de Bangui. Modélisons en UML

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Généralités sur le Langage Java et éléments syntaxiques.

OCL - Object Constraint Language

Chapitre 2. Classes et objets

Le niveau conceptuel : la modélisation des bases de données

MEGA Database Builder. Guide d utilisation

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

UML. Diagrammes de classes (suite) Delphine Longuet.

Les diagrammes de modélisation

Chapitre VI- La validation de la composition.

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

INITIATION AU LANGAGE JAVA

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

RMI le langage Java XII-1 JMF

Objets et Programmation. origine des langages orientés-objet

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Application web de gestion de comptes en banques

Cours de Génie Logiciel

Initiation à JAVA et à la programmation objet.

Bases de données. Chapitre 1. Introduction

Cours STIM P8 TD 1 Génie Logiciel

Urbanisation de système d'information. PLM 3 (Product Lifecycle Management) Élaborations, versions, variantes, configurations

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Table des matières Sources

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

UML et les Bases de Données

Modélisation UML. Christine Solnon INSA de Lyon - 3IF 1/140.

Programmer en JAVA. par Tama

ACTIVITÉ DE PROGRAMMATION

Programmation Orientée Objet en C#

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Génie Logiciel avec Ada. 4 février 2013

Plan Pédagogique du cours

Méthodes d évolution de modèle produit dans les systèmes du type PLM

MEDIAplus elearning. version 6.6

TP1 : Initiation à Java et Eclipse

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Rappel sur les bases de données

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Alfstore workflow framework Spécification technique

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Chapitre 3 - VODEL, un langage de description d architectures logicielles statiques et dynamiques

A. Définition et formalisme

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

as Architecture des Systèmes d Information

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

MEGA ITSM Accelerator. Guide de Démarrage

Méthodologies de développement de logiciels de gestion

MEGA Application Portfolio Management. Guide d utilisation

OASIS Date de publication

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Langage Java. Classe de première SI

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Introduction aux concepts d ez Publish

Information utiles. webpage : Google+ : digiusto/

Java c est quoi? Java pourquoi?

Programmation par les Objets en Java

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Description de la formation

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Ingénierie des Modèles. Méta-modélisation

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Démarches d urbanisation : réorganiser le Système d Information en structurant ses fonctions dans des blocs fonctionnels communicants.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Chapitre 5 : Les procédures stockées PL/SQL

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Chapitre 10. Les interfaces Comparable et Comparator 1

Compétences Business Objects

Brique BDL Gestion de Projet Logiciel

Composants Logiciels. Le modèle de composant de CORBA. Plan

Web Tier : déploiement de servlets

Transcription:

Les modèles dans UP

Modèle d'analyse Dans UP, le modèle d'analyse décrit le système d'un point de vue structurel. Il est construit à partir du modèle de cas d'utilisation. Il permet de définir l'architecture générale du système à l'aide principalement des diagrammes de classes et de paquetages, complétés avec des diagrammes d'objets et d'interaction. Les classes n'ont pas à être forcément détaillées à ce stade (types des attributs, visibilité des membres, ). Le modèle de conception va compléter le modèle d'analyse en spécifiant les détails structurels et comportementaux.

Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage

Classe (1/2) stéréotype nom attributs méthodes Une classe abstraite a son nom en italique (ou marquée avec le stéréotype <<abstract>>). Le stéréotype <<interface>> est utilisé pour les interfaces. Autres stéréotypes : <<datatype>> pour les types (classe dont les instances sont identifiés par leur valeur), <<enumeration>> pour les types énumérés, <<utility>> pour les classes contenant uniquement des attributs et méthodes statiques, <<metaclass>> pour les classes dont les instances sont des classes,...

Classe (2/2) Une classe générique donne son paramètre de type. classe générique instanciation d'une classe générique Une classe active est une classe qui contrôle son exécution :

Attributs Format d'attribut : [visibilité] ["/"] nom [multiplicité] [":" type] ["=" valeur initiale] ["{" propriétés "}"] / : indique que l'attribut est dérivé (redondant, calculé à partir d'autres) Visibilité : + (public), - (privé), # (protégé), ~ (paquetage) Multiplicité : n (exactement n instances), n..m (de n à m instances), a,b (exactement a ou exactement b instances) Propriété : redefines, readonly, frozen, ordered, Un attribut statique est souligné Exemples : # / age : int = 0 ~ notes[1..12] : int {ordered} + PI : float = 3.1415927 {frozen}

Méthodes Format de méthode : [visibilité] nom "(" [paramètres] ")" [":" type de retour] Visibilité : + (public), - (privé), # (protégé), ~ (paquetage) Paramètre : [mode] nom : type mode = in (défault), out ou inout Une méthode statique est soulignée, une méthode abstraite est en italique Un constructeur est nommé create et un destructeur destroy Exemples : + trier (inout tableau : int[]) + getname() : String

Visibilités dans une classe Il est possible de regrouper les attributs et méthodes par visibilité.

Associations (1/2) Une association entre deux classes indique qu'un lien existe entre leurs instances. rôle joué par les instances de C1 vis-à-vis de celles de C2 nombre d'instances de C1 pouvant être associées à une instance de C2 nom de l'association et sens de lecture Multiplicité : *, 1, 0..1, 1..1, 0..*, 1..*, 3..7, Exemple : un joueur dirige un groupe de joueurs, il joue le rôle de chef pour une équipe. Un groupe a exactement un chef et un joueur peut diriger au plus 3 équipes.

Associations (2/2) Il est possible de spécifier la navigabilité d'une association et la visibilité des rôles. un Joueur n'a pas rôle privé de lien navigable vers l'équipe qu'il dirige les Joeurs associés à un GroupeDeJoueurs sont ordonnées un GroupeDeJoueurs est associé à exactement 1 chef Propriétés sur les extrémités : addonly, frozen, ordered,

Implémentations des associations (1/2) Une association est une entité en elle-même et possède ses terminaisons (instances). On pourra par exemple implémenter une association par une classe (cf. classe-association). class asso1{ A mona; B monb1, monb2; } On peut aussi implémenter une association par des méthodes : les terminaisons appartiennent alors aux classes. class B{... A getrole2(){... } } class A{... B[] getrole1(){... } }

Implémentations des associations (2/2) Le plus souvent, on implémente une association par des attributs. class B{ A role2; } class A{ B role1_1, role1_2; } On peut spécifier l'implémentation en imposant que les terminaisons de l'association appartiennent aux classes. cette extrémité de l'association appartient à la classe B : les instances de B doivent avoir une référence sur 1 instance de A class B{ A role2; } class asso1a2b{ A mona; B monb1, monb2; }

Association qualifiée Une association qualifiée lie deux classes en spécifiant une valeur de type clé ou index qui qualifie les objets liés. un GroupeDeJoueurs voit les Joueurs auxquels il est associé via l'attribut login Une association qualifiée est généralement implémentée par une structure de type tableau associatif. on peut spécifier le type de l'attribut qualifiant class B{ Hashtable<Integer,A> mesa;... void addrole1(int qual, A a){...} A getrole1(int qual){...} }

Relations entre associations Des relations conceptuelles peuvent être spécifiées entre associations. un Modérateur ne peut pas jouer le chef d'un groupe en est aussi membre ces deux associations se déduisent l'une de l'autre

Associations dérivées Il est possible de spécifier qu'une association est dérivée c'est-à-dire déduite d'autres. Les associations dérivées peuvent être spécifiées pour améliorer la lisibilité du diagramme. deux syntaxes possibles

Types d'associations Une association n-aire permet d'associer plus de 2 classes (peu lisible, à éviter) : Une association réflexive associe une classe à elle-même :

Classe-association Une association décrite par des propriétés doit être implémentée par une classe et est modélisée par une classe-association : classe-association (éventuellement anonyme) les cardinalités se retrouvent sur la classe association et les cardinalités sur les classes extrémités sont forcément à 1

Composition et agrégation (1/3) Une composition est une association de type composant/composite ou tout-partie : - transitive et antisymétrique - la création ou destruction du composite entraîne celle des composants - un composant ne peut appartenir qu'à un composite La composition n'empêche pas de spécifier les rôles, la navigabilité et la multiplicité.

Composition et agrégation (2/3) Dans le cas d'une agrégation, les composants ont une existence indépendante de celle du composite et peuvent appartenir à plusieurs composites : Une double composition ou agrégation n'a pas de sens puisque ces relations sont antisymétriques :??????

Composition et agrégation (3/3) Une relation de méronymie (partie-tout) s'implémente comme une association normale, mais dans le cas d'une composition, la destruction du tout doit entraîner la destruction des parties. class Immeuble{ std::list<appartement> contenu;... ~Immeuble(){ // prévoir ici la destruction des appartements... } }

Généralisation de classe La généralisation correspond à la notion d'héritage. héritage multiple deux syntaxes possibles

Généralisation où composition? (1/2) Exemple : un personnage a un nom et un sexe, peut parler, peut accoucher si c'est une femme et faire pipi debout si c'est un homme. Exemple : un personnage peut parler, peut être rouge ou bleu.

Généralisation où composition? (2/2) La composition peut être préférable à la généralisation, car elle est plus résistante aux changements. Exemple : finalement, les personnages peuvent aussi être verts La composition peut même servir à attribuer des comportements différents à des instances de la même classe (délégation).

Stéréotypes de généralisation Les liens de généralisation peuvent porter des propriétés : {disjoint}, {complete}, {leaf}, {root}, partition

Dépendance entre classes Des liens de dépendance peuvent exister entre classes. Souvent on les précise par des stéréotypes. le générateur de partie fait appel au générateur de personnage le générateur de partie crée des instances de Partie

Interfaces Les interfaces sont spécifiées par un stéréotype et peuvent être réalisées (implémentées) ou utilisées par des classes. notation simplifiée pour une interface réalisation utilisation (dépendance)

Classes internes Les classes internes sont spécifiées par un type de lien particulier avec leur classe englobante.

Diagramme d'objets (1/2) Un diagramme d'objets décrit l'état des objets dans le système en train de s'exécuter à un moment donné. Les liens entre objets sont de même type que les associations entre classes. Il permet de représenter un cas de test, mais aussi d'analyser des exemples d'exécution. le type d'un attribut peut être omis

Diagramme d'objets (2/2) tous les éléments du diagramme de classe ne se retrouvent pas forcément dans un diagramme d'objet

Diagramme de timing (1/2) Le diagramme de timing est un type particulier de diagramme d'interaction qui permet de décrire la vie d'un objet avec des contraintes temporelles. contrainte de durée objet dont on décrit le comportement état de l'objet marques temporelles événement avec contrainte temporelle

Diagramme de timing (2/2) Une syntaxe simplifiée est possible : message (un message peut être envoyé à un objet d'une autre ligne de vie) plusieurs lignes de vie peuvent être décrites en parallèle destruction d'objet

Structure composée Le diagramme de structure composée (composite structure) permet de visualiser la structure interne d'une classe. On distingue les compositions ou parties (traits pleins) et les autres associations ou rôles (pointillés). l'imbrication peut être sur plusieurs niveaux connecteur multiplicité (deux syntaxes possibles)

Connecteurs et ports Un connecteur représente un lien entre instances. Un connecteur peut être une instance d'association ou implémenté par un pointeur, un passage de paramètre, un autre objet, un mécanisme de communication réseau, etc. Un port représente un point d'interaction entre la classe et son environnement logiciel. port les instances de Jcomponent ont accès à une instance de UIManager classe interne

Diagramme de paquetages (1/3) Un diagramme de paquetage décrit à grande échelle l'architecture du système. sous nom du paquetage paquetage

Autre syntaxe possible : Diagramme de paquetages (2/3)

Diagramme de paquetages (3/3) Stéréotypes sur les dépendances : les éléments publics de pack2 sont ajoutés à l'espace de nommage de pack3 les éléments publics de pack1 sont visibles depuis pack3 pack3 «étend» le contenu de pack4 Attention aux ambiguités en cas d'éléments de même nom!