NFP121 Programmation Avancée. Relations entre classes



Documents pareils
GOL502 Industries de services

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

UML (Diagramme de classes) Unified Modeling Language

UML et les Bases de Données

Les diagrammes de modélisation

Java Licence Professionnelle CISII,

ACTIVITÉ DE PROGRAMMATION

Premiers Pas en Programmation Objet : les Classes et les Objets

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

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

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

Cours de Génie Logiciel

Université de Bangui. Modélisons en UML

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

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Table des matières Sources

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Conception des systèmes répartis

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

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

Définitions. Numéro à préciser. (Durée : )

Diagramme de classes

Cours STIM P8 TD 1 Génie Logiciel

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Conception des bases de données : Modèle Entité-Association

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

Utilisation d objets : String et ArrayList

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TP1 : Initiation à Java et Eclipse

Organigramme / Algorigramme Dossier élève 1 SI

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Cours 1: Java et les objets

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

as Architecture des Systèmes d Information

TD3: tableaux avancées, première classe et chaînes

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Programmation en Java IUT GEII (MC-II1) 1

Solutions du chapitre 4

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

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Algorithmique et programmation : les bases (VBA) Corrigé

Les structures de données. Rajae El Ouazzani

Chapitre VI- La validation de la composition.

Chapitre 10. Les interfaces Comparable et Comparator 1


Corrigé des exercices sur les références

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)

4. Groupement d objets

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

Information utiles. webpage : Google+ : digiusto/

Programmer en JAVA. par Tama

TP1. Outils Java Eléments de correction

Langage SQL : créer et interroger une base

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

Ecrire pour le web. Rédiger : simple, concis, structuré. Faire (plus) court. L essentiel d abord. Alléger le style. Varier les types de contenus

Java c est quoi? Java pourquoi?

Programmation avec des objets : Cours 7. Menu du jour

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Projet Active Object

1 Description générale de VISFIELD

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Conventions d écriture et outils de mise au point

Génie logiciel avec UML. Notions sur le langage UML adapté pour les cours du programme Techniques de l informatique

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

TD/TP PAC - Programmation n 3

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Comment se servir de cet ouvrage? Chaque chapitre présente une étape de la méthodologie

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

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Modélisation des données

Le prototype de la fonction main()

Java 7 Les fondamentaux du langage Java

Bases de programmation. Cours 5. Structurer les données

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

Programmation C++ (débutant)/instructions for, while et do...while

Licence Sciences et Technologies Examen janvier 2010

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Chapitre 1 : Introduction aux bases de données

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

I4 : Bases de Données

Traduction des Langages : Le Compilateur Micro Java

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Cours 1 : La compilation

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Design patterns. Design patterns - définition. Design patterns - avantages

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

Transcription:

NFP121 Programmation Avancée Relations entre classes Xavier Crégut <Prénom.Nom@enseeiht.fr> ENSEEIHT Télécommunications & Réseaux Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 1 / 23

Diagramme de classe 1 Diagramme de classe 2 Traduction en Java 3 Diagramme d objet 4 Diagramme de séquence Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 2 / 23

Diagramme de classe Relations entre classes On dit qu il y a relation de dépendance entre une classe A et une classe B si la classe A fait référence à la classe B dans son texte. A B Cette relation peut être momentanée si B apparaît comme un paramètre d une méthode ; une variable locale. Cette relation est structurelle si elle dure (plus longtemps qu un appel de méthode). C est généralement le cas quand B est un attribut. En UML, on fait apparaître une relation entre les classes qui peut être graduée : association agrégation composition En Java, nous n avons pas les mêmes nuances : les objets sont manipulés par des poignées donc par référence, avec partage par défaut Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 3 / 23

Diagramme de classe Relation entre classes Une application est composée de plusieurs classes dont le couplage est caractérisé par des relations (d utilisation ou de délégation) : association : couplage faible correspondant à une relation symétrique entre objets relativement indépendants (durées de vie non liées) ; A verbe rôle de A rôle de B B agrégation : association non symétrique avec couplage plus fort relation tout et parties relation de subordination : propagation des opérations de A vers B on ne peut pas parler de A sans parler de B A tout partie B composition : agrégation forte (par valeur) : La durée de vie des objets «partie» est liée à celle du «tout» Pas de partage possible. A tout partie B Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 4 / 23

