Chap 02 Concepts de base de la POO (2) PDF

Document Details

DiversifiedRhodochrosite

Uploaded by DiversifiedRhodochrosite

Tags

OOP Java Programming Object-Oriented Programming Introduction to Programming

Summary

This document provides an introduction to object-oriented programming (OOP) concepts, specifically focusing on their application in the Java programming language. The topics covered include basic object and class concepts, instatiation, program design, and some advanced OOP topics relevant to the Java programming language.

Full Transcript

PLAN DU COURS  Rappel  Introduction.  Objets et classes. ,,  Instanciation.  Création d’une classe.  Programme JAVA.  Surcharge de méthode.  Constructeur.  instances d’une classe / création d’objets.  Accès aux mem...

PLAN DU COURS  Rappel  Introduction.  Objets et classes. ,,  Instanciation.  Création d’une classe.  Programme JAVA.  Surcharge de méthode.  Constructeur.  instances d’une classe / création d’objets.  Accès aux membres d’un objet.  méthodes statiques.  Package.  Le mot-clé this.  Exercice. 2 PLAN DU COURS  Encapsulation.  Modificateurs de visibilité et Accès. Accesseurs et Mutateurs (getters et setters). ,,   Encapsulation: part 2.  Le mot clé final.  Le mot clé null.  Destructeur : Garbage collector « ramasse miettes ».  Lire les entrées clavier: l’objet de type Scanner. 3 RAPPEL: PROGRAMMATION PROCÉDURALE Données ,, Fonction 1 Fonction 2 Fonction n 4 RAPPEL : PROGRAMMATION PROCÉDURALE  Programmer dans ce paradigme revenait à :  Définir un certain nombre de variables ,, (structures, tableaux, etc.).  Ecrire des fonctions pour les manipuler sans associer explicitement les unes aux autres.  Exécuter un programme se réduit alors à appeler ces procédures dans un ordre décrit par le séquençage des instructions et en leur fournissant les données nécessaires à l’accomplissement de leurs tâches. 5 RAPPEL : PROGRAMMATION PROCÉDURALE  Dans ce paradigme les données et traitement sont traitées indépendamment les unes des autres. ,,  Les questions qu’on peut poser dans ce cas : 1. Cette séparation (données, traitement) est elle utile ? 2. Pourquoi privilégier le traitement sur les données (Que veut-on faire ?) ? 3. Pourquoi ne pas considérer que les programmes sont avant tout des ensembles objets informatiques caractérisé par les 6 opérations qu’ils connaissent ? INTRODUCTION: P.O.O  Les langages orienté objets sont nés pour répondre à ces questions. ,,  Ils sont fondés sur la connaissance d’une seule catégorie d’entité informatique qui s’appelle objet.  En effet, un programme. O. O est constitué d’un ensemble d’objets chacun disposant d’une partie fonction (traitement) et d’une partie données.  Les objets interagissent entre eux par l’envoie des messages. 7 INTRODUCTION: P.O.O ,, messages Données Données Traitement Traitement Objet 1 Objet 2 Données Traitement 8 Objet 3 INTRODUCTION  La programmation orientée objets définit un ensemble d'objets qui interagissent entre eux. En d'autres termes : tout est objet. Les raisons du ,, succès de la POO sont:  Fondée sur une solide approche génie logiciel.  Maitrise de la complexité de grands systèmes logiciels.  Consolidation par les méthodes O.O. et le standard (UML) qu’elles utilisent comme langage de modélisation objet.  Ses fondements facilitent la programmation 9 distribuée. OBJETS ET CLASSES  Un objet est une variable de type complexe (par opposition aux types primitifs entier, caractère, ,, etc.).  Le type d’un objet est appelé : Classe.  Une classe regroupe des données (variables) + fonctions (méthodes) agissant sur ces données. 10 OBJETS ET CLASSES  Autrement dit:  Une classe est la définition d’un type, alors que ,, l’objet est une déclaration de variables.  Après avoir créé une classe, on peut créer autant d’objets que l’on veut basés sur cette classe.  Un objet est une instance de la classe càd une valeur particulière de la classe. 11 OBJETS ET CLASSES  Un objet est une entité logicielle :  Ayant une identité: valeur unique et invariante qui caractérise l’objet. ,,  Ayant des propriétés / attributs : capable de sauvegarder un état c'est-à-dire l’ensemble des valeurs des attributs de cet objet.  Ayant des méthodes: répondant à des messages précis en déclenchant des activations internes appropriés qui changent l’état de l’objet. Ces opération sont appelées méthodes. Ce sont les traitements que l’objet réalise et qui peut modifier ou non les valeurs des propriétés 12 OBJETS ET CLASSES  La signature d’une méthode représente la précision de son nom, du type de ses arguments et du type de donnée retournée. ,, 13 OBJETS ET CLASSES  Une classe est la représentation de la structure d’une famille d’objets partageant des propriétés et méthodes communes. Elle permet la ,, déclaration des attributs (propriétés) ainsi que la définition de l’ensemble de méthodes.  Une classe est considérée comme un moule de création d’objets, un objet serait donc une instance (exemplaire) d’une classe. 14 OBJETS ET CLASSES  La définition d’une classe consiste à créer un nouveau type. Une fois créée, la classe devient un type et des objets peuvent être associés à ce type. ,,  Une classe généralise la notion de type et l’objet celle d’une variable.  Une classe est un ensemble d’objets qui ont en commun : - les mêmes méthodes. - les mêmes types d’attributs. 15 OBJETS ET CLASSES  Classe = attributs + méthodes ,,  Objet = état (attributs) + comportement (méthodes) 16 INSTANCIATIONS  Une instance d’une classe est un objet particulier d’une classe qui peut activer les méthodes de la classe et qui a des valeurs ,, particulières de ses attributs.  On définit l’objet comme l’instance d’une classe. La classe représente pour l’objet ce que représente le type pour la variable.  Une classe est un type abstrait qui encapsule données et traitement. C’est une sorte de moule qui permet ensuite de créer autant d’instances qu’on veut. Ces instances seront des objets de la classe auxquelles on pourra effectivement envoyer des messages qui 17 activeront les méthodes correspondantes. EXEMPLES  Dans le monde réel, on peut illustrer un objet par une voiture, un téléphone, un livre, etc. ,,  En Informatique, un objet n’est ni une simple variable ni une simple fonction mais un mélange des deux.  Il maintient son état (paramètres, caractéristique) dans des variables appelées attributs. On implémente son comportement à l'aide de fonctions appelées méthodes.  On peut considérer par exemple les classes suivantes : 18 EXEMPLES  Bicyclette:  Ses caractéristiques ou son état (attrbuts) dépend ,, de: Marque, type, nombre de vitesses, vitesse courante, couleur, etc.  Alors que son comportement (méthodes) est de : rouler, tourner, accélérer, changer de vitesse, freiner, etc.  Les objets peuvent être maBicyclette , taBicyclette et touteBicyclette avec des valeurs d’états différentes. 19 EXEMPLES  Gâteau sablé :  Pour réaliser un gâteau on doit définir des propriétés (attributs ) : épaisseur, ,,   nature,  goût,  couleur.  Le gâteau subit des traitements (méthodes):  créer,  cuire,  décorer, 20  glacer. EXEMPLES  La classe = pate + moule : ,,  Créer des gâteaux de même caractéristiques (par défaut) à partir d’un seul moule  Objets ou instances de classe = gâteau1, gâteau2, gâteau 3 21 EXEMPLES  Créer un premier gâteau (objet 1) à partir d’un ,, moule. Identité: 01 Épaisseur: 4 Nature: Non cuit Goût: vanille Couleur: jaune Créer 22 EXEMPLES  Cuire le gâteau (autres caractéristiques), autre ,, objet. Identité: 02 Épaisseur: 5 Nature: consommable Goût: vanille Couleur: jaune créer 23 cuire EXEMPLES  Cuire le gâteau (autres caractéristiques). ,, Identité: 03 Épaisseur: 5 Nature: consommable Goût: chocolat Couleur: noir créer cuire 24 EXEMPLES  Décorer gâteau (autres caractéristiques). ,, Identité: 04 Épaisseur: 10 Nature: consommable Goût: vanille Couleur: jaune créer cuire décorer 25 EXEMPLES  Glacer au sucre un gâteau. ,, Identité: 05 Épaisseur: 11 Nature: consommable Goût: abricot Couleur: blanc créer cuire glacer 26 RÉSUMÉ Un gâteau a des Identité: 05 propriétés Épaisseur: 11 Chaque propriété à (attributs ou champs Nature: consommable une valeur ) ,, Goût: abricot Couleur: blanc Un gâteau subit des créer, traitements / cuire, méthodes ( décorer, comportements) glacer. 27 RÉSUMÉ  Tous les gâteaux sont caractérisés par les mêmes propriétés: Identité: entier Épaisseur: entier Nature: chaîne de caractères ,, Goût: chaîne de caractères Couleur: chaîne de caractères  Toutefois, les valeurs de ces propriétés peuvent différer d’un gâteau à un autre.  Les mêmes traitements peuvent être appliqués à n’importe quel gâteau: créer, cuire, décorer, glacer. 28 P.O.O  La POO est une méthode d’implémentation dans laquelle les programmes sont organisés sous formes de collections coopératives d’objets, dont ,, chacun représente une instance d’une classe quelconque et dont toutes les classes sont membres d’une hiérarchie de classes unis à travers des relations d’héritage. 29 CRÉATION D’UNE CLASSE La définition d’une classe consiste à lui attribuer : 1. Un nom, ,, 2. des attributs, 3. des méthodes, 4. des constructeurs, qui permettent de créer des objets ; 30 CRÉATION D’UNE CLASSE  Définition d’une classe en java class NomClasse { // définition des Attributs ,, // définition des Méthodes }  Conventions de nommage: 1. Le fichier.java doit avoir le même nom que la classe publique qu’il décrit, 2. le nom de la classe doit débuter par une MajusculeAnsiQueChaquePremiereLettreDeChaqueM ot, 3. un fichier.java par classe, même pour celle contenant le main(). 31 CRÉATION D’UNE CLASSE  fichier BonjourToutLeMonde.java ,, class BonjourToutLeMonde { public static void main(String[] args) { System.out.println("Bonjour  "); } } 32 CRÉATION D’UNE CLASSE : ATTRIBUTS  La déclaration des attributs permet de spécifier, le nom, le type et éventuellement une valeur initiale. ,,  Par convention, la déclaration des attributs est donnée au début de la classe.  Le type d’un attribut peut être : Primitif: double, int, float, double, boolean. ou de type structuré (objet): Point, String. Exemple: double x,y ; Conventions de nommage:  constantes sont en MAJUSCULES.  variables sont en minusculePourLaPremiereLettre 34 CRÉATION D’UNE CLASSE : MÉTHODES  Les méthodes représentent l'ensemble des actions, procédures, fonctions ou opérations que l'on peut associer à une classe. ,,  La définition d’une méthode est composée de sa signature suivie de son corps.  La syntaxe utilisée pour définir le corps d’une méthode java est identique à celle utilisée pour les fonctions en C. Ainsi, nous retrouvons les mêmes : - Instructions conditionnelles, itératives, etc. - Opérateurs de comparaisons, logiques, etc. 35 CRÉATION D’UNE CLASSE : MÉTHODES () { ,, } Conventions de nommage:  Les méthodes sont en minusculePourLaPremiereLettre 36 CRÉATION D’UNE CLASSE: EXEMPLE  Définir une classe Point pour représenter les coordonnées d’un points caractérisées par deux ,, nombres flottants x, y, mémorisés dans deux variables d'instance de type double. 37 CRÉATION D’UNE CLASSE: EXEMPLE  Fichier Point.java ,, class Point { double x,y ; void déplacer( double a, double b) { x+=a ; y+=b ; } void afficher(){ System.out.println (" l’abscisse =" +x+ "ordonnée = "+y ); } } 38 PROGRAMME JAVA  Pour débuter une application on doit fournir un point d'entrée. Ce point d'entrée c’est la méthode main dont la ,,  syntaxe est la suivante : public static void main( String [ ] args ){ }  Où « args » correspond à la liste des arguments passé depuis la ligne de commande.  System est une classe finale du paquet java.lang  out est une variable de type PrintStream déclaré dans la classe System. 39  println est une méthode de la PrintStream classe. SURCHARGE DE MÉTHODE  La surcharge de méthode est un concept qui permet à une classe d’avoir plusieurs méthodes portant le même nom, si leurs listes d’arguments ,, sont différentes (des fonctionnalités différentes).  Par exemple, la liste d’arguments de la méthode somme(int x, int y) ayant deux paramètres est différente de la méthode somme(int x, int y, int z) ayant trois paramètres.  Afin de surcharger une méthode, les listes d’arguments des méthodes doivent différer dans l’un ou l’autre: 41 SURCHARGE DE MÉTHODE  Nombre de paramètres: cas valide de surcharge.  somme(int, int) ; ,,  somme(int, int, int);  Type de données des paramètres: cas valide de surcharge.  somme(int, int);  somme(int, double);  Cas non valide de surcharge de méthode:  int somme(int, int);  double somme(int, int); 42 CONSTRUCTEURS  Un constructeur en Java est une méthode spéciale utilisée pour crée un nouvel objet et afin de définir les valeurs initiales des attributs de l’objet. ,,  Le constructeur se caractérise par:  Il a le même nom que celui de la classe,  Il n'a pas de type de retour (même pas void).  Si le développeur ne définit aucun constructeur (explicitement), un constructeur par défaut est créé automatiquement (implicitement) par le compilateur. P1 = new Point ();  On le voit pas dans la classe, exemple la première 43 déclaration de la classe Point. CONSTRUCTEURS  Classe Point sans constructeur ,, class Point { double x,y ; void déplacer( double a, double b) { x+=a ;y+=b ; } void afficher(){ System.out.println (" l’abscisse =" +x+ "ordonnée = "+y ); } } 44 CONSTRUCTEURS  un constructeur peut avoir des arguments.  la définition d'un constructeur n'est pas obligatoire lorsqu'il n'est pas nécessaire. ,,  Une classe peut avoir autant de constructeurs, dès l'instant qu'ils ont des signatures différentes.  Une classe qui ne déclare aucun constructeur explicitement en possède toujours un: c’est le constructeur vide par défaut, qui ne prend aucun paramètre. 45 Dr. F. MEKAHLIA CONSTRUCTEURS  Si l'on définit un constructeur explicite, alors ce constructeur vide par défaut n'existe plus ; on doit le déclarer explicitement si l'on veut encore l'utiliser. ,,  Le constructeur implicite permet d’initialiser les attributs par des valeurs par défaut. Par exemple, les numériques sont initialisés à zéro, le booléen à faux, une référence d’objet à null.  NB: Les objets de la première classe Point sont créés avec des coordonnées nulles. 46 CONSTRUCTEURS  Le constructeur explicite initialise les attributs par des valeurs passées en paramètre.  NB: Les objets de la deuxième classe Point sont ,, créés avec des coordonnées choisies par l’utilisateurs.  ne peut être appelé en dehors de la création d’un objet. 47 CONSTRUCTEURS  Classe Point avec constructeur  Définir une classe Point pour représenter les coordonnées d’un points caractérisées par deux nombres flottants x, y, mémorisés dans deux ,, variables d'instance de type double. class Point { double x, y; Point (double initX, double initY){ x = initX ; y = initY; } void déplacer( double a, double b) { x+=a ; y+=b ; } void afficher() { System.out.println (" l’abscisse =" +x+ "ordonnée = "+y ); } } 48 CONSTRUCTEURS ,, 49 CONSTRUCTEURS ,, 50 INSTANCES D’UNE CLASSE / CRÉATION D’OBJETS  Pour créer une instance (ou objet) d’une classe, on utilise l’opérateur new suivi d’un constructeur de la classe. Bien évidemment, l’objet à créer doit ,, être préalablement déclaré avec le type de la classe adéquate.  La déclaration et la création des objets sont deux choses séparées.  La déclaration seule ne crée pas d’objet. Elle l’initialise à null qui ne fait référence à rien. 51 INSTANCES D’UNE CLASSE / CRÉATION D’OBJETS  Point p1 ; // déclaration de l’objet p1 ,, p1 ?  p1 = new Point ( ) ; // création de l’objet p1 p1 0 0 52 ACCÈS AUX MEMBRES D’UN OBJET  L’accès à un attribut (variable d’instance ) ou ,, méthode (méthode d’instance) d’un objet donné se fait à l’aide de la notation à point. Cette notation possède deux parties séparées par un point: à gauche du point, on trouve la référence de l’objet et à sa droite le membre:  NomDeObjet.NomAttribut ou  NomDeObjet.NomMethode( ) 53 ACCÈS AUX MEMBRES D’UN OBJET  Exemple ,, Point p1,p2 ; Voiture v1,v2 ; p1.afficher() ; p2.deplacer(3,4) ; v1.afficher() ; v2.demarrer(). 54 MÉTHODES STATIQUES  S’appellent aussi méthodes de classe, elles désignent les méthodes dont les actions concernent la classe entière et non pas un objet ,, particulier.  De même, l’accès à ces méthodes ne nécessite pas la création d’un objet de la classe, car on peut appeler directement la méthode à travers le nom de la classe. On peut utiliser aussi ces méthodes statiques pour manipuler des données statiques.  Exemple: la méthode main (). 55  public static void main(String[] args) {…} PACKAGE  Java permet de regrouper les classes en ensembles appelés packages afin de faciliter la modularité. ,,  Pour définir un package , il faut utiliser le mot clé package suivit du nom de votre package. Cette définition doit être la première ligne de code effective de votre fichier. package TP1; class Point {.... } 56 PACKAGE  Un package (associé à un dossier) peut contenir des sous packages (associé à un sous dossier) : chaque sous-package est séparé de son parent ,, avec un point. Il n'y a pas de limite sur le niveau de profondeur. package TP1.exo1; class Point {.... } 57 LE MOT-CLÉ THIS  This sert à accéder à la classe courante.  This est utilisé dans la classe dans laquelle on se ,, trouve. Il sert à référencer dans une méthode l'instance de l'objet en cours d'utilisation.  La référence « this » peut être utile :  Lorsqu’une variable locale (ou un paramètre) porte le même nom q’un attribut de la classe.  Pour appeler un constructeur depuis un autre constructeur.  quand l'objet doit appeler une méthode en se passant lui même en paramètre de l'appel. 58 LE MOT-CLÉ THIS  Exemple: class Rectangle { ,, int longueur, largeur ; String couleur ; //1er cas : même nom entre le paramètre et l’attribut Rectangle (int long, int largeur) {longueur = long ; this.largeur = largeur ;} // 2 ème cas : appel d’un constructeur à partir d’un autre Rectangle (int lo, int lar, String coul) { this (lo, lar); couleur = coul;} } 59 EXERCICE On définit une classe Etudiant caractérisée par les attributs et méthodes suivants : Attributs : ,, matricule : Nombre entier représentant le matricule d’un étudiant. nom, prénom et sp : Chaines de caractères (String) représentant respectivement, le nom, prénom et la spécialité d’un étudiant. section : caractère, représente la section d’un étudiant. note1, note2 : Nombres réels correspondant aux notes d’un étudiant. Méthodes : 60 EXERCICE void afficher () : affiche les informations d’un étudiant. ,, float moyenne() : calcule la moyenne d’un étudiant.  Questions:  1) Implémenter la classe Etudiant en Java.  2) Définir la classe AppliEtudiant dans laquelle vous rajoutez la méthode main :  a) Déclarer un objet Etudiant, nommé et1. 61 EXERCICE b) Instancier et1. Quelle sont les valeurs de ses attributs, Quelles sont les modifications à apporter pour avoir un objet avec des valeurs ,, précises. c) Créer deux objets Etudiant et1 et et2, tel que et1 = (51542016, "Azi", "Amine", "ACAD", 'B',) et et2 = (51552016, "Ziane","Fatiha", "ISIL", 'B'). d) Modifier la section de l’étudiant Azi de B à A et attribuer aux deux étudiants des notes. e) Calculer les moyennes des deux étudiants et afficher leurs renseignements. 62 package exo2_etudiant; public class Etudiant { int matricule; String nom,prenom,specialite; char section; float note1,note2; ,, public Etudiant() { this(0," "," "," ",' ',0,0); } public Etudiant (int mat, String nom, String prenom, String sp, char sec, float nt1, float nt2) { matricule = mat; this.nom = nom; this.prenom = prenom; specialite = sp; section = sec; note1 = nt1; note2 = nt2;} 63 public void afficher() { System.out.println("Nom et prénom de l'étudiant : ,, "+nom+" "+prenom+"\nMatricule: "+matricule+"\nSpecialite "+specialite+"\nSection: "+section+"\nNotes: "+note1+" "+note2);} public float moyenne() { return ((note1+note2)/2); } } 64 package exo2_etudiant; public class AppliEtudiant { public static void main(String[] args) { // TODO Auto-generated method stub Etudiant et1 ; ,, // et1= new Etudiant () ; et1 = new Etudiant(51542016,"Azi","Amine","ACAD",'B',0,0); Etudiant et2 ; et2 = new Etudiant(51552016,"Ziane","Fatiha","ISIL",'B',0,0); et2.setSection('A'); et2.afficher(); et2.setNote1(10); et2.setNote2(8) ; et2.afficher(); et1.setNote1(10); et1.setNote2(15); et1.afficher(); 65 et1.moyenne(); System.out.println("La moyenne de l'étudiant 1 ="+ et1.moyenne()); et2.moyenne(); ,, System.out.println("La moyenne de l'étudiant 2 ="+ et2.moyenne()); et2=null; et2.afficher(); 66 ENCAPSULATION  L’encapsulation est un concept important en programmation orientée objet.  L’encapsulation est un mécanisme consistant à ,, rassembler les données et les méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est-à-dire en empêchant l’accès aux données par un autre moyen que les services proposés.  L’encapsulation permet donc de garantir l’intégrité des données contenues dans l’objet. Ainsi, si l’on veut protéger des informations contre une modification inattendue, on doit se référer au principe d’encapsulation. 67 ENCAPSULATION  L’encapsulation existe dans d’autre domaine tel que les réseaux sociaux où la visibilité d’une publication ou du profil entier peut être privée, ,, destiné aux amis uniquement, aux amis et leurs amis ou publique.  Aussi on peut dire que l’encapsulation est comme une boite noire du code. 68 MODIFICATEURS DE VISIBILITÉ ET ACCÈS  La déclaration d'une classe, d'une méthode ou d'un attribut peut être précédée par un modificateur d'accès (visibilité). ,,  Un modificateur indique si les autres classes de l'application pourront accéder ou non à l’item qui peut être une classe, une méthode ou un attribut.  L'utilisation des modificateurs permet au programmeur de contrôler la visibilité des différents items et permet d'empêcher que des actions illégales soient effectuées sur les items. 69 MODIFICATEURS DE VISIBILITÉ ET ACCÈS Parmi les modificateurs : public : toutes les classes peuvent accéder à l'item. La déclaration de variables publiques est ,, contraire au principe d'encapsulation. protected : seules les classes dérivées et les classes du même package peuvent accéder à l'item. Private: un item private (privé) est accessible uniquement au sein de la classe dans laquelle il est déclaré. Ces éléments ne peuvent être manipulés qu'à l'aide de méthode spécifiques appelés accesseur et mutateur (par défaut) : sans modificateur d'accès, seules les classes du même package peuvent accéder à 70 l'item. MODIFICATEURS DE VISIBILITÉ ET ACCÈS Autres modificateurs : static: indique, pour une méthode, qu'elle peut être appelée sans instancier sa classe i.e. ,, indépendamment de tout objet (méthode de la classe). Pour un attribut, qu'il s'agit d'un attribut de classe, et que sa valeur est partagée entre les différentes instances de sa classe (variable de classe). final: une variable déclarée final est en fait une constante, il n'est plus possible de la modifier. Les méthodes déclarées final ne peuvent pas être remplacée dans une sous classe. Les classes déclarées final ne peuvent pas avoir de sous- classe. 71 MODIFICATEURS DE VISIBILITÉ ET ACCÈS  Accès aux membres privés:  Si longueur et largeur étaient des attributs ,, publics de Rectangle, on peut écrire le code suivant dans la méthode « main » de la classe Test_Rect. Rectangle r = new Rectangle (); r.longueur = 20; r.largeur = 15; int la = r.longueur ; 72 MODIFICATEURS DE VISIBILITÉ ET ACCÈS  Si longueur et largeur étaient des attributs privés « private », les instructions suivantes seront refusées par le compilateur. ,, r.longueur = 20; //faux r.largeur = 15; //faux int la = r.longueur ; //faux  NB: Des données membres private ne peuvent pas être manipulées directement par les fonctions membres des autres classes. 73 ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS  L'encapsulation permet de sécuriser l'accès aux données d'une classe. Ainsi, les données déclarées private à l'intérieur d'une classe ne ,, peuvent être accédées et modifiées que par des méthodes définies dans la même classe. Si une autre classe veut accéder aux données de la classe, l'opération n'est possible que par l'intermédiaire d'une méthode de la classe prévue à cet effet. Ces appels de méthodes sont appelés «échanges de message ». 74 ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS  Les fonctions membres permettant d'accéder aux données membres sont appelées accesseurs ( getter ). ,,  Souvent on utilisent des noms de la forme getXXX.  Les fonctions membres permettant de modifier les données membres sont appelées mutateurs (setter).  Souvent on utilise des noms de la forme setXXX.  Un accesseur est une méthode qui va nous permettre d'accéder aux variables de nos objets en lecture et un mutateur, en écriture ! 75 ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS  Exemple: ,, public class Rectangle { private int x, y; // point en haut à gauche private int longueur; private int hauteur; Rectangle (int n, int m, int l, int a) //Le premier constructeur {x = n; y = m; longueur= l; hauteur = a;} Rectangle() // Le deuxième constructeur {x = 2; y = 4; longueur = 20; hauteur = 10;} Rectangle (int f) //Le troisième constructeur {x = f+2; y = f+4; longueur= 2*f; hauteur = f;} 76 ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS)  public int getx () //pour retourner la valeur de x  {return (x);}  public int gety () //pour retourner la valeur de y  {return (y);}  public int getlong () //pour retourner la valeur de longueur ,,  {return (longueur);}  public int gethaut () //Pour retourner la largeur  {return (larg);}  public void setlong (int l) //pour modifier la longueur  {longueur=l;}  public void sethaut (int h) //pour modifier la hauteur  {larg=h;}  public void setx(int p) //pour modifier x  {larg=p;}  public void sety (int p) //pour modifier y  {larg=p;} int surface() //Pour calculer la surface  {return(longueur*larg);} 77  } ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS public class Point { private double x; private double y; ,, public Point(double x, double y){ this.x = x ; this.y = y; } public void setx (double x) { this.x = x; } public void sety (double y) { this.y = y; } public double getx() { return x; } public double gety() { return y; } public void déplacer( double a, double b) { x+=a ; y+=b ; } public void afficher() { System.out.println (" l’abscisse =" +x+ "ordonnée = "+y ); } 78 } ACCESSEURS ET MUTATEURS (GETTERS ET SETTERS)  Nos accesseurs sont bien des méthodes, et elles sont public pour que vous puissiez y accéder dans une autre classe que celle-ci (la classe main, par ,, exemple).  Les accesseurs sont du même type que la variable qu'ils doivent retourner.  Les mutateurs sont, par contre, de type void. Ce mot clé signifie "rien" ; en effet, ces méthodes ne retournent aucune valeur, elles se contentent de les mettre à jour. 79 ENCAPSULATION: PART 2  L’encapsulation consiste à deux étapes: ,, 1. Créer des variables privés. 2. Créer les getters et les setters.  Le but de l’encapsulation est la sécurité de vos données. 80 LE MOT CLÉ FINAL  Le mot clé final s'applique aux variables, aux méthodes et aux classes et aux paramètres d'une méthode. ,,  Une variable qualifiée de final signifie que la variable est constante. Une variable déclarée final ne peut plus voir sa valeur modifiée.  Une méthode final ne peut pas être redéfinie dans une sous classe. Une méthode possédant le modificateur final pourra être optimisée par le compilateur car il est garanti qu'elle ne sera pas sous classée. 81 LE MOT CLÉ FINAL  Lorsque le modificateur final est ajouté à une classe, il est interdit de créer une classe qui en hérite. ,,  Il existe 2 types d’utilisations des attributs finaux :  ou bien on initialise la valeur de la variable dés la déclaration, ou bien on initialise plus tard cette variable et son contenu ne sera jamais modifiée. 82 LE MOT CLÉ NULL  Le mot clé null est utilisable partout. Il n'appartient pas à une classe mais il peut être utilisé à la place d'un objet de n'importe quelle classe ou comme paramètre. ,,  Il permet de représenter la référence qui ne référence rien. C’est aussi la valeur par défaut d’initialisation des attributs représentant des références.  null ne peut pas être utilisé comme un objet normal : il n'y a pas d'appel de méthodes et aucune classe ne puisse en hériter.  Le fait d'initialiser une variable référent un objet à null permet au ramasseur de miettes (garbage collector) de libérer la mémoire allouée à l'objet. 83 LE MOT CLÉ NULL  Exemple: ,, class TestRec { public static void main (String [] args) { Rectangle r; if (r==null) r= new Rectangle (10,12); r.affiche(); } } 84 DESTRUCTEUR : GARBAGE COLLECTOR « RAMASSE MIETTES »  La libération de l’espace mémoire créée dynamiquement est automatique en java, dès que la donnée n’est plus référencée par un pointeur. C’est le mécanisme du garbage ,, collector, aussi appelé ramasse miettes, qui s’en charge.  Un destructeur permet d'exécuter du code lors de la libération de la place mémoire occupée par l'objet. En java, les destructeurs appelés finaliseurs (finalizers), sont automatiquement appelés par le garbage collector. Pour créer un finaliseur, il faut redéfinir la méthode finalize() héritée de la classe Object. 85 DESTRUCTEUR : GARBAGE COLLECTOR « RAMASSE MIETTES »  Garbage Collector fonctionne selon le principe suivant: ,, A tout instant, on connait le nombre de références à un objet. Lorsqu’un objet n’est plus référencé (il n’existe aucune référence sur lui), on est certain que le programme ne pourra plus y accéder. Il est donc possible de libérer l’emplacement correspondant. 86 LIRE LES ENTRÉES CLAVIER: L’OBJET DE TYPE SCANNER  Pour que Java puisse lire ce que vous tapez au clavier, vous allez devoir utiliser un objet de type Scanner. ,,  Lorsque vous faites System.out.println(), je vous rappelle que vous appliquez la méthode println() sur la sortie standard ; or ici, nous allons utiliser l'entrée standard System.in.  Donc, avant de dire à Java de lire ce que nous allons taper au clavier, nous devrons instancier un objet Scanner.  Scanner sc = new Scanner (System.in); 87 LIRE LES ENTRÉES CLAVIER: L’OBJET DE TYPE SCANNER ,, 88 LIRE LES ENTRÉES CLAVIER: L’OBJET DE TYPE SCANNER  Pourquoi le rouge sous le mot Scanner ?  il fallait dire à Java où se trouve la classe ,, Scanner.  Pour faire ceci, nous devons importer la classe Scanner, grâce à l'instruction import. La classe que nous voulons se trouve dans le package java.util. //Ceci importe la classe Scanner du package java.util import java.util.Scanner; //Ceci importe toutes les classes du package java.util import java.util.*; 89 LIRE LES ENTRÉES CLAVIER: L’OBJET DE TYPE SCANNER ,, l'instruction nextLine() renvoie une chaîne de caractères. 90 LIRE LES ENTRÉES CLAVIER: L’OBJET DE TYPE SCANNER ,, 91 ,, Merci !! 92

Use Quizgecko on...
Browser
Browser