Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 2: Review of Object Orientation.

Slides:



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

Spécialisation/généralisation Héritage Polymorphisme
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
(Classes prédéfinies – API Java)
Introduction à Java - les paquetages -
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Programmation par Objets et Java
Chapitre III Héritage (début)
Principes de programmation (suite)
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
La programmation Orienté Objet
Programmation orientée objet
Principes de la technologie orientée objets
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Langage Oriente Objet Cours 4.
Mémoire de fin d’études présenté par Amine Brikci-Nigassa
Principes de programmation (suite)
Algorithmique et Programmation
IFT1025, Programmation 2 Jian-Yun Nie
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,
C++ : classes Introduction aux Langages Orientés Objets
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
Structures de données IFT-10541
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 au paradigme orienté-objet (suite)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
Langages orientés objets
COURS DE PROGRAMMATION ORIENTEE OBJET :
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 2: Review of Object Orientation.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
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.
Structures de données IFT-2000 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Héritage et composition
Travaux Pratiques Représentation des connaissances
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
Créer des packages.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
Introduction à la programmation objet en C++
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
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.
Les classes Introduction aux Langages Orientés Objets
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Héritage Conception par Objet et programmation Java
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Introduction à la Programmation Orientée Objet
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Paradigme Orienté Objet
Transcription de la présentation:

Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 2: Review of Object Orientation

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation2 2.1 Qu’est-ce que l’Orientation Objet? Paradigme procédural: Le logiciel est organisé autour de la notion de procédures Abstraction de procédures —Fonctionne bien lorsque les données sont simples Abstraction de données —Grouper ensemble les données décrivant une même entité —Aide à réduire la complexité du système Paradigme orienté objet: Les abstractions de procédures sont placées à l’intérieur des abstractions de données

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation3 Paradigme Orienté Objet Une approche consistant à organiser la solution d’un problème autour du concept d’objets. Ces objets sont des instances de classes: —Ce sont des abstractions de données —Contenant des abstractions de procédures Un programme devient alors un ensemble d’objets collaborant entre eux afin d’effectuer un tâche donnée

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation4 Illustration des ces deux paradigmes

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation5 2.2 Classes et Objets Un objet est un ensemble structuré de données s’exécutant dans un logiciel a des propriétés —représentant son état a un comportement —définissant ses actions et réactions —simulant parfois le comportement d’un objet du monde réel

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation6 Objets

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation7 Classes Une classe: Est une unité d’abstraction dans un programme orienté- objet Représente des objets similaires —ses instances Est un module logiciel —Décrivant la structure de ses instances (propriétés) —Contenant des méthodes définissant leur comportement

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation8 Classe ou instance? Quelque chose pouvant avoir des instances est une classe Quelque chose est une instance si il est l’un des éléments d’un ensemble (défini par la classe) Film Classe; ses instances sont les différents films. Bobine de Film: Classe; ses instances sont chacune des bobines existantes Bobine de film portant le numéro de série SW19876 Une instance de BobineDeFilm Science Fiction Instance de la classe Genre. Film de Science Fiction Classe; une de ses instances est le film ‘Star Wars’ Représentation du film ‘Star Wars’ au cinéma Le Phoenix à 19h: Une instance de Representation

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation9 Donner un nom à une classe Devrait toujours débuter par une lettre majuscule —E.g. Banque not banque Utiliser le singulier Utiliser le bon niveau de généralité —E.g. Municipalité pourrait être préférable à Ville Donner un nom non ambigu ayant un sens précis —E.g. Pièce peut avoir plusieurs sens

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Variables d’instances Ce sont des variables définies à l’intérieur d’une classe Attributs —des données simples —E.g. nom, dateDeNaissance Associations —représentent une relation avec d’autres classes —E.g. superviseur, coursSuivis —Plus d’explications à venir au Chapitre 5

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation11 Variables vs. Objets Une variable Réfère à un objet Peut référer à différents objets à différents instants Un objet peut être simultanément référé par plus d’une variable Type d’une variable Détermine quelle classe d’objets elle peut référer

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation12 Variables de classe La valeur d’une telle variable est partagée par toutes les instances de la classe Aussi appelée variable statique Si l’une des instances modifie la valeur d’une variable de classe, alors toutes les autres instances verront ce changement Ces variables sont utiles pour: —représenter des constantes (e.g. PI) —représenter des propriétés d’appliquant à une classe en général Attention: ne pas faire un usage excessif des variables de classes

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Méthodes, Opérations et Polymorphisme Opération Une abstraction procédurale de haut niveau correspondant à un comportement spécifique Indépendante de toute implémentation —E.g., calcul de l’aire d’une figure

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation14 Méthodes, Opérations et Polymorphisme Méthode Une abstraction de procédure utilisée pour implémenter un comportement dans une classe donnée Plusieurs classes différentes peuvent avoir des méthodes de même nom —Généralement c’est qu’elles réalisent la même opération d’une manière propre à chaque classe —E.g, le calcul de l’aire d’un rectangle et d’un cercle

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation15 Polymorphisme Une propriété importante liée au paradigme orienté- objet selon laquelle une même opération s’applique de différente façon dans différente classes Exige l’existence de plusieurs méthodes ayant le même nom La méthode qui sera exécutée par un objet dépend de la classe d’appartenance de cet objet Réduit grandement la nécessité d’insérer des énoncés de contôle tels que le if-else ou le switch

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Organisation des Classes en Hiérarchies Super-classe contient les éléments communs à un ensemble de sous- classes Arbre d’héritage Montre la relation entre super-classes et sous-classes Le triangle est le symbole utilisé pour représenter une généralisation Héritage Le mécanisme selon lequel toutes les sous-classes possèdent implicitement les éléments de leurs super- classes

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation17 Un exemple d’arbre d’héritage

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation18 Règle “est-un(e)” La généralisation obéit toujours à une règle d’état “Un compte chèque est un compte de banque” “Un village est une municipalité” Est-ce qu’une Province devrait être une sous-classe de Pays? Non! —“Une province n’est pas un pays”

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation19 Un arbre d’héritage pour des entités géométriques

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation20 Tous les éléments hérités doivent s’appliquer adéquatement aux sous-classes

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Héritage, polymorphisme et variables

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation22 Quelques opérations pour des formes géométriques

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation23 Classes abstraites et Méthodes abstraites Une opération doit être définie au plus haut niveau d’abstraction possible A ce niveau, l’opération peut être abstraite Dans ce cas la classe devient aussi abstraite —Aucun instance directe peut être créée —Une classe non abstraite est une classe concrète Si une classe possède une opération abstraite, l’une de ses sous-classe doit définir concrètement cette opération —Toutes les opérations d’une classe au bas de l’arbre d’héritage doivent être concrètes

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation24 Redéfinition Une méthode héritée peut être redéfinie Dans un but de restriction —E.g. scale(x,y) ne fonctionne pas dans Circle Dans un but d’extension —E.g. SavingsAccount peut inclure des frais additionnels dans le cas d’un retrait Dans un but d’optimization —E.g. la méthode getPerimeterLength dans Circle est beaucoup plus simple que celle de Ellipse

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation25 Objets immuables Les variables d’instance de tels objets ne peuvent être affectées que lors de la construction Aucune des opérations de ces objets peut changer la valeur de ces variables —E.g. dans un tel cas, la méthode scale devrait plutôt produire un nouvel objet

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation26 Comment se détermine la méthode qui sera exécutée 1.D’abord vérifier si il existe une définition pour cette méthode dans la classe de l’objet de référence 2.Sinon, vérifier dans la super-classe de niveau immédiatement supérieur 3.Répéter l’étape 2, en remontant les niveaux jusqu’à ce qu’une méthode concrète soit trouvée 4.Si aucune méthode concrète n’est trouvée, il y a erreur En Java et C++ une telle erreur est identifiée à la compilation

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation27 Liaison dynamique Se produit lorsque la décision concernant la méthode à exécuter se prend lors de l’exécution du programme Nécessaire lors que: —Une variable réfère à un objet dont la classe d’appartenance fait partie d’une hiérarchie —Et lorsque plus d’une méthode existe pour une même opération (polymorphique)

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Concepts clé de l’orienté objet Pour qu’un langage puisse être dit orienté objet Identité —Chaque objet a une existence distincte —Deux objets demeurent distincts même si leurs variables contiennent les même valeurs Classes —Le programme s’organise en un ensemble de classes décrivant les objets qui feront partie du système Héritage —Le mécanisme permettant aux sous-classes d’hériter des propriétés et comportements de leur super-classes Polymorphisme —Le mécanisme suivant lequel il peut exister plusieurs méthodes pour la même opération

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation29 Concepts clé de l’orienté objet Abstraction Objet -> du monde réel Classe -> objets Super-classe -> sous-classes Opération -> méthodes Attributs et associations -> variables d’instances Modularité Le programme se construit entièrement à l’intérieur de classes Encapsulation Tous les détails sont cachés à l’intérieur des classes Principe de masquage de l’information: —Un programmeur n’a pas besoin de connaître l’intérieur d’une classe pour en faire usage

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation30 Le langage Java Histoire Le premier langage orienté objet fut Simula-67 —Conçu pour faciliter l’écriture de programmes de simulation Au début des années 1980, Smalltalk fut développé à Xerox PARC —Syntaxe nouvelle, importante librairie à code ouvert, indépendance de plate-forme, ramasse-miette, bytecode A la fin des années 1980, C++ fut développé par B. Stroustrup, —Tire profit des avantages de l’orienté-objet tout en profitant de la popularité de C En 1991, les ingénieurs de Sun Microsystems lance un projet afin concevoir un langage à être utilisé dans les petits appareils intelligents: Oak —Avec l’avènement de l’Internet, une nouvelle opportunité se dessine pour cette technologie —Ce nouveau langage renommé Java, fut officiellement lancé en 1995 à la conférence SunWorld ’95

