BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Introspection et Réflexion Manipulation dynamique de code Java.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la programmation objet Langage Java
Approfondissement du langage
(Classes prédéfinies – API Java)
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
Programmation Orientée Objet (POO)
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Introduction aux Session Beans
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Outils de tests, logs et documentation Frédéric Moalannée 2010/2011 POO.
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
Programmation orientée objet
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la programmation objet Langage Java
Design Pattern: Decorator
Package IFT1025 Jian-Yun Nie.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI1502 Principes fondamentaux en conception des logiciels
Java, les objets : tout de suite ! Rassembler, grouper les objets
BlueJ_I_II 1 Java, les objets : tout de suite ! Notes de cours associées a ces deux chapitres
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
Structures de données IFT-10541
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
4 Introduction des objets. Les chaînes et tableaux
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
11/04/ L'héritage Cours 7 Cours 7.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Créer des packages.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Tutorat en bio-informatique
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
LIFI-Java 2004 Séance du Jeudi 16 sept. Cours 2. Programmation Objet Qu’est ce que c’est? –une “facilité” de programmation? –une nouvelle façon de penser?
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Struts.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Iterator Design Pattern Alessandro Soro Sylvain Giroux.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
IUT du limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 2.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Introduction à l'orienté objet. Définition Le terme orienté objet siginifie que l'on organise le logiciel comme une collection d'objets organisée en graphe.
Transcription de la présentation:

BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ Cnam Paris jean-michel Douin, Version du 6 Mars 2003 Ce support accompagne, référence le livre de David J. Barnes & Michael Kölling Objects First with Java A Practical Introduction using BlueJ Pearson Education, 2003 ISBN

BlueJ_VII 2 Sommaire Conception de classes Comment assurer la maintenance, réutilisation, robustesse ? Couplage et cohésion couplage faible et cohésion forte méthodologie basée sur les Patterns Pattern ou Modèles de Conception Réutilisables

BlueJ_VII 3 Couplage Liens unissants les classes

BlueJ_VII 4 Couplage fort Les classes sont imbriquées Ne peuvent être séparées simplement Bannir les variables d’instances « public » et « protected » Tests interdépendants

BlueJ_VII 5 Couplage faible si : La classe peut être testée séparément La substitution d ’une classe par une autre est possible et aisée L ’ajout d ’une nouvelle fonctionnalité est isolée et ne concerne qu ’une classe Une idée du couplage faible Code 4.1 page 79

BlueJ_VII 6 Exemple Code 4.1 page 79 import java.util.ArrayList; /** */ public class Notebook{ // Storage for an arbitrary number of notes. private ArrayList notes; public Notebook(){ notes = new ArrayList(); }

BlueJ_VII 7 Deux clients de la classe Notebook Visibilité des clients :

BlueJ_VII 8 Les Modèles fondamentaux Pattern Délégation Couplage faible Pattern Immutable Robustesse abordés dans des chapitres ultérieurs Pattern Interface Pattern Proxy

BlueJ_VII 9 Notebook : une modification java.util.Vector remplace ArrayList import java.util.Vector; /** */ public class Notebook{ // Storage for an arbitrary number of notes. private Vector notes; public Notebook(){ notes = new Vector(); }

BlueJ_VII 10 Code 4.1 page 79 avec java.util.Vector public void storeNote(String note){ notes.addElement(note); } public int numberOfNotes() { return notes.size(); } public void removeNote(int noteNumber){ if(noteNumber < 0) { } else if(noteNumber < numberOfNotes()) { notes.removeElementAt(index)); } else {} } public void listNotes() { int index = 0; while(index < notes.size()) { System.out.println(notes.elementAt(index)); index++; }}}

BlueJ_VII 11 Deux clients de la classe Notebook Modification sans conséquence Visibilité des clients : la même

BlueJ_VII 12 C ’est le Pattern Délégation public class Notebook{ private Vector notes; // ou ArrayList notes; page 79 public Notebook(){ notes = new Vector(); } public void storeNote(String note){ notes.addElement(note); // ou notes.add(note); page 79 } Acquisition d ’une instance de la classe et Délégations des opérations à cette instance (ici notes) Avantages Couplage faible Réutilisation, maintenance, évolution accrues

BlueJ_VII 13 Schéma du Pattern Délégation public class ClasseA{ //données d ’instance private ClasseB classeB; //constructeur public classeA(){ classeB = new ClasseB(); } //méthodes public void m(){classB.m1();} // délégation à m1... } public class ClasseB{ public void m1(){...} } Les clients utilisent la classe A

BlueJ_VII 14 Pattern Immutable Robustesse et maintenance Une fois créé, l ’état de l ’objet ne peut changer Pas de méthodes permettant de modifier l ’état interne, Uniquement des accesseurs ou des méthodes de lecture, Toute méthode qui engendre un nouvel état doit mémoriser celui_ci dans une nouvelle instance de la même classe, plutôt que de modifier l ’état de l ’objet Exemple : java.lang.String Avec BlueJ menu Tools -> Use LibraryClass -> java.lang.String

BlueJ_VII 15 Immutable comme java.lang.String L ’état de s est figé si « les objets d ’abord » représente l ’état de l ’objet, celui-ci ne peut être modifié // même si l ’écriture ci-dessous tente d ’indiquer le contraire... String s = new("les objets d'abord"); s.toUpperCase(); System.out.println(s);

BlueJ_VII 16 Pattern Immutable un exemple public class Point{ private int x; private int y; public Point(int x, int y){ this.x = x; this.y = y; } public int getX(){ return x; } public int getY(){ return y; } public Point déplacer( int enX, int enY){ return new Point( x + enX, y + enY); }

BlueJ_VII 17 Schéma du Pattern Immutable public class ClasseA{ //données d ’instance private ClasseB état; //constructeur public ClasseA(){ état = new ClasseB(); } //méthodes public ClasseB getEtat(){return état;} public ClasseA m( ){... return new ClasseA(état.m());... }

BlueJ_VII 18 Zuul : le découpage logique

BlueJ_VII 19 Les classes de zuul La classe "CommandWords" recense les mots-clés autorisés et détermine si une commande de l'utilisateur est valide.CommandWords La classe "Command" engendre une commande de l'utilisateur.Command La classe "Room" permet de créer les pièces du jeu, une pièce représente une scène.Room La classe "Parser" permet de lire le texte entré par l'utilisateur et le transforme en commande.Parser La classe "Game" est la classe principale du jeu (méthode play)Game

BlueJ_VII 20 Les méthodes de chaque classe

BlueJ_VII 21 Comment découper ? Quelle recette ?  discussion

BlueJ_VII 22 Les patterns : une réponse  La classe : granularité trop fine  Assemblage de classe = un nom Donc  Meilleure Abstraction dans le développement  Distribution de la responsabilité des classes  Maintenance plus facile  Évolution plus aisée  Réutilisation accrue. Mais comment choisir ?

BlueJ_VII 23 Résumé, synthèse Nécessaire abstraction Interface et proxy abordés un peu plus tard D ’autres Patterns un catalogue initial existe (livre culte) Design Pattern par Gamma, Help, Johnson et Vlissides Éditeur Addison-Wesley ISBN Les 3 tomes de M.Grand, Patterns in Java