Chapitre 4: Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software.

Slides:



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

Les fonctions A quoi ça sert ?
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
Introduction à la programmation objet Langage Java
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Introduction à la POO: Les classes vs les objets
Programmation par Objets et Java
Principes de programmation (suite)
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
Principes de programmation (suite)
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,
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.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
POO : Objets et classes (Rappels)
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
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
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 :
CSI1502 Principes fondamentaux en conception des logiciels
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é.
Procédures et fonctions
4 Introduction des objets. Les chaînes et tableaux
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
Tutorat en bio-informatique
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.
Réaliser par: Sadok Amel Cheboui hassiba
Introduction au langage C Fonctions et Procédures
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.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
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.
Langage de Programmation Orientée Objet : C++
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Chapitre 2: Objets et Types de base Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William.
Chapitre 7: Héritage Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software.
Chapitre 5: Améliorer les Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Introduction à l’Informatique Licence SPI Mme Delmotte.
Chapitre 6: Tableaux et Vecteurs Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis et William Loftus.
Introduction à la Programmation Orientée Objet H.GATI.
Transcription de la présentation:

Chapitre 4: Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software Solutions est publié par Addison-Wesley Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes.

2 Ecrire des classes b On a utilisé des classes prédéfinies. On apprendra à écrire nos propres classes pour définir de nouveaux objets b Chapitre 4 se concentre sur : Déclarations de classesDéclarations de classes Déclarations de méthodesDéclarations de méthodes Variables instanciéesVariables instanciées EncapsulationEncapsulation Overloading de méthodesOverloading de méthodes Objets graphiquesObjets graphiques

3 Objets b Un objet possède : état - caractéristiques qui le décriventétat - caractéristiques qui le décrivent comportement - ce qu’il peut faire (ou ce qu’on peut lui faire)comportement - ce qu’il peut faire (ou ce qu’on peut lui faire) b Par exemple, soit une pièce de monnaie qui peut être “pile” ou “face” b L’état de la pièce est son côté courant (pile ou face) b Le comportement de la pièce est qu’elle peut être lancée (jouer à pile ou face) b Ici le comportement de la pièce peut changer son état

4 Classes b Une classe est comme un “moule” pour des objets b C’est le modèle d’après lequel les objets sont créés  Par exemple, la classe String est utilisée pour définir des objets de type String  Chaque objet String contient des caractères spécifiques (son état)  Chaque objet String peut fournir des services (comportements) tel toUpperCase

Classes  La classe String est fournie par la librairie standard de classes de Java b On peut aussi écrire nos propres classes qui définiront des objets spécifiques selon nos besoins b Par exemple, supposons qu’on désire écrire un programme pour simuler un jeu de pile ou face  On peut écrire une classe Coin pour représenter un objet  On peut écrire une classe Coin pour représenter un objet coin

Classes b Une classe contient des déclarations de données et des déclarations de méthodes int x, y; char ch; Déclarations des données Déclarations des méthodes

Portée des données b La portée des données est la partie d’un programme dans laquelle ces données peuvent être utilisées (référencées) b Les données déclarées au niveau de la classe peuvent être utilisées par toutes les méthodes dans cette classe b Les données déclarées à l’intérieur d’une méthode peuvent seulement être utilisées dans cette méthode b Les données déclarées à l’intérieur d’une méthode sont appelées des données locales

Méthodes b Une déclaration de méthode spécifie le code qui sera exécuté lorsque la méthode est appelée b Lorsqu’une méthode est appelée, le contrôle de flux se rend à la méthode et exécute son code b Lorsque terminé, le flux retourne à l’endroit d’où la méthode a été appelée, et continue b L’appel peut retourner une valeur ou non, dépendant de la définition de la méthode

myMethod(); myMethodcalcul Contrôle de flux des méthodes b La méthode appelée peut être dans la même classe. Dans ce cas, seulement le nom de la méthode est nécessaire

doIt helpMe helpMe(); obj.doIt(); main Contrôle de flux des méthodes b La méthode appelée peut faire partie d’une autre classe ou d’un autre objet

La classe Coin  Dans notre classe Coin on peut définir les données suivantes : face, un entier qui représente la face couranteface, un entier qui représente la face courante FACE et PILE, des constantes entières qui représentent les deux états possiblesFACE et PILE, des constantes entières qui représentent les deux états possibles b On peut définir les méthodes suivantes : Un constructeur Coin, pour initialiser l’objetUn constructeur Coin, pour initialiser l’objet Une méthode flip, pour lancer la pièceUne méthode flip, pour lancer la pièce Une méthode getFace, pour retourner la face couranteUne méthode getFace, pour retourner la face courante Une méthode toString, pour retourner une chaîne de caractères à imprimerUne méthode toString, pour retourner une chaîne de caractères à imprimer