Diagramme de classe Relations entre classes : exemples Personne 1..* travaille pour 0..1 employé employeur Entreprise 0..1 Train 0..1 1..* Wagon 1..* {ordered} Siège passager * conducteur Personne Exercice 1 Dessiner un diagramme de classes faisant apparaître un site web, des pages HTML et un «webmaster». Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 5 / 23

Diagramme de classe Principales caractéristiques d une relation d utilisation Elle est bidirectionnelle : à partir d un objet d une extrémité, on peut atteindre les objets de l autre extrémité. Il est possible de l orienter et donc de supprimer un sens de navigation. Train 0..1 0..1 conducteur * passager Personne d un objet train on peut obtenir le conducteur ou les passagers d une personne on ne peut pas retrouver le train (Train n apparaît pas dans Personne) Il faut préciser sa signification : en lui donnant un nom (verbe, au centre de la relation, avec sens de lecture) Personne 1..* < emploie * Entreprise en précisant le rôle que jouent les objets dans la relation (extrémité de la relation) propriétaire * contenant Utilisateur Répertoire 0..1 * utilisateur autorisé * {isordered} * contenu < contient Les rôles peuvent avoir des droits d accès (comme les attributs). Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 6 / 23

Diagramme de classe Multiplicité (ou cardinalité) Objectif : indiquer combien d objets peuvent/doivent prendre part à la relation : forme générale : min..max exemple : 1..4 le nombre d objet est compris entre min et max inclus la valeur de max peut être * : nombre quelconque («infini») un entier (ex : 4) : le nombre exact d objets, simplification d écriture Caractère optionnel : 0..1 * ou 0..* : un nombre quelconque y compris 0 1..* : un nombre quelconque mais au moins 1 La multiplicité par défaut est 1 directeur Personne emploie 1..* 0..1 Entreprise 0..1 directeur financier Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 7 / 23

Traduction en Java 1 Diagramme de classe 2 Traduction en Java 3 Diagramme d objet 4 Diagramme de séquence Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 8 / 23

