Conception Orientée Objet Les principes de base

Documents pareils
Cours en ligne Développement Java pour le web

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

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

Diagramme de classes

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

Description de la formation

IFT2255 : Génie logiciel

UML (Paquetage) Unified Modeling Language

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)

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Chapitre I : le langage UML et le processus unifié

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Patrons de Conception (Design Patterns)

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Urbanisation des systèmes d information

RTDS G3. Emmanuel Gaudin

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

31 ans - 8 ans d'expérience

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

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

UML (Diagramme de classes) Unified Modeling Language

Cours de Génie Logiciel

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA. 32 ans - 6 ans d'expérience

Refonte front-office / back-office - Architecture & Conception -

Information utiles. webpage : Google+ : digiusto/

Vérifier la qualité de vos applications logicielle de manière continue

1 JBoss Entreprise Middleware

Génie Logiciel Orienté Objet UML

Analyse,, Conception des Systèmes Informatiques

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

Introduction au Génie Logiciel

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

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

Chapitre 5 Vision Informatique Logique Architectures Applicative et Logicielle

Business & High Technology

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

- Couches - Éléments - Domaines - ArchiMate et les techniques du BABOK

F O R M A T I O N CATALOGUE

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

PROSOP : un système de gestion de bases de données prosopographiques

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

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Générer du code à partir d une description de haut niveau

Pascal Brunot Hadrien Cambazard UML FOR BUSINESS INTELLIGENCE PROJECT

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

Notre processus d embauche

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

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

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Devenez un véritable développeur web en 3 mois!

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

Architecture Agile et développement durable

Extensions, Documentation, Tutoriels, Astuces

LES SOLUTIONS OPEN SOURCE RED HAT

Université de Bangui. Modélisons en UML

Extensions à la formation. Laurent Pérochon, avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

Projet Active Object

3. UML - Unified Modeling Language Diagrammes statiques

Les diagrammes de modélisation

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Formation en Logiciels Libres. Fiche d inscription

Les Architectures Orientées Services (SOA)

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

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - Android. 29 ans - 5 ans d'expérience

CQP Développeur Nouvelles Technologies (DNT)

Oracle Fusion Middleware Concepts Guide 11g Release 1 (11.1.1) Figure 1-1 Architecture Middleware

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

PRODUCTS LIST (updated 11th January 2010)

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

CC30 Certificat de compétence Conception, développement et animation de sites Web

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

Programmation Orientée Objet

CHEF DE PROJET - DÉVELOPPEUR EXPÉRIMENT É PHP - JAVA -.NET. 28 ans - 7 ans d'expérience

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

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

Expert technique J2EE

Proposition pour la création d un site de gestion de projet

Celui qui vous parle. Yann Vigara

Une Histoire de Migration Agile

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

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

Le Guide Pratique des Processus Métiers

Alfstore workflow framework Spécification technique

Architecture à base de composants pour le déploiement adaptatif des applications multicomposants

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

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

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

WINDOWS SHAREPOINT SERVICES 2007

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML

Transcription:

Conception Orientée Objet Les principes de base Tianxiao LIU Master ISC/SIC 1 ère Année Université de Cergy-Pontoise http://depinfo.u-cergy.fr/~tliu/coo.php 1

Sommaire Introduction au module COO Motivation, programme & organisation, MCC UML diagramme de classes Relations entre les classes Comment construire un diagramme de classes Les principes de base d objet OCP, LSP, DIP, ISP, CARP, LoD 2

Motivation du cours Approche objet Incontournable pour le développement des systèmes complexes Moins intuitive que l'approche fonctionnelle Besoins de conception Rigueur pour la compréhension, la comparaison des solutions et la maintenance du système Suivre les évolutions incessantes des technologies et des besoins applicatifs 3

Motivation du cours Pour bien mener la conception Besoin d'un outil de modélisation unifié Un outil graphique au lieu de textuel UML (Unified Modeling Language) Offrir plusieurs modèles du même système Chacun met en valeur des aspects différents : fonctionnels, statiques, dynamiques et organisationnels 4

