COURS 5 : DIAGRAMME DE CLASSES

Documents pareils
TP1 : Initiation à Java et Eclipse

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

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

Programmer en JAVA. par Tama

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Une introduction à Java

GOL502 Industries de services

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

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

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

UML (Diagramme de classes) Unified Modeling Language

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 )

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Initiation à JAVA et à la programmation objet.

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

as Architecture des Systèmes d Information

Chapitre VI- La validation de la composition.

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

Corrigé des exercices sur les références

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

Diagramme de classes

Package Java.util Classe générique

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

INITIATION AU LANGAGE JAVA

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

RMI le langage Java XII-1 JMF

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

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

Auto-évaluation Programmation en Java

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

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

Projet de programmation (IK3) : TP n 1 Correction

Chapitre 10. Les interfaces Comparable et Comparator 1

TD/TP PAC - Programmation n 3

Programmation Objet Java Correction

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Classes et Objets en Ocaml.

Remote Method Invocation (RMI)

TD/TP PAC - Programmation n 3

Université de Bangui. Modélisons en UML

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

Environnements de développement (intégrés)

Programme Compte bancaire (code)

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

Création d objet imbriqué sous PowerShell.

Plan du cours. Historique du langage Nouveautés de Java 7

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

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

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Java DataBaseConnectivity

Utilisation d objets : String et ArrayList

Programmation Orientée Objet application au langage Java Version Novembre 2007

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

Bases de données. Chapitre 1. Introduction

Programmation par les Objets en Java

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

Java 1.5 : principales nouveautés

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)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Apprendre Java en 154 minutes

Synchro et Threads Java TM

Tp 1 correction. Structures de données (IF2)

Développement Logiciel

Cours 1: Java et les objets

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

Java Licence Professionnelle CISII,

Diagrammes de Package, de déploiement et de composants UML

TP1 : Initiation à Java et Eclipse

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Programmation en Java IUT GEII (MC-II1) 1

Support de cours et TD Programmation Orientée Objet

Java c est quoi? Java pourquoi?

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Information utiles. webpage : Google+ : digiusto/

ACTIVITÉ DE PROGRAMMATION

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

UML et les Bases de Données

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

IFT2255 : Génie logiciel

Chapitre 2. Classes et objets

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Classe Interne, Anonyme & Enumération

Plan Pédagogique du cours

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Introduction au Génie Logiciel

OCL - Object Constraint Language

TP1. Outils Java Eléments de correction

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

Alfstore workflow framework Spécification technique

3. UML - Unified Modeling Language Diagrammes statiques

Présentation du PL/SQL

Transcription:

COURS 5 : DIAGRAMME DE CLASSES Samia BOULKRINAT ( Basé sur le cours de Assia HACHICHI) 1

1. La classe et l objet 2. Encapsulation, 3. Héritage, 4. Polymorphisme 2

La classe : "Abstraction d'un type de donnée caractérisée par des propriétés (attributs et méthodes) communes à des objets, et permettant de créer des objets ayant ces propriétés". L objet : "une instance de la structure de données ainsi que du comportement définit par la class de l'objet. Chaque Objet a ses propres valeurs pour les variables d'instances de sa classe et répond aux méthodes définies par celle-ci". 3

Classe : élément de conception modélisant une entité du problème à résoudre, contient Les données de l entité (variable) Les méthodes manipulant ces données (code) But : regrouper dans une même entité les données et leurs méthodes. Seules les méthodes sont visibles. Objet : instance d une classe Élément d exécution possédant les propriétés de la classe 4

5

6

Instanciation et gestion de la mémoire Instancier une classe X : appel new X(arguments) Allocation de l espace mémoire de X Appel de la méthode spéciale X.X(arguments) appelée constructeur Retourne une référence vers l instance de X Une référence n est pas un pointeur (pas d arithmétique) Supprimer une instance de X : automatique Suppression automatique d une référence dès qu elle n est plus référencée Aucun contrôle sur l instant de suppression! Appel automatique de X.finalize() si définie 7

2 types de champs et de méthodes Champs et méthodes de classe : Mot clé : static Partagés par toute les instances Classe X static int a = 22; Champs et méthodes d instance : Mot clé : aucun (défaut) Liés à une instance Instance x1 de X int b = 37; x1.a = X.a = x2.a Instance x2 de X int b = 42; Remarque : Une méthode d instance peut manipuler des champs de classe et d instance Une méthode de classe ne peut manipuler que des champs de classe 8