Révision Java 1.Notions de classe 2.Attributs et méthodes 3.Objets et Instantiation 4.Les packages © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation31

Notion de Classe Une classe est un support d’encapsulation : c'est un ensemble de données et de fonctions regroupées dans une même entité. Une classe est une description abstraite d'un objet. Instancier une classe consiste à créer un objet Pour accéder à une classe il faut en déclarer une instance de cette classe (ou un objet). Une classe comporte sa déclaration, des variables et la définition de ses méthodes. © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation32

Syntaxe d’une Classe modificateur class nom_classe [extends super_classe] [implements interface]{ // Insérer ici les champs et les méthodes } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation33 ModificateurRôle publicLa classe est accessible partout privateLa classe n’est accessible qu’à partir du fichier où elle est définie finalLa classe ne peut pas être modifié. abstractLa classe contient une ou des méthodes abstraites. Une classe abstraite ne peut pas être instanciée.

Classe abstraite abstract class GraphicObject { int x, y; void moveTo(int newX, int newY) {... } abstract void draw(); abstract void resize(); } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation34

Classe abstraite class Circle extends GraphicObject { void draw() { … } void resize() { … } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation35

Attributs et Méthodes Les attributs Les données d’une classe sont contenues dans les attributs. Syntaxe générale: [modificateur de visibilité] [= ]; class Rectangle { private int longueur; protected int largeur; public Point Centre; } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation36

Les variables de classe Les variables de classes sont définies avec le mot clé static. Les constantes sont définies avec le mot clé final : public class MaClasse { static int compteur; //Les variables de classe final double pi = 3.14 ; // Une constante } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation37

Les méthodes Les méthodes sont des fonctions qui implémentent les traitements de la classe. Syntaxe générale modificateurs type_retourné nom_méthode ( arg1,... ) { // Définition des variables locales et du bloc d'instructions // Les instructions } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation38

Exemple d’une méthode class Rectangle { private int longueur ; int largeur ; public int calcul_surface ( ) { return (longueur*largeur) ; } public void initialise (int x, int y) { longueur =x ; largeur = y ; } public static void main (String args[]) {... } } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation39

Les constructeurs La déclaration d'un objet est suivie d'une sorte d'initialisation par le moyen d'une méthode particulière appelée constructeur pour que les variables aient une valeur de départ. Le constructeur n'est systématiquement invoquée que lors de la création d'un objet. Le constructeur suit la définition des autres méthodes excepté que son nom doit obligatoirement correspondre à celui de la classe. © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation40

Exemple d’un constructeur class Rectangle { private int longueur ; private int largeur ; Rectangle () {longueur =10 ; largeur = 5 ;} // C’est un constructeur sans paramètres Rectangle (int x, int y) {longueur =x ; largeur = y ;} // constructeur avec 2 paramètres Rectangle (int x) {longueur =2*x ; largeur = x ;} // constructeur avec 1 paramètre } © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation41

Utilisation d’un package En java, il existe un moyen de regrouper des classe voisines ou qui couvrent un même domaine : ce sont les packages. Ex. import nomPackage.*; import java.applet.*; Avantages - Facilite le développement des bibliothèques et des modules autonomes. - Les classes d’un même package travaillent conjointement sur un même domaine. - Facilite la réutilisabilité. © Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation42

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation43 Documentation Être capable de connaître les classes et les méthodes d’un système orienté-objet est fondamental Un outil appelé Javadoc permet de construire automatiquement la documentation associée à un programme écrit en Java —Cette documentation est construite à partir du code et des commentaires écrits par le programmeur —Un format spécial doit être respecté pour les commentaires —Ceux-ci peuvent même inclure du html

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation44 Style de programmation Toujours garder à l’esprit qu’un programme est fait pour être lu Toujours retenir l’alternative la plus simple Écarter toute approche aussi futée soit elle, mais difficile à saisir Un programme plus court n’est pas nécessairement meilleur Choisir des noms appropriés Ils doivent être très descriptifs

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation45 Style de programmation Commenter Tout ce qui pourrait ne pas être évident Les commentaires peuvent représenter de 25à 50% du programme Organiser les classes de façon consistante Variables, constructeurs, méthodes publiques et méthodes privées Structurer le code de façon consistante

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation46 Style de programmation Éviter toute duplication de code Ne pas cloner le code —Créer plutôt une méthode (privée) regroupant le code commun

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation47 Style de programmation Se conformer aux bons principes de l’orienté objet Minimiser le nombre de méthodes publiques Bien séparer les interfaces et l’application

© Lethbridge/Laganière 2001 Chapter 2: Review of Object Orientation Risques et difficultés liés à la programmation orientée objet Les langages sont en constantes évolution mponent.html#action(java.awt.Event, java.lang.Object) L’efficacité peut être quelques fois problématique