Programme et organisation Approche objet et modélisation UML Principes d approche objet et design patterns Diagramme de classes (class) Diagramme de cas d utilisation (user case) Diagramme d'activités (activity) Diagramme de séquence (sequence) Diagramme d états-transitions (statechart) Outils modélisation UML Sous Windows : Software Idea Modeler (SIM) Sous Linux : Argo UML, Dia, etc. 5

Programme et organisation Technologies Java SE / Java EE Java threading JDBC (Java Database Connectivity) Hibernate ORM framework + JPA Annotation Spring Framework (IoC + AOP) JSF (Java Server Faces) Web framework (MVC) Outils technologies Java Java 1.6 ou plus + les librairies frameworks Eclipse pour Java EE MySQL ou PostgreSQL Tomcat : serveur Web 6

MCC du module COO Examen terminal (50%) Janvier 2018 Tous documents autorisés (sauf livres et appareils électroniques) Principes, patterns, modélisation UML Projet transversal (50%) Janvier 2018 Atelier Gestion de Projet (AGP) + COO + BDA Evaluation de la conception et de la réalisation 7

Diagramme de classes UML (cd) Une vue interne du système à concevoir Une description purement statique Pas de d indication qui montre comment une opération est réalisée Un ensemble de classeurs Classe, classe abstraite, interface, paquetages, objets Les relations entre ces éléments 8

Notions de base Objet, classe et instance Un objet représente une chose naturelle qui a des caractéristiques et des comportements Une classe est le regroupement des données et des traitements applicables aux objets qu elle représente Une instance peut être un objet d une classe, et peut aussi être d autres éléments du langage UML, ex. un lien est une instance d une association 9

Notions de base Interface Une classe abstraite particulière Motivation Classer les opérations en catégorie sans préciser la manière dont elles sont implémentées Préciser surtout les conditions et les effets de l'invocations des opérations définies dedans Une interface n'a pas d'instances directes peut être réalisée par différentes classes en Java 10

Notions de base Composition d'une classe attribut visibilité nom : type méthode (opération) visibilité nom (paramètres) : type de retour paramètre = nom : type classes ou méthodes abstraites En italique 11

Relations entre classes Héritage Une classe est la sous-classe (classe fille) d'une autre classe Pas de multi-héritage en Java Réalisation Une classe implémente une interface 12

Relations entre classes Association Une relation structurelle entre les deux classes Multiplicité (ou cardinalité) : nombre d'objets intervenant 1, 1..*, 1..5, Nom de l'association un verbe en actif/passif Rôles Un nom Navigabilité Association unidirectionnelle Association bidirectionnelle 13

Relations entre classes Agrégation une forme particulière de l'association Relation d'inclusion structurelle ou comportementale Composition Une agrégation particulière Classe composite et classe composant La classe composite est responsable de la création, de la copie et de la destruction de ses composants 14

Relations entre classes Dépendance Relation unidirectionnelle Classe cible et classe source Si modification de la cible, alors changement de la source Stéréotypes : exemples derived : la source est complètement ou partiellement calculée à partir de la cible call : appel d'une opération par une autre create : une opération de la source crée une instance de la cible 15

Construction d un cd Processus de construction Identifier les classes du domaine Définir les relations entre classes Trouver les attributs des classes 16

Construction d un cd Identifier les classes du domaine Idéalement, il faut consulter auprès d'un expert du domaine Faire une liste des classes candidates et éliminez celles redondantes et superflues Définir avec grand soin le niveau de granularité Evitez les implémentations trop détaillées 17

Construction d un cd Définir les relations entre classes Eviter les chemins redondants (surtout les cercles entre les classes) Pas de relations insensées Déterminer les multiplicités (cardinalités) dès que possible En général, pas de classes isolées 18

Construction d un cd Trouver les attributs des classes N'espérez pas trouver tous les attributs dès la construction du diagramme de classes certains attributs seront ajoutés à l'implémentation Profitez bien de l'héritage, classes abstraites, interfaces, et polymorphisme pour simplifier le diagramme Pas besoin d'illustrer les getter/setter, constructor, tostring 19