La classe Coin b Voir CountFlips.java (page 179) CountFlips.java b Voir Coin.java (page 180) Coin.java  Une fois la classe Coin définie, on peut la réutiliser dans d’autres programmes  Notez que le programme CountFlips n’utilisait pas la méthode toString b Un programme n’utilisera pas nécessairement tous les services offerts par un objet

Données instanciées  La variable face dans la classe Coin est appelée une donnée instanciée parce que chaque instance (objet) de la classe Coin a sa propre variable b Une classe déclare le type des données, mais elle ne réserve pas d’espace mémoire pour elles  Chaque fois qu’un objet Coin est créé, une nouvelle variable face est aussi créée b Les objets d’une classe partagent les définitions des méthodes, mais ils ont leur espace unique pour les données b C’est la seule façon pour que deux objets peuvent avoir des états différents

Données instanciées b Voir FlipRace.java (page 182) FlipRace.java face 0 coin1 int face; class Coin face 1 coin2

15 Encapsulation b Un objet peut être vu de deux façons : interne - ses données et les algorithmes utilisés par ses méthodesinterne - ses données et les algorithmes utilisés par ses méthodes externe - l’interaction de l’objet avec les autres objets dans le programmeexterne - l’interaction de l’objet avec les autres objets dans le programme b Du point de vue externe, l’objet est une entité encapsulée, fournissant un ensemble de services spécifiques b Ces services définissent l’interface à l’objet b Rappel: au Chapitre 2, on a défini un objet comme une abstraction, qui cache les détails du reste du système

16 Encapsulation b Un objet devrait être self-governing b Tout changement à l’état de l’objet (ses variables) devrait être fait par les méthodes de cet objet b On devrait rendre difficile, et même impossible, pour un objet de modifier l’état d’un autre objet b L’usager, ou client, d’un objet peut appeler ses services, mais il ne devrait pas être au courant de comment ces services sont réalisés

17 Encapsulation b Un objet encapsulé peut être interprété comme une boîte noire b Son fonctionnement interne est caché au client, qui ne peut accéder qu’aux méthodes par leur interface Client Méthodes Données

18 Modificateurs de visibilité b En Java, l’encapsulation est réalisée par l’utilisation appropriée des modificateurs de visibilité b Un modificateur est un mot réservé en Java qui spécifie les caractéristiques particulières d’une méthode ou d’une donnée  On a déja utilisé le modificateur final pour définir une constante  Java a trois modificateurs de visibilité : public, private, et protected  On discutera plus tard du modificateur protected

19 Modificateurs de visibilité b Les membres d’une classe déclarés de visibilité publique peuvent être accédés de n’importe où b Les membres déclarés de visibilité privée peuvent seulement être accédés de l’intérieur de la classe b Les membres déclarés sans modificateur de visibilité ont la visibilité de défaut et peuvent être accédés par toute classe dans le même package b Les modificateurs en Java sont discutés en détail à l’Appendice F

20 Modificateurs de visibilité b Comme règle générale, aucune donnée d’un objet ne devrait être déclarée de visibilité publique b Les méthodes qui fournissent les services de l’objet sont habituellement déclarées de visibilité publique pour qu’elles puissent être appelées par les clients b Les méthodes publiques sont aussi appelées des méthodes de service b Une méthode créée simplement pour aider une méthode de service est appelée une méthode de support b Puisqu’une méthode de support n’est pas supposée être appelée par un client, elle ne devrait pas être déclarée de visibilité publique

Les déclarations de méthodes b Une déclaration de méthode commence avec un entête de méthode char calc (int num1, int num2, String message) nom de méthode type de retour liste de paramètres La liste de paramètres spécifie le type et le nom de chaque paramètre Le nom d’un paramètre dans la déclaration de la méthode est appelé un argument formel

Les déclarations de méthodes b L’entête d’une méthode est suivi par le corps de la méthode char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } L’expression retournée doit être compatible avec le type de retour sum et result sont des données locales Elles sont créées chaque fois que la méthode est appelée, et sont détruites lorsque la méthode termine son exécution

23 L’énoncé de retour b Le type de retour d’une méthode indique le type de la valeur que la méthode retourne à l’appelant  Une méthode qui ne retourne pas une valeur a un type de retour void  L’énoncé de retour spécifie la valeur qui sera retournée  L’énoncé de retour return spécifie la valeur qui sera retournée b Son expression doit être conforme avec le type de retour

