Chapitre 3: Classes et objets JAVA PDF 2024-2025

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Document Details

HotSnake5691

Uploaded by HotSnake5691

Institut National des Sciences Appliquées et de Technologie

2024

INSAT

Amira Dkhil

Tags

Java programming object-oriented programming classes programming

Summary

Ce document est un cours sur les classes et les objets en Java. Il couvre les concepts fondamentaux de la programmation orientée objet et explique comment créer des classes, des objets et les interactions entre eux, utiles pour les programmeurs. Une partie de ce cours décrit la notion d'encapsulation et comment utiliser des accesseurs/mutateurs.

Full Transcript

Chapitre 3 Classes et objets JAVA Amira Dkhil Institut National des Sciences Appliquées et de Technologie 2024-2025 Amira Dkhil (INSAT) IIA2...

Chapitre 3 Classes et objets JAVA Amira Dkhil Institut National des Sciences Appliquées et de Technologie 2024-2025 Amira Dkhil (INSAT) IIA2 2024-2025 1 / 58 Plan du chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 2 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 3 / 58 Le package Une classe est définie par son nom et son package d’appartenance (ex: java.lang.String contenant les classees standards tels que System.) Un package est une unité (un fichier) regroupant des classes. La création d’un package est faite comme suit: 1 Choisir le nom du package. 2 Inclure la commande package comme première ligne de code dans votre Java Fichier source. package f o r m e s ; public class Rectangle { int largeur ; int longuer ; } Amira Dkhil (INSAT) IIA2 2024-2025 4 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 5 / 58 La 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é. Instancier une classe consiste à créer un objet sur son modèle. Entre classe et objet il y a, en quelque sorte, le même rapport qu’entre type et variable. 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. Amira Dkhil (INSAT) IIA2 2024-2025 6 / 58 La structure d’une classe [ M o d i f i c a t e u r s ] c l a s s NomDeClasse [ extends c l a s s e m e r e ] [ implements i n t e r f a c e s ] { // A t t r i b u t s [ Modificateurs ] type nomAttribut 1 ; [ Modificateurs ] type nomAttribut 2 ;... //Mé t h o d e s [ M o d i f i c a t e u r s ] t y p e D e R e t o u r nomDeMethode 1 ( params ) { // c o r p s de l a mé t h o d e ; } [ M o d i f i c a t e u r s ] t y p e D e R e t o u r nomDeMethode 2 ( params ) { // c o r p s de l a mé t h o d e ; }... } Amira Dkhil (INSAT) IIA2 2024-2025 7 / 58 Fichier de classe On ne peut définir qu’une seule classe par fichier. Elle doit avoir très exactement le même nom que celui du fichier (sans l’extension, bien entendu). Amira Dkhil (INSAT) IIA2 2024-2025 8 / 58 La classe: exemple Amira Dkhil (INSAT) IIA2 2024-2025 9 / 58 La classe Une classe se compose de deux parties : (1) un en-tête et (2) un corps. 1 L’en-tête: Les modificateurs de classe (optionnels) sont : abstract, final, et la visibilité (private, public); Le mot clé class suivie du nom de la classe (obligatoire); Le mot-clé extends suivie du nom de la superclasse (optionnel); Le mot-clé implements suivie de la liste des noms des interfaces (optionnel). 2 Le corps: entouré des accolades ouvrante et fermante (... ), il contient les déclarations des attributs et méthodes. Amira Dkhil (INSAT) IIA2 2024-2025 10 / 58 Les modificateurs de visibilité Selon leur niveau de visibilité, les classes, les attributs et les méthodes peuvent être accessibles ou non depuis des classes du même paquetage ou depuis des classes d’autres paquetages. Pour indiquer les degrés de visibilité, on utilise des modificateurs de visibilité. Ces modificateurs sont indiqués devant l’en-tête d’une classe ou d’une méthode ou devant le type d’un attribut. Lorqu’il n’y a pas de modificateur, on dit que la visibilité est la visibilité par défaut. Amira Dkhil (INSAT) IIA2 2024-2025 11 / 58 Les modificateurs de visibilité d’une classe Public La classe est accessible partout public class Rectangle { Double l a r g e u r ; Double l o n g u e r ; } Amira Dkhil (INSAT) IIA2 2024-2025 12 / 58 Les modificateurs de visibilité d’une classe Par défaut Si aucun modificateur d’accès n’est déclaré,la classe sera accessible par l’ensemble des classes situées dans le paquetage parent mais en aucun cas, à l’extérieur de ce dernier. class Rectangle { Double l a r g e u r ; Double l o n g u e r ; } Amira Dkhil (INSAT) IIA2 2024-2025 13 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 14 / 58 Objet: instance d’une classe Instance La création d’un objet à partir d’une classe est appelée instanciation. Cet objet est une instance de sa classe. Déclaration MaClasse m; m = new MaClasse ( ) ; // ou b i e n MaClasse m = new MaClasse ( ) ; Exemple Rectangle r 1 = new R e c t a n g l e ( ) ; Amira Dkhil (INSAT) IIA2 2024-2025 15 / 58 L’opérateur ”new” L’opérateur new est un opérateur de haute priorité qui permet d’instancier des objets et d’appeler une méthode particulière de cet objet: le constructeur. Il fait appel à la machine virtuelle pour obtenir l’espace mémoire nécessaire à la représentation de l’objet. Appelle le constructeur pour initialiser l’objet dans l’emplacement obtenu. Il renvoie une valeur qui référence l’objet instancié. Exemple Rectangle r 1 = new R e c t a n g l e ( 1 0. 5 , 1 5 ) ; Amira Dkhil (INSAT) IIA2 2024-2025 16 / 58 Objet et référence Exemple Rectangle r 1 = new R e c t a n g l e ( 1 0. 5 , 1 5 ) ; Une référence est un identifiant unique d’un objet. Une référence d’objet est une information sur la manière de le trouver. L’objet est un fragment de la mémoire principale ; une référence à l’objet est un moyen d’accéder à ce fragment de mémoire. #502 est la référence de l’objet r1. Amira Dkhil (INSAT) IIA2 2024-2025 17 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 18 / 58 Le constructeur par défaut Si l’on n’écrit aucun constructeur pour une classe donnée, il est possible d’utiliser le constructeur par défaut qui se contente d’allouer un emplacement mémoire (il n’initialise pas les attributs). Exemple: Si la classe Point n’a pas de constructeurs, on peut écrire: Point p1 = new P o i n t ( ) ; Amira Dkhil (INSAT) IIA2 2024-2025 19 / 58 La référence null Le mot clé null permet de représenter la référence qui ne représente rien. On peut assigner cette valeur à n’importe quelle variable ou attribut contenant une référence. C’est aussi la valeur par défaut d’initialisation des attributs représentant des références. c l a s s Test { P o i n t p1 ; // i n i t i a l i s a t i o n à n u l l p a r dé f a u l t. void methode ( ) { i f ( p1==n u l l ) p1 = new P o i n t ( ) ; } } Amira Dkhil (INSAT) IIA2 2024-2025 20 / 58 Le constructeur Une méthode simplifiant la création d’un objet. Une méthode d’instance spéciale pour initialiser un objet: Méthode d’instance possédant le nom de la classe. Pas de type de retour. Peut posséder des paramètres. Le constructeur est appelé automatiquement pendant un new: new commence par allouer un objet. Puis appelle le constructeur avec comme receveur le nouvel objet. Et, enfin, renvoie l’objet. Amira Dkhil (INSAT) IIA2 2024-2025 21 / 58 Exemple: classe Point (1) p u b l i c c l a s s PointSC { p u b l i c c l a s s PointAC { i n t x ; // a b s c i s s e du p o i n t i n t x ; // a b s c i s s e du p o i n t i n t y ; // o r d o n n é e du p o i n t i n t y ; // o r d o n n é e du p o i n t public Point ( int a , int b){ public void t r a n s l a t e r ( i n t x=a ; y=b ; } dx , i n t dy ) { public void t r a n s l a t e r ( i n t x=x+dx ; dx , i n t dy ) { y=y+dy ; x=x+dx ; } y=y+dy ; } } } Listing 1: sans constructeur Listing 2: avec constructeur P o i n t p1 = new PointSC ( ) P o i n t p1 = new PointAC ( 5 , 1 0 ) Amira Dkhil (INSAT) IIA2 2024-2025 22 / 58 Exemple: classe Point (2) Écrire un programme principal de test pour les deux classes point ”PointSC” et ”PointAC”. Amira Dkhil (INSAT) IIA2 2024-2025 23 / 58 Exemple: classe Point (3) public c l a s s TestPointSC { p u b l i c c l a s s TestPointAC { p u b l i c s t a t i c v o i d main ( p u b l i c s t a t i c v o i d main ( String args [ ] ) { String args [ ] ) { P o i n t p = new P o i n t ( ) ; P o i n t p = new P o i n t p. x =5; (5 ,10) ; p. y =10; p. t r a n s l a t e r (2 , 2) ; p. t r a n s l a t e r (2 , 2) ; System. o u t. p r i n t ( "x="+p. System. o u t. p r i n t ( "x="+p. x+"y="+p. y ) ; x+"y="+p. y ) ; } } Listing 4: classe main avec Listing 3: classe main sans constructeur constructeur Amira Dkhil (INSAT) IIA2 2024-2025 24 / 58 Types de constructeurs class Rectangle { int longueur ; int largeur ; R e c t a n g l e ( ) { l o n g u e u r =10 ; l a r g e u r = 5 ; } // C ’ e s t un c o n s t r u c t e u r s a n s param è t r e s //OU R e c t a n g l e ( i n t x , i n t y ) { l o n g u e u r =x ; l a r g e u r = y ;} // c o n s t r u c t e u r a v e c 2 param è t r e s //OU R e c t a n g l e ( i n t x ) { l o n g u e u r =2∗x ; l a r g e u r = x ;} // c o n s t r u c t e u r a v e c 1 param è t r e } Amira Dkhil (INSAT) IIA2 2024-2025 25 / 58 Création d’objets identiques On peut avoir besoin de créer deux objets absolument identiques. Examinons le code suivant : P o i n t p1 = new P o i n t ( ) ; P o i n t p2 = p1 ; p1 et p2 contiennent la même référence donc p1 et p2 pointent le même objet (en fait, c’est le même objet). La modification des valeurs des attributs de p1, modifie aussi celles de p2. Amira Dkhil (INSAT) IIA2 2024-2025 26 / 58 Création d’objets identiques: La méthode clone() Pour créer une copie d’un objet, il est possible d’utiliser la méthode clone(). La méthode clone() est héritée de la classe Object qui est la classe mère de toutes les classes en Java. La méthode clone() permet de créer un deuxième objet indépendant mais identique à l’objet appelant. P o i n t p1 = new P o i n t ( ) ; P o i n t p2 = p1. c l o n e ( ) ; p1 et p2 ne contiennent plus la même référence et pointent donc sur des objets différents. Amira Dkhil (INSAT) IIA2 2024-2025 27 / 58 Création d’objets identiques: : Constructeur de copies Une autre solution pour créer des objets identiques consiste à définir un constructeur de copie; Exemple : Constructeur de copies de la classe Point. public class Point { p r i v a t e double x ; p r i v a t e double y ; // C o n s t r u c t e u r p u b l i c P o i n t ( double x , double y ) { t h i s. x=x ; t h i s. y=y ; } //CONSTRUCTEUR DE COPIES public Point ( Point p){ this. x = p. x ; t h i s. y= p. y ; }} Amira Dkhil (INSAT) IIA2 2024-2025 28 / 58 Création d’objets identiques: : Constructeur de copies Exemple : Création d’un objet de la classe Point en utilisant le constructeur de copies. P o i n t p1= new P o i n t ( 4. 0 , 2. 0 ) ; P o i n t p2= new P o i n t ( p1 ) ; Amira Dkhil (INSAT) IIA2 2024-2025 29 / 58 Comparaison de copies L’opérateur ”==” compare les références de deux objets. Deux objets avec des propriétés identiques sont deux objets distincts. La méthode equals(Object o) héritée de la classe Object peut être re-définie pour comparer l’égalité des variables de deux instances. Par défaut (sans re-définition), la méthode renvoie ”true” si les 2 objets ont les mêmes références. P o i n t P1 = new P o i n t ( 1 5 , 2 0 ) ; P o i n t P2 = new P o i n t ( 1 0 , 2 0 ) ; i f ( P1 == P1 ) {... } // v r a i i f ( P1 == P2 ) {... } // f a u x i f ( P1. e q u a l s ( P2 ) ) {... } // f a u x s i p a s de r e −dé f i n i t i o n Amira Dkhil (INSAT) IIA2 2024-2025 30 / 58 La référence this Lorsqu’une méthode d’un objet référence un attribut x de cet objet, l’écriture this.x est implicite. Le mot clé this représente une référence sur l’objet courant (celui qui est entrain d’exécuter la méthode contenant le this). La référence this peut être utile: Lorsqu’une variable locale ou paramètre d’une méthode porte le même nom qu’un attribut de la classe. Pour déclencher un constructeur depuis un autre constructeur. Amira Dkhil (INSAT) IIA2 2024-2025 31 / 58 Utilisation this: exemple c l a s s Date { i n t j o u r =1, mois =1, an =1990; Date ( ) { an = 2 0 0 0 ; } // p e u t s ’ é c r i r e : t h i s. an =2000 Date ( i n t an ) { t h i s. an=an ; } // l e param è t r e en c a c h e l ’ a t t r i b u t an Date ( i n t an , i n t mois , i n t j o u r ) { t h i s ( an ) ; // A p p e l du d e u x i ème c o n s t r u c t e u r t h i s. j o u r=j o u r ; t h i s. mois=mois ; } } Amira Dkhil (INSAT) IIA2 2024-2025 32 / 58 Suppression d’objets Les objets ne sont pas des éléments statiques et leur durée de vie ne correspond pas forcément à la durée d’exécution du programme. La durée de vie d’un objet passe par trois étapes : 1 La déclaration et la création de l’objet. 2 L’utilisation de l’objet en appelant ces méthodes. 3 La suppression de l’objet : elle est automatique en Java grâce au récupérateur de mémoire (Garbage Collector: GC). Le GC permet de supprimer automatiquement les objets qui ne sont plus référencés par le programme. En C++, c’est le programmeur qui s’occupe de la suppression des objets inutiles. Amira Dkhil (INSAT) IIA2 2024-2025 33 / 58 Gestion de la mémoire Compte Tab [ ]= new Compte [ 3 ] ; // 1 A: ni 1 ni 2 ne Compte c1 = new Compte ( ) ; // 2 peuvent être GC, car Tab et Tab [ 0 ] = c1 ; c1 sont toujours System. gc ( ) ; //A référencés. B: 1 peut être Tab [ 1 ] = new Compte ( ) ; // 3 libéré, ainsi que Tab=n u l l ; 3 par voie de conséquence. System. gc ( ) ; //B C: En C, 1, 2 et 3 peuvent être c1=n u l l ; libéré. System. gc ( ) ; //C Amira Dkhil (INSAT) IIA2 2024-2025 34 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 35 / 58 Membres d’instances On désigne par membres d’instance les attributs et les méthodes non statiques qui ne sont accessibles qu’à partir d’une instance de classe (objet). L’accès aux membres nécessite l’instanciation de la classe les contenant. La valeur d’un attribut d’instance est différente pour chaque instance. Amira Dkhil (INSAT) IIA2 2024-2025 36 / 58 Membre d’instances public class Personne { S t r i n g Nom ; public Personne ( S t r i n g n ) { Nom=n ; } p u b l i c void a f f i c h e r ( ) { System. o u t. p r i n t l n ( "Je m’appelle "+ Nom) ; } } ”Nom” et ”afficher” sont les membres d’instances. Amira Dkhil (INSAT) IIA2 2024-2025 37 / 58 Membres d’instances L’accès aux membres à l’extérieur de la classe se fait par un ”. ” précédé par le nom de l’instance. Syntaxe: < nom instance >. < nom attribut > À l’intérieur de la classe, il suffit d’indiquer le nom de l’attribut. Amira Dkhil (INSAT) IIA2 2024-2025 38 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 39 / 58 Membres de classe Un membre (attribut ou méthode) déclaré avec le modificateur static est un membre de classe. Les attributs statiques sont commun à toutes les instances de classe. Les attributs statiques sont initialisés par défaut à 0 pour les nombres entiers et réels, à false pour les booléens et à null pour les références. Une méthode de classe ne peut utiliser que les attributs et les méthodes statiques et ne peut pas faire référence à l’objet courant (this). Amira Dkhil (INSAT) IIA2 2024-2025 40 / 58 Membres de classe Il n’est pas nécessaire d’instancier une classe pour accéder à un des membres statiques. On peut y accéder sans création d’instance de la classe. NomClasse.membre On accède à un attribut statique via : Une instance quelconque de la classe. Le nom de la classe directement. Amira Dkhil (INSAT) IIA2 2024-2025 41 / 58 Membre d’instances class Rectangle { s t a t i c i n t c o u n t =0; int longueur , l a r g e u r ; p r i v a t e i n t num ; ; Rectangle ( int x , int y ){ Count++; l o n g u e u r = x ; l a r g e u r = y ; num = c o u n t ; }....... L e s a u t r e s mé t h o d e s } Amira Dkhil (INSAT) IIA2 2024-2025 42 / 58 Les méthodes statiques L’accès à une méthode se fait soit à travers le nom de la classe ou à travers un objet de la classe. P u b l i c c l a s s Math { s t a t i c d o u b l e PI = 3. 1 4 ; // c ’ e s t un a t t r i b u t s t a t i q u e s t a t i c d o u b l e g e t P I ( ) { R e t u r n ( PI ) ; } // La mé t h o d e s t a t i q u e m a n i p u l e d e s a t t r i b u t s s t a t i q u e s s t a t i c d o u b l e d i a m e t r e ( double r ) { r e t u r n ( PI ∗2∗ r ) } // C ’ e s t une mé t h o d e s t a t i q u e s t a t i c d o u b l e p u i s s a n c e ( double x ) { r e t u r n ( x ∗ x ) ; } // C ’ e s t une mé t h o d e s t a t i q u e } c l a s s Test Math { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { double i= Math. p u i s s a n c e ( 6 ) ; System. o u t. p r i n t l n ( "I=" + i ) ; Math m = new Math ( ) ; double d = m. d i a m e t r e ( 5. 1 ) ; System. o u t. p r i n t l n ( " Le diametre = " + d ) ; } } Amira Dkhil (INSAT) IIA2 2024-2025 43 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 44 / 58 Encapsulation L’encapsulation est la possibilité de masquer une partie des membres d’un objet (attributs et méthodes), c’est-à dire en empêchant l’accès direct à ces membres depuis l’extérieur. La liste des méthodes et des attributs utilisables depuis l’extérieur est appelée l’interface de la classe. Amira Dkhil (INSAT) IIA2 2024-2025 45 / 58 La visibilité des membres Pour les méthodes et attributs au sein des classes, le programmeur en Java dispose de 3 niveaux de contrôle d’accès, qu’il fixe à l’aide de 3 modificateurs de visibilité. public: les éléments publics sont accessibles sans aucune restriction. protected: les éléments protégés ne sont accessibles que depuis la classe (et les classes dans le même paquet) et les sousclasses qui en héritent. private: les éléments privés ne sont accessibles que depuis la classe elle-même. La visibilité par défaut, quand rien n’est spécifié, est équivalente à public. Amira Dkhil (INSAT) IIA2 2024-2025 46 / 58 La visibilité des membres Amira Dkhil (INSAT) IIA2 2024-2025 47 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 48 / 58 Les méthodes d’accès les données membres d’une classe sont rendues privées pour en restreindre l’accès direct. Ainsi, les membres de données encapsulés ne peuvent pas être récupérés ou modifiés sans un moyen correctement défini. Pour cela, nous définissons des méthodes d’accès et de mutation. Amira Dkhil (INSAT) IIA2 2024-2025 49 / 58 Un autre avantage... Si on décide de modifier un attribut, il suffit de modifier le code de l’accesseur lui-même, c’est-à-dire une seule ligne du programme, alors qu’il aurait fallu modifier toutes les lignes où l’attribut était utilisé si l’on n’avait pas employé d’accesseur. Amira Dkhil (INSAT) IIA2 2024-2025 50 / 58 Les accesseurs Les accesseurs de lecture sont des méthodes qui permettent de lire les attributs des objets; Les noms des accesseurs de lecture commencent généralement par get suivi par le nom de l’attribut; Exemple: p u b l i c S t r i n g getNom ( ) { r e t u r n nom ; } Amira Dkhil (INSAT) IIA2 2024-2025 51 / 58 Les mutateurs Les mutateurs sont des méthodes qui permettent de modifier les attributs des objets; Les noms des accesseurs de modification (modificateurs) commencent généralement par set suivi par le nom de l’attribut. Exemple: p u b l i c void setNom ( S t r i n g n ) {nom=n ; } Amira Dkhil (INSAT) IIA2 2024-2025 52 / 58 Exemple (1) public class Point { // A t t r i b u t s p r i v a t e double x ; p r i v a t e double y ; // A c c e s s e u r s de l e c t u r e p u b l i c double getX ( ) { r e t u r n x ; } p u b l i c double getY ( ) { r e t u r n y ; } // A c c e s s e u r s de m o d i f i c a t i o n p u b l i c void s e t X ( double x ) { t h i s. x=x ; } p u b l i c void s e t Y ( double y ) { t h i s. y=y ; } // La mé t h o d e t o S t r i n g public String toString () { r e t u r n "Point("+ x +","+ y +")" ; } } Amira Dkhil (INSAT) IIA2 2024-2025 53 / 58 Exemple (2) public class MainClass { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { /∗ Cr é a t i o n d un o b j e t P o i n t a v e c c o n s t r u c t e u r p a r dé f a u t ∗/ P o i n t p= new P o i n t ( ) ; /∗ U t i l i s a t i o n de l ’ a c c e s s e u r de m o d i f i c a t i o n ∗/ p. setX ( 5. 0 ) ; p. setY ( 1 0. 0 ) ; /∗ U t i l i s a t i o n de l ’ a c c e s s e u r de l e c t u r e g e t p o u r a f f i c h e r l a v a l e u r de l ’ a t t r i b u t x ∗/ System. o u t. p r i n t l n ( p. getX ( ) ) ; System. o u t. p r i n t l n ( p. getY ( ) ) ; } } Amira Dkhil (INSAT) IIA2 2024-2025 54 / 58 Chapitre 1 Package 2 Classe 3 Objet 4 Constructeur 5 Membres d’instances 6 Membres de classe 7 Encapsulation 8 Accesseurs et mutateurs 9 Surcharge Amira Dkhil (INSAT) IIA2 2024-2025 55 / 58 La surcharge des méthodes Plusieurs méthodes peuvent porter le même nom dans une même classe. Les méthodes doivent différer par le nombre des arguments, ou par le type des arguments. Les constructeurs multiples est un cas particulier de surcharge. Le compilateur ne peut distinguer deux méthodes se différenciant uniquement par leur type de retour. Amira Dkhil (INSAT) IIA2 2024-2025 56 / 58 Exemple: surcharge (1) p u b l i c c l a s s PointAC { i n t x ; // a b s c i s s e du p o i n t i n t y ; // o r do n n é e du p o i n t public Point ( int a , int b){ x=a ; y=b ; } p u b l i c void t r a n s l a t e r ( i n t dx , i n t dy ) { x=x+dx ; y=y+dy ; } p u b l i c void t r a n s l a t e r ( i n t dx ) { x=x+dx ; y=y+dx ; } } Listing 6: Surharger la classe Point Amira Dkhil (INSAT) IIA2 2024-2025 57 / 58 Exemple: surcharge (2) class TestPointSurch { p u b l i c s t a t i c void main ( S t r i n g a r g [ ] ) { P o i n t p = new P o i n t ( ) ; p. t r a n s l a t e r ( 2 , 4 ) ; // a p p e l de l a 1è r e fonction p. t r a n s l a t e r ( 2 ) ; // a p p e l de l a 2ème fonction } Listing 7: Classe Test Amira Dkhil (INSAT) IIA2 2024-2025 58 / 58

Use Quizgecko on...
Browser
Browser