public class Compte { private String proprietaire; // private invisible hors de la classe private double solde; public Compte(String proprietaire) { // Constructeur, appelé lors de la création this.proprietaire = proprietaire; this.solde = 0; // this référence notre instance } public void crediter(double montant) { solde += montant; } public boolean debiter(double montant) { // public : visible en dehors de la classe if(solde >= montant) { solde -= montant; return true; } else return false; }} 9

public class TestCompte { private static Compte bob; // static champs partagé entre toutes les instances private static Compte bill; } public static void main(string args[]) { // type [] = tableau bob = new Compte("Bob"); // création du Compte de Bob bill = new Compte("Bill"); // création du compte de Bill bob.credite(187.12); } 10

Un diagramme de classes est un graphe d éléments connectés par des relations. Un diagramme de classes est une vue graphique de la structure statique d un système. 11

Les diagrammes de cas d utilisation modélisent à QUOI sert le système. Le système est composé d objets qui interagissent entre eux et avec les acteurs pour réaliser ces cas d utilisation. Les diagrammes de classes permettent de spécifier la structure statique d un système, en termes de classes et de relations entre ces classes. 12

Une classe représente la structure commune d un ensemble d objets. Une classe est représentée par un rectangle qui contient une chaîne de caractères correspondant au nom de la classe Ce rectangle peut être séparé en trois parties (nom, attributs, opérations). Le nom de la classe doit commencer par un caractère alphabétique et ne pas contenir le caractère :: 13

Identité + Etat + Comportement Une identité deux objets différents ont des identités différentes on peut désigner l objet (y faire référence) Un état (attributs) ensemble de propriétés/caractéristiques définies par des valeurs permet de le personnaliser/distinguer des autres objets peut évoluer dans le temps Un comportement (méthodes) ensemble des traitements que peut accomplir un objet (ou que l on peut lui faire accomplir) 14

15

16

Une classe peut contenir des attributs La syntaxe d un attribut est : visibilité nom : type La visibilité est: + pour public # pour protected - pour private UML définit son propre ensemble de types Integer, real, string, Un attribut peut être un attribut de classe, il est alors souligné. Un attribut peut être dérivé, il est alors préfixé par le caractère / 17

18

19

Une opération est un service qu une instance de la classe peut exécuter La syntaxe d une opération est : visibility name(parameter):return La syntaxe des paramètres est : kind name : type Le kind peut être : in, out, inout 20

21

22

Les associations binaires connectent deux éléments entre eux Une association binaire est composée de deux associations. Une association end est paramétrée par: Un nom (le rôle joué par l entité connectée) Un genre d agrégation (composite, agregation, none) De plusieurs propriétés: isnavigable, ischangeable 23

24

25

26

27

La multiplicité spécifie le nombre d instances d une classe pouvant être liées à une seule instance d une classe associée. Elle contraint le nombre d objets liés. Exemple : une personne peut posséder plusieurs voitures (entre zéro et un nombre quelconque) ; une voiture est possédée par une seule personne. 28

29

30

31

32

Les associations N-aires connectent plusieurs éléments entre eux. Les associations N-aire sont très peu utilisées. 33

34

35

Une agrégation est un cas particulier d association non symétrique exprimant une relation de contenance d un élément dans un ensemble. Les agrégations n ont pas besoin d être nommées : implicitement elles signifient «contient», «est composé de». On représente l agrégation par l ajout d un losange vide du côté de l agrégat (l ensemble). 36

37

Une composition est une agrégation plus forte impliquant que : un élément ne peut appartenir qu à un seul agrégat composite (agrégation non partagée). la destruction de l agrégat composite (l ensemble) entraîne la destruction de tous ses éléments (les parties). le composite est responsable du cycle de vie des parties. 38

Une partie constituante ne peut appartenir à plus d un assemblage ; Une fois une partie constituante affectée à un assemblage, sa durée de vie coïncide avec ce dernier. 39

Quand mettre une composition plutôt qu une agrégation? Pour décider de mettre une composition plutôt qu une agrégation, on doit se poser les questions suivantes : Est-ce que la destruction de l objet composite (du tout) implique nécessairement la destruction des objets composants (les parties)? C est le cas si les composants n ont pas d autonomie vis-à-vis des composites. Lorsque l on copie le composite, doit-on aussi copier les composants, ou est-ce qu on peut les «réutiliser», auquel cas un composant peut faire partie de plusieurs composites? Si on répond par l affirmative à ces deux questions, on doit utiliser une composition. 40

41

Application automatique d une opération à un réseau d objets à partir d un objet initial quelconque. L agrégation permet un mécanisme de délégation d opérations : l opération Document.copier() peut être déléguée à l opération Paragraphe.copier() en l appliquant à toutes les instances de paragraphe qui composent le document. Celle-ci peut à son tour être déléguée dans les mêmes conditions à Caractère.copier(). 42

43

44

45

46

association qui est aussi une classe. 47

Une classe-association est une association qui est aussi une classe. Les classes-associations sont utilisées lorsque les associations doivent porter des informations Il est toujours possible de se passer des classes-associations. 48

49

Héritage : relation de spécialisation d une classe Une classe fille hérite d une classe parente Hérite des données et des méthodes de son parent Mot clé : extends Animal Mammifère Mollusque Poisson Chat Homme Dauphin Sardine Pas d héritage multiple en Java 50

Interface : définition abstraite d une classe Ne possède que des méthodes Découple la définition d une classe de son implantation Lien avec la notion d API Une interface peut être implantée (mot clé implements) par plusieurs classe Une classe peut posséder plusieurs interfaces Interface : notion fondamentale pour séparer client et serveur 51

L héritage une relation de spécialisation/généralisation. Les éléments spécialisés héritent de la structure et du comportement des éléments plus généraux (attributs et opérations). 52

Pour que ça fonctionne : Principe de substitution : toutes les propriétés de la classe parent doivent être valables pour les classes enfant. Principe du «A est un B» ou «A est une sorte de B» : toutes les instances de la sous-classe sont aussi instances de la super-classe. Par exemple, toute opération acceptant un objet d une classe Animal doit accepter tout objet de la classe Chat (l inverse n est pas toujours vrai). 53

L héritage est une relation entre un élément plus général et un élément plus spécifique. L héritage existe entre des classes, des packages, L héritage multiple est possible en UML 54

Relation non-réflexive, non-symétrique! 55

Une classe peut avoir plusieurs classes parents. On parle alors d héritage multiple. Exemple : 56

Comment éviter l héritage multiple? Première solution : déléguer 57

Comment éviter l héritage multiple? Deuxième solution : hériter de la classe la plus importante et déléguer les autres 58

Une méthode est dite abstraite lorsqu on connaît son entête (signature) mais pas la manière dont elle peut être réalisée. Il appartient aux classes enfant de définir les méthodes abstraites. Une classe est dite abstraite lorsqu elle définit au moins une méthode abstraite ou lorsqu une classe parent contient une méthode abstraite non encore réalisée. 59

60

Une interface spécifie un ensemble d opérations (comportement) C est un contrat : Les classes liées s engagent à respecter le contrat elles doivent mettre en œuvre les opérations de l interface 61

On utilise une relation de type réalisation entre une interface et une classe qui l implémente. Les classes implémentant une interface doivent implémenter toutes les opérations décrites dans l interface 62

Une interface est la spécification externe (en terme d opérations) d une classe. Une interface peut donc contenir des opérations Une classe réalise une interface si elle est capable d exécuter toutes les opérations de l interface On utilisera une relation de dépendance pour exprimer le fait qu une classe est cliente d une interface. 63

64

65

Réaliser un premier diagramme de classes qui contiendra l ensemble des classes retenues et qui mettra en évidence des associations entre les classe. Les associations seront de simples traits banalisés : pas de nom, pas de multiplicité. Raffiner le diagramme précédent 1. Renseigner les associations : nom, multiplicité, agrégation, navigabilité, rôles des classes associées 2. Renseigner les classes attributs, classes associations, classes abstraites, héritage Vérifier que le diagramme permet de remplir les différents cas d utilisation et leurs scénarii associés. 66

Donnez le code Java correspondant au diagramme de Classe suivant: 67

Les diagrammes de classes sont les diagrammes les plus utilisés Ils permettent la décrire des programmes objet Ils permettent de décrire le schéma logique de bases de données Ils permettent de décrire des relations de concepts (modèle métier) Les diagrammes de classes peuvent être de différents niveaux d abstraction 68

Pour qu un logiciel soit extensible et réutilisable, il faut qu il soit découpé en modules faiblement couplés : ainsi chaque entité peut être modifiée en limitant l impact du changement au reste de l application. et à forte cohésion : Il faut réunir ce qui est impacté par une même modification («qui se ressemble s assemble») 69

Comment peut-on réduire l écart entre les besoins réels et les besoins exprimés dans un cahier de charge? Quels sont les quatre principes de l orienté objets? Quelle est la différence entre la phase de validation et la phase de vérification? Soit l application de l université USTHB, modélisez à l aide de diagramme de classe les étudiants, enseignants? 70