Paramètres b Chaque fois qu’une méthode est appelée, les arguments actuels dans l’appel sont copiés dans les arguments formels char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } ch = obj.calc (25, count, "Hello");

25 Les constructeurs b Rappel: un constructeur est une méthode spéciale utilisée pour initialiser un objet nouvellement créé b Un constructeur : A le même nom que sa classeA le même nom que sa classe Ne retourne pas de valeurNe retourne pas de valeur N’a pas de type de retour, même pas voidN’a pas de type de retour, même pas void Souvent initialise les valeurs des variables d’instanceSouvent initialise les valeurs des variables d’instance b Le programmeur n’est pas obligé de définir un constructeur pour une classe

Ecrire des classes b Voir BankAccounts.java (page 188) BankAccounts.java b Voir Account.java (page 189) Account.java b Un objet composé (aggregate) est un objet qui contient des références à d’autres objets  Un objet Account est un objet composé parce qu’il contient une référence à un objet String (qui contient le nom du propriétaire) b Un objet composé représente une relation a-un b Un compte bancaire a un nom

Ecrire des classes b Parfois un objet doit interagir avec d’autres objets du même type  Par exemple, on peut additionner deux objets nombres rationnels ( Rational ) comme suit : r3 = r1.add(r2);  Un objet ( r1 ) exécute la méthode et l’autre objet ( r2 ) est passé en paramètre b Voir RationalNumbers.java (page 196) RationalNumbers.java b Voir Rational.java (page 197) Rational.java

28 Surcharger une méthode b Surcharger une méthode (method overloading) utilise le même nom de méthode pour plusieurs méthodes b La signature de chaque méthode surchargée doit être unique b La signature inclut le nombre, type et ordre des paramètres b Le compilateur doit être capable de déterminer quelle version de la méthode est appelée en analysant les paramètres b Le type de retour de la méthode ne fait pas partie de la signature

Surcharger une méthode float tryMe (int x) { return x +.375; } Version 1 float tryMe (int x, float y) { return x*y; } Version 2 result = tryMe (25, 4.32)Sélectionne

30 Surcharger une méthode  La méthode est surchargée :  La méthode println est surchargée : println (String s) println (int i) println (double d) etc. etc.  Les lignes suivantes appellent différentes versions de la méthode println : System.out.println ("The total is:"); System.out.println (total);

31 Surcharger une méthode b Les constructeurs peuvent être surchargés b Un constructeur surchargés permet plusieurs façons d’initialiser un nouvel objet b Voir SnakeEyes.java (page 203) SnakeEyes.java b Voir Die.java (page 204) Die.java

La classe StringTokenizer  L’exemple suivant utilise la classe StringTokenizer, définie dans le package java.util  Un objet StringTokenizer sépare un chaîne de caractères en des sous-chaînes plus petites (tokens) b Par défaut, le tokenizer sépare la chaîne aux espaces blancs  Le constructeur StringTokenizer prend en paramètre la chaîne originale à séparer  Chaque appel à la méthode nextToken method retourne le prochain élément de la chaîne

Décomposition de méthodes b Une méthode devrait être relativement petite, pour être facilement compréhensible comme une seule entité b Une méthode plus grosse devrait être décomposée en plusieurs méthodes plus petites nécessaires pour la compréhension b Ainsi une méthode de service d’un objet peut appeler une ou plusieurs méthodes de support pour accomplir son but b Voir PigLatin.java (page 207) PigLatin.java b Voir PigLatinTranslator.java (page 208) PigLatinTranslator.java

Les méthodes Applet  Dans les exemples précédents, on a utilisé la méthode paint de la classe Applet pour dessiner dans un applet  La classe Applet a plusieurs méthodes qui sont appelées automatiquement à certains moments durant l’activité d’un applet  La méthode init est exécutée seulement une fois lorsque l’applet est chargé  La classe Applet contient aussi d’autres méthodes qui aident généralement au traitement dans l’applet

Objets graphiques b Tout objet qu’on définit en écrivant une classe peut avoir des éléments graphiques  L’objet doit simplement obtenir un contexte graphique (un objet Graphics ) dans lequel dessiner b Un applet peut passer son contexte graphique à un autre objet comme pour tout autre paramètre b Voir LineUp.java (page 212) LineUp.java b Voir StickFigure.java (page 215) StickFigure.java