Bon système VS Mauvais système Un bon système Support de maintenabilité + réutilisabilité Maintenabilité réutilisabilité (niveaux différents) Un mauvais système Expression des besoins Conception et réalisation Livraison : on est content Maintenance? bugs découverts Extension? très difficile, très chère Réutiliser le système Abandon Recommencer le même cycle?!! 20

Maintenabilité et réutilisabilité Quels sont les problèmes? Rigidité Difficile d'ajouter une nouvelle fonctionnalité Fragilité Modification d'une partie du code problème imprévisible dans un autre endroit Immobilité Impossible ou difficile de réutiliser des modules dans un autre système Viscosité Deux façons : garder ou modifier la conception originale Si modification plus facile que garder viscosité 21

Maintenabilité et réutilisabilité Quelles sont les qualités? Extensibilité Ajout très facile d'une nouvelle fonctionnalité Flexibilité Modification d'une partie du code très peu ou sans effet sur les autres parties Enfichable On peut enlever/remplacer facilement une partie sans nuire au bon fonctionnement du système 22

Maintenabilité et réutilisabilité Réutilisabilité du système Façons traditionnelles Copier-coller du code source Réutiliser les algorithmes Réutiliser les structures de données Approche orientée objet Niveau plus élevé grâce aux aspects POO : abstraction, encapsulation, héritage, polymorphisme On se concentre plus sur la partie métier (business) Les design patterns 23

Maintenabilité et réutilisabilité Extensibilité du système Utilisation correcte des interfaces et des classes abstraites Principes de conception pour extensibilité Open-Closed Principle (OCP) Liskov Substitution Principle (LSP) Dependency Inversion Principle (DIP) Interface Segregation Principle (ISP) Composition/Aggregation Reuse Principle (CARP) Law of Demeter (LoD) 24

Principe ouvert / fermé (OCP) Principe Un système doit s'ouvrir à l'extension et se fermer à la modification Réalisation Il faut toujours une très bonne abstraction EVP : Principle of Encapsulation of Variation Si un élément varie dans le système, encapsulez-le Les variations doivent être encapsulées dans un objet au lieu d'être dispersées partout. Ne pas mélanger deux types de variations héritage ne dépasse généralement pas 2 niveaux 25

Principe de substitution de Liskov (LSP) Définition Si q(x) est une propriété démontrable pour tout objet x de type T, alors q(y) est vraie pour tout objet y de type S tel que S est un sous-type de T. Principe method (Base b) method (Derived b) L'inverse n'est pas vrai. Notion de base pour la réutilisation de l'héritage Sous-type indétectable 26

Principe d'inversion de dépendance (DIP) Motivation Problème de dépendance (top-down) Solution Utilisation d'une couche d'abstraction Inverser la dépendance : concret ----> abstract Trois types de couplages Couplage nul : pas de couplage Couplage concret : référence directe Couplage abstrait : référence indirecte via classes abstraites ou interfaces 27

Principe de ségrégation des interfaces (ISP) Principe Diviser une grande interface en plusieurs petites interfaces : hiérarchiser les interfaces Exposer aux clients uniquement ce dont ils ont besoin : Customized Service Contamination des interfaces Economiser le nombre d'interface? Très mauvaise idée 28

Principe de réutilisation des composites /agrégations (CARP) Principe Utiliser un objet d'une classe existante dans une nouvelle classe réutilisation Préférer composites/agrégation à héritage Différence entre "Has-A" et "Is-A" Composite ici n'est pas le pattern Composite 29

Loi de Déméter (LoD) Motivation Only talk to your immediate friends Don't talk to strangers Least Knowledge Principle (LKP) LoD entre deux classes Si ces deux classes n'ont pas besoin de se communiquer directement, on utilisera une troisième classe entre les deux pour assurer la communication LoD générale Couplage faible entre les modules d'un système Restreindre les accessibilités 30