Chapitre 3 Manipulation des Classes et Objets - POO JAVA GI2

Document Details

ShinyHarpsichord

Uploaded by ShinyHarpsichord

Dr. A. Nejeoui

Tags

java programming object-oriented programming classes and objects programming

Summary

Ce document est un chapitre de cours sur la programmation orientée objet en Java. Il explique les concepts clés de création et manipulation des classes et objets, y compris les variables d’instance, les variables de classe, la déclaration et les manipulations des méthodes, constructeurs, et la redéfinition des méthodes.

Full Transcript

CHAPITRE 3 : MANIPULATION DES CLASSES ET OBJETS Dr. A. Nejeoui POO JAVA: GI2 1 INTRODUCTION objectifs : Création et manipulation des variables d’instance / variables de classe Déclaration et manipulation des méthodes d’in...

CHAPITRE 3 : MANIPULATION DES CLASSES ET OBJETS Dr. A. Nejeoui POO JAVA: GI2 1 INTRODUCTION objectifs : Création et manipulation des variables d’instance / variables de classe Déclaration et manipulation des méthodes d’instance / méthodes de classe Le mot clé this Passage d’arguments à une méthode La surcharge des méthodes Déclaration et manipulation des Constructeurs Création des objet / Opérateur new La redéfinition des méthodes Les tableaux Le transtypage POO JAVA: GI2 2 DÉFINITION D’UNE CLASSE Une classe est définie par le mot clé class suivi du nom de la classe comme suit : class UneClasse { // le corps de la classe } Par défaut toute classe hérite de la classe Object. C’est la super-classe dans la hiérarchie des classes Java. Si une classe hérite d’une super classe on utilise le mot clés extends. class UneClasse extends UneSuperClasse { // le corps de la classe } POO JAVA: GI2 3 VARIABLES D'INSTANCE Une variable est dite variable d’instance si elle est déclarée en dehors du corps d’une méthode et elle n’est pas modifiée par le mot clé static. Par convention les variables membres (variables d’instance + variables de classe) sont déclarées juste après l’accolade ouvrante du corps de la classe. Exemple : class Voiture { String couleur; String marque; int nbrPortes; Moteur motor; } Mais c’est possible de déclarer les variables membres n’import où dans le corps de la classe en dehors du corps de toute méthode. POO JAVA: GI2 4 VARIABLES DE CLASSE une variables de classe est une variable dont la valeur est partagée par tous les objets instances de cette classe par opposition à une variable d’instance qui peut changer de valeur d’un objet à l’autre. On déclare un variable de classe par le mot clés static Exemple : class Voiture { String couleur; String marque; int nbrPortes; static int nbrRoues; static int vitesseMax=300; Moteur motor; } POO JAVA: GI2 5 LES MÉTHODES D’INSTANCE/ CLASSE Une méthode d’instance définit le comportement des objets de la classe (l’ensemble des tâche que ces objets peuvent accomplir). En Java la définition d’une méthode comporte quatre parties : 1 Le nom de la méthode 2 La liste des paramètres 3 Le type d’objet ou type primitif retourné par la méthode 4 Le corps de la méthode TypeRetourné nomMéthode (type1 arg1, type2 arg2, …, typeN argN) { // le corps de la méthode } Rq: Pour simplifier nous avons ignoré deux parties optionnelles : les Modificateurs et le mot clés throws. 1 Le nom de la méthode : peut être tout identificateur valide. 2 La liste des paramètres : un ensemble de déclarations de variables séparées par des virgules délimité par deux parenthèses (). POO JAVA: GI2 6 LES MÉTHODES D’INSTANCE/ CLASSE Les paramètres de la méthode sont traités dans le corps de la méthode comme des variables locales. Ils reçoivent leurs valeurs lors d’un appel à cette méthode. 3 Le type retourné peut être de type primitif, classe ou void si la méthode ne renvoie aucun valeur. Si le type retourné est de type tableau, les crochets doivent être placées soit après le type soit après la liste des paramètres. Exemple : String[ ] mots(String paragraphe) { String mots(String paragraphe)[ ] { String[ ] parts = paragrapahe.split(“ ”); String[ ] parts = paragrapahe.split(“ ”); return parts; return parts; } } Si le type retourné est différent de void la méthode doit obligatoirement retourner une valeur de type compatible avec le type retourné déclaré. 4 Le Corps de la méthode : Dans le corps de la méthode vous pouvez avoir des instructions, des expressions, des boucles et des appels à d’autres méthodes. POO JAVA: GI2 7 LE MOT CLÉ THIS this représente l’objet courant, il est utilisé là où un objet instance de la classe est attendu. Exemple : classe Figure2D{ double largeur; double longueur; public void setLargeur(double largeur ){ this.largeur=largeur; } public double getLargeur() { return this.largeur; } public double getLongueur(){ return this.longueur; } public double surface(){ return this.getLargeur()*this.getLongoeur(); } } Les méthodes de classes déclarées avec le mot clé static ne peuvent pas utiliser this POO JAVA: GI2 8 PASSAGE D’ARGUMENTS À UNE MÉTHODE En java toutes les variables sont passées par valeur : La règle générale de Java est que les arguments sont passés par valeur. Cela signifie que l'appel de méthode se fait par copie des valeurs passées en argument et que chaque appel de méthode dispose de sa propre version des paramètres. POO JAVA: GI2 9 PASSAGE D’ARGUMENTS À UNE MÉTHODE Lorsqu'un objet est passé en paramètre, ce n'est pas l'objet lui même qui est passé mais une référence sur l'objet. La référence est bien transmise par valeur et ne peut pas être modifiée mais l'objet peut être modifié via l’appel d'une méthode. Pour transmettre des arguments par référence à une méthode, il faut les encapsuler dans un objet qui prévoit les méthodes nécessaires pour les mises à jour. POO JAVA: GI2 1 0 MÉTHODE DE CLASSE Une méthode de classe définit un comportement de la classe entière et non d’un objet spécifique. Pour définir une méthode de classe on utilise le mot clé static. Une méthode de classe n’a pas besoins d’un objet pour s’exécuter, on peut y accéder directement par le nom de la classe exemples : Character.isUpperCase(‘d’); int n=PassageArguments.changer(102); On utilise une méthode static lorsqu’on veut définir un comportement de tous les objets instance de la classe, lorsqu’il s’agit d’un comportement d’un objet spécifique on utilise une méthode d’instance. POO JAVA: GI2 1 1 SURCHARGE DE MÉTHODES Surcharger une méthode consiste à déclarer une deuxième méthode qui porte le même nom que la première avec une liste d’arguments di érente. Avantages : ▪ Éliminer la recherche des noms de plusieurs méthodes qui font la même chose. ▪ Permettre de définir des méthode qui agissent différemment selon les arguments passés. POO JAVA: GI2 1 2 ff LES CONSTRUCTEURS Un constructeur d’une classe est une méthode utilisée par la MVJ lors de la création des objets instances de cette classe. Par contre aux autres méthodes les constructeurs ne peuvent être appelés directement dans une application. Ils sont appelés automatiquement par la MVJ quand un objet est crée par l’opérateur new. Java effectue trois tâche lorsque l’opérateur new est utilisé pour créer un objet instance d’une classe : 1- Allouer la mémoire 2- Initialiser les variables d’instance de cet objet, soit par des valeur initiales soit par les valeurs par défaut (0 pour les nombres, false pour boolean, null pour les objets et ‘\0’ pour char). 3- Exécuter les bloques d’initialisation. 4- Appeler l’un des constructeurs de la classe POO JAVA: GI2 1 3 LES CONSTRUCTEURS Un constructeur diffère d’une méthode d’instance en trois points : 1- Il porte toujours le nom de la classe 2- Il n’a pas un type de retour 3- Il ne renvoi aucun valeur (pas de mot clé return dans le corps du constructeur). La premiere instruction d’un constructeur doit être l’appel d’un constructeur de la même classe ou de sa super classe. Ce qui assure que les variables membres des super classes sont initialisées en premier. super(arg1,arg2,…,argN) : appel d’un constructeur de la super classe. this(arg1,arg2,…,argN) : appel d’un POO JAVA: GI2 constructeur de la même classe. 1 4 LES BLOQUES D’INITIALISATION POO JAVA: GI2 1 5 REDÉFINITION D’UNE MÉTHODE La redé nition d’une méthode consiste à re- déclarer cette méthode dans la sous classe avec le même nom et la même liste d’arguments (même signature). et un type de retour compatible avec le type de retour de la super classe. pour différencier les méthodes déclarées dans la super classe de celles déclarées dans la classe courante on utilise les mot clés super et this respectivement. POO JAVA: GI2 1 6 fi CRÉATION DES OBJET(NEW) L’instantiation des objets nécessite l’appel de l’opérateur new suivi par un constructeur de la classe à instancier. Exemple : Date date =new Date (1234567890L); La gestion de mémoire en java se est automatique, Elle est assurée par la ramasse-miette Java (JGC). Lorsque on crée un nouvel objet par l’opérateur new , java alloue automatiquement la taille exacte de la mémoire nécessaire pour stocker cet objet. Quand l’objet n’est plus référencé dans l’application, java le détruit automatiquement et libère l’espace mémoire occupé. NB : les performances du JGC différent d’une JVM a une autres. Pour des JGC optimisés voir Zing (azul.com). POO JAVA: GI2 1 7 LES TABLEAUX Dans certains cas on a besoins de gérer plusieurs variables de même type, par exemple 100 variables de type entier, au lieu de déclarer 100 différentes variables avec 100 identificateurs différents, il convient d’utiliser un tableau d’entiers de taille 100. On peut déclarer un tableau qui peut stocker des valeurs primitives, des références à des objets d’une classe, des références à des interfaces ou bien des références à des tableaux. Une fois on a déclaré un tableau d’un type donné on ne peut y stocker que des valeurs de types compatibles au type déclaré. Ex : byte[] a=new byte; ce tableau peut stocker des valeurs de type byte. Object[] b=new Object; ce tableau peut stocker des références à des objets de type Object ou de type compatible. POO JAVA: GI2 1 8 LES TABLEAUX Pour créer un tableau en java on suit les étapes suivantes : 1- déclarer une variable qui va stocker une référence au tableau 2- réserver l’espace mémoire pour stocker les éléments du tableau 3- stocker les éléments du tableau Déclaration d’une variable qui va stocker une référence au tableau Int [] n; Point[] pt; C’est le même principe utilisé pour déclarer une variable régulière (seule valeur), les deux crochets sont ajoutés pour différencier les tableaux des autres variables. On peut aussi mettre les deux crochets après le nom de la variable comme suit Int n[]; Point pt[]; Réservation de l’espace mémoire Car les tableau en java sont aussi des objets, on utilise l’opérateur new pour créer un tableau. Point[] pt=new Point; Stockage des éléments du tableau for (int i=0;i

Use Quizgecko on...
Browser
Browser