Traduction en Java Traduction en Java Train 0..1 0..1 conducteur * passager Personne 1 public class Train { 2 private Personne conducteur; 3 // Pour une multiplicité de 1 ou 0..1 (null?) 4 5 private Personne[] passagers; 6 // Au lieu d un tableau, il est préférable 7 // d utiliser une structure de données adaptée. 8... En Java, pas de distinction entre association, agrégation et composition : c est toujours une poignée C est au programmeur de le gérer! Plusieurs stratégies possibles pour la composition... Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 9 / 23

Traduction en Java Exercices Exercice 2 Indiquer quelles relations il serait possible de définir entre : Livre et Page Itinéraire et Gare Segment et Point Exercice 3 Que penser d attributs de types primitifs? Et plus généralement de la rubrique «attribut» d UML. Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 10 / 23

Diagramme d objet 1 Diagramme de classe 2 Traduction en Java 3 Diagramme d objet 4 Diagramme de séquence Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 11 / 23

Diagramme d objet Représentation des objets Personne «instanceof» nom naissance afficher «instanceof» une classe «instanceof» patron: Personne nom = "Durand" naissance = (11, 12, 1959) toto nom = "Toto" : Personne nom = "Dupond" naissance = (29, 2, 1968) un objet un objet sans son type un objet anonyme Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 12 / 23

Diagramme d objet Diagramme d objet Diagramme d objet : Une configuration possible respectant un diagramme de classe. Exemple de diagramme de classe : Segment * * e1 Point 1 e2 x: double y: double 1 Diagramme d objet (attention, s n est pas conforme!) : s1: Segment e1 x = 10 y = 20 p1: Point e2 objet anonyme : Segment e2 x = 0 y = 0 origine Erreur! Pas d extrémités s: Segment e1 x = 20 y = 10 p2: Point objet sans type Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 13 / 23

Diagramme d objet Conformité Un diagramme d objet est conforme à un diagramme de classe ssi : tout objet du diagramme d objet est instance d une classe du diagramme de classe chaque attribut de l objet correspond à un attribut de la classe la valeur des attributs de l objet respecte le type de l attribut dans la classe tout lien du diagramme d objet est instance d une relation du diagramme de classe le nombre de liens respecte les multiplicités exprimées sur le diagramme de classe la relation de composition est respectée : un objet ne peut apparaître extrémité que d un seul lien de composition! Quelques remarques sur le diagramme d objet : Généralement, on ne fait pas apparaître les losanges (agrégation, composition) Les rôles sont souvent omis Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 14 / 23

Diagramme de séquence 1 Diagramme de classe 2 Traduction en Java 3 Diagramme d objet 4 Diagramme de séquence Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 15 / 23

Diagramme de séquence Diagramme de séquence Objectif : Décrire les interactions entre objets en privilégiant l aspect temporel (chronologie des envois de messages, de haut en bas). Principaux constituants : a: A b: B c: C barre d activation proc1 proc2 ligne de vie de c c est actif proc3 Le temps s écoule du haut vers le bas La barre d activation montre que du code de l objet est en train de s exécuter On se limite aux messages synchrones (il existe aussi des messages asynchrones) Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 16 / 23

Diagramme de séquence Diagramme de séquence (2) Retour de méthode avec retour explicite a: A b: B demandeinfo() val avec retour implicite a: A b: B val := demandeinfo() Création et destruction d objet a: A «create» b: B «destroy» Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 17 / 23

Diagramme de séquence Diagramme de séquence et code Java scenario «create»(0,0) p1: Point «create»(5,0) p2: Point «create»(p1,p2) s: Segment translater( 2,0) translater( 2,0) translater( 2,0) longueur() distance(p2) 5 5 public class Scenario { public static void main(string[] args) { Point p1 = new Point(0, 0); Point p2 = new Point(5, 0); Segment s = new Segment(p1, p2); s.translater(-2, 0); System.out.println("lg = " + s.getlongueur()); } } Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 18 / 23

Diagramme de séquence Des raffinages aux diagrammes de séquence Comment «Arbitrer un jeu entre un devin et un maître»? Demander au maître de choisir un nombre Indiquer au devin les limites du jeu Répéter Demander au devin de faire une proposition Demander au maitre une indication Donner au devin l indication JusquÀ nombre trouvé Féliciter le devin Les participants sont explicités : devin, maître... et arbitre La règle «une étape est un verbe à l infinitif» est souvent remplacée par «une étape est de la forme : sujet verbe complément» L arbitre demande au maître de choisir un nombre L arbitre indique au devin les limites du jeu... Comment représenter les structures de contrôle sur un diagramme de séquence? Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 19 / 23

Diagramme de séquence Les cadres d interaction (frame) Vers l expression d un algorithme : Maitre : Arbitre : Devin choisirnombre(min,max) jouer(min, max) définirlimites(min,max) loop [indice /= TROUVE] indication(proposition) indice proposition() proposition interpreter(indice) féliciter le devin Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 20 / 23

Diagramme de séquence Les cadres d interaction (frame) (2) Vers l expression d un algorithme : Devin : IntervalleRecherche interpréter(indice) alt [indice = TROP_GRAND] setmax(proposition 1) [indice = TROP_PETIT] setmin(proposition+1) [else] setmin(proposition) setmax(proposition) Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 21 / 23

Diagramme de séquence Diagramme de classe correspondant Du diagramme de séquence, on peut déduire des éléments du diagramme de classe : les classes : type des objets du diagramme de séquence les méthodes : message sur une interaction (dans la classe cible) les dépendances entre classes (mais pas le type de relation) Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 22 / 23

Diagramme de séquence Bilan sur les diagrammes de séquence Cadres d interaction : ajoutés dans la dernière version majeure (UML 2) Étiquettes possibles pour les cadres d interaction : alt : alternatives loop : répétition (while ou foreach) opt : optionnel (if sans else) par : exécution parallèle negative : une interaction invalide... Ils s éloignent de l objectif initial des diagrammes de séquence : on ne montre pas simplement une exécution particulière mais plusieurs exécutions sur un même diagramme ceci répond à un souci de factorisation... parfois au détriment de la lisibilité voir les diagrammes d activité d UML Les diagrammes de séquence sont longs à dessiner (même avec un outil dédié) Un diagramme de séquence explicite de nombreux choix : objets, méthodes... souvent trop tôt quand on en est à comprendre le problème un raffinage (décomposition informelle peut alors être préférable) à utiliser surtout pour expliquer un algorithme dans des conditions particulières Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes 23 / 23