Programmation Orientée Objet

Page 1 sur 60Lecteur de document UniversityLib

Programmation Orientée Objet

Programming, Object-Oriented Programming (OOP) · course

Voir tous les documents en programmation

Programmation Orientée Objet

Chapitre 3: Les bases de la POO

Dr. Mouna Chebbah

Dr. Mouna Chebbah

L2 BC

ESEN

Semestre 1, 2020/2021

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

1/53

Programmation Orientée Objet

Classe

Attribut

Méthode

Création d’objets

Encapsulation

La POO est une méthode d’implémentation dans laquelle:

§ les programmes sont organisés sous forme de collections

coopératives d’objets

§ chaque objet représente une instance d’une classe quelconque

§ toutes les classes sont membres d’une hiérarchie de classes

unies à travers des relations d’héritage

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

2/53

Concepts de base de la POO

Classe

Attribut

Méthode

Création d’objets

Encapsulation

La POO se base sur les notions clés suivantes:

§ Classe et objets

§ Encapsulation

§ Héritage: détaillé dans le chapitre 4

§ Polymorphisme: détaillé dans le chapitre 4

§ Abstraction: détaillé dans le chapitre 5

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

3/53

Classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Comme étant une variable, il faut qu’un objet soit déclaré avec son

type

Le type d’un objet est un type complexe (par opposition aux types

primitifs: entier, caractère, . . . ) qu’on appelle une classe

Une classe regroupe un ensemble de données (qui peuvent être des

variables primitives ou des objets) et un ensemble de méthodes de

traitement de ces données et/ou de données extérieures à la classe

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

4/53

Classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Classe: est une entité

§ représentant un ensemble d’objets ayant la même

représentation mémoire (structure) et les mêmes

comportements

§ définissant cette structure

§ définissant et détenant ces comportements

§ capable de générer des instances

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

5/53

§ public/private: la portée. La visibilité par défaut d’une classe

est dans son propre paquetage

§ Mots clés optionnels:

§ abstract: impossibilité à être instanciée

§ final: impossibilité à être dérivée (Voir chapitre suivant)

Exemple

public class Voiture { ... }

Syntaxe de définition d’une classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{public/private} |abstract |final| class nomClasse{

z Corps de la classe/

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Exemple

public class Voiture { ... }

Syntaxe de définition d’une classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{public/private} |abstract |final| class nomClasse{

z Corps de la classe/

}

§ public/private: la portée. La visibilité par défaut d’une classe

est dans son propre paquetage

§ Mots clés optionnels:

§ abstract: impossibilité à être instanciée

§ final: impossibilité à être dérivée (Voir chapitre suivant)

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Syntaxe de définition d’une classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{public/private} |abstract |final| class nomClasse{

z Corps de la classe/

}

§ public/private: la portée. La visibilité par défaut d’une classe

est dans son propre paquetage

§ Mots clés optionnels:

§ abstract: impossibilité à être instanciée

§ final: impossibilité à être dérivée (Voir chapitre suivant)

Exemple

public class Voiture { ... }

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Les membres d’une classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Attributs

§ Méthodes

§ Constructeur

§ Accesseurs

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

7/53

Attributs

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Les attributs d’un objet sont l’ensemble d’informations se

présentant sous forme de variables et permettant de représenter

l’état de l’objet

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

8/53

§ private/protected/public: la portée (voir diapositive n˚7)

§ Mots clés optionnels:

§ static: il s’agit d’une variable de classe

§ final: la variable ne pourra être affectée qu’une seule fois. Une

fois la variable est affactée, sa valeur ne pourra plus changer

private final String NImm; Le numéro d’immatriculation d’une

Exemple: Attribut final

public class Voiture {

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

Déclaration d’un attribut

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{private/protected/public}| static| final|type nomAttribut;

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

private final String NImm; Le numéro d’immatriculation d’une

Exemple: Attribut final

public class Voiture {

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

Déclaration d’un attribut

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{private/protected/public}| static| final|type nomAttribut;

§ private/protected/public: la portée (voir diapositive n˚7)

§ Mots clés optionnels:

§ static: il s’agit d’une variable de classe

§ final: la variable ne pourra être affectée qu’une seule fois. Une

fois la variable est affactée, sa valeur ne pourra plus changer

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

Déclaration d’un attribut

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{private/protected/public}| static| final|type nomAttribut;

§ private/protected/public: la portée (voir diapositive n˚7)

§ Mots clés optionnels:

§ static: il s’agit d’une variable de classe

§ final: la variable ne pourra être affectée qu’une seule fois. Une

fois la variable est affactée, sa valeur ne pourra plus changer

Exemple: Attribut final

public class Voiture {

private final String NImm; Le numéro d’immatriculation d’une

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

Specifier

Classe

Sous-classes Package Partout

private

protected

public

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

Qualifieur par défaut: sans modificateur d’accès, seules les classes

du même package peuvent accéder à l’item

La portée

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Portée d’un identificateur:

Zone du texte d’un programme, relativement à l’emplacement de

sa déclaration, où un identificateur est visible

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

Qualifieur par défaut: sans modificateur d’accès, seules les classes

du même package peuvent accéder à l’item

La portée

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Portée d’un identificateur:

Zone du texte d’un programme, relativement à l’emplacement de

sa déclaration, où un identificateur est visible

Specifier

private

protected

public

Classe

(cid:88)

(cid:88)

(cid:88)

Sous-classes Package Partout

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

La portée

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Portée d’un identificateur:

Zone du texte d’un programme, relativement à l’emplacement de

Publicité

sa déclaration, où un identificateur est visible

Specifier

private

protected

public

Classe

(cid:88)

(cid:88)

(cid:88)

Sous-classes Package Partout

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

Qualifieur par défaut: sans modificateur d’accès, seules les classes

du même package peuvent accéder à l’item

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

Variables de classe (Attribut static)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Variable de classe: variables représentant des propriétés dont la

valeur est partagée par toutes les instances d’une même classe

Exemples:

§ la classe des carrés et la variable nbCotés (tous les carrés ont

le même nombre de cotés)

§ la classe des Tunisiens et la variable président de la republique

La ou elles sont visibles, les variables statiques peuvent être

référencées:

§ simplement par leur nom, au sein des méthodes

§ notation pointée via la classe

§ notation pointée via une instance

Remarque: Une constante est une variable statique et finale

Exemple:

§ private static final float pi=3.14; dans la classe cercle

§ private static float moyenneDeReussite; dans la classe

Etudiant

11/53

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

Exemple 1

Classe

Attribut

Méthode

Création d’objets

Encapsulation

class Tunisien {

private String nom, prénom, adresse;

private int age;

private static String president = “KS” ;

. . .

Tunsien(){. . . }

}

System.out.println(“Le président des Tunisiens

est”:+Tunisien.president);

Ahmed = new Tunisien();

System.out.println(“Le président des Tunisiens est”:

Ahmed.president);

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

12/53

Exercice

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Ecrire une classe Personne qui permet de gérer les individus, cette

classe dispose des attributs suivant:

§ nom

§ prénom

§ âge

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

13/53

Méthodes

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Méthode: fonction ou procédure nommée, définie au sein d’une

classe et définissant une propriété fonctionnelle des instances de la

classe. Elle décrit comment une instance de cette classe va réagir à

la réception du message correspondant à son nom

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

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

14/53

§ private/protected/public: la protée de la méthode (voir

diapositive n˚7)

§ Mots clés optionnels:

§ static: méthode de classe

§ abstract: méthode abstraite ou virtuelle pure

§ final: méthode ne pouvant être redéfinie sur une sous-classe

(ne pouvant être spécialisée)

§ typeDeRetour: type de la valeur rendue, si c’est une

procédure il faut mettre void

§ nomMethode: nom de la méthode

§ (type param1, type param2, . . . ): liste des paramètres

§ throws: liste des exceptions signalées

Syntaxe en Java

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{private/protected/public}| static| abstract |final| typeDeRetour

nomMethode (type param1, type param2, . . . ) throws. . .

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

15/53

Syntaxe en Java

Classe

Attribut

Méthode

Création d’objets

Encapsulation

{private/protected/public}| static| abstract |final| typeDeRetour

nomMethode (type param1, type param2, . . . ) throws. . .

§ private/protected/public: la protée de la méthode (voir

diapositive n˚7)

§ Mots clés optionnels:

§ static: méthode de classe

§ abstract: méthode abstraite ou virtuelle pure

§ final: méthode ne pouvant être redéfinie sur une sous-classe

(ne pouvant être spécialisée)

§ typeDeRetour: type de la valeur rendue, si c’est une

procédure il faut mettre void

§ nomMethode: nom de la méthode

§ (type param1, type param2, . . . ): liste des paramètres

§ throws: liste des exceptions signalées

15/53

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

Méthodes de classe (Méthode static)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Méthode définissant une propriété fonctionnelle de la classe (et pas

de ses instances).

Exemple: Méthode de classe MAXVALUE de la classe Integer.

Integer.Max Value(val1, val2);

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

16/53

Envoi de méssage (appel de méthode)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Syntaxe Java: receveur.selecteur(arg1, ..., argn);

Envoi de message: demande à un objet, dit le receveur d’exécuter

une méthode définie dans sa classe par une méthode de nom

selecteur.

Exemples:

§ voit.rouler();

§ int c=voit.rouler(10000);

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

17/53

Exercice (suite)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

La classe personne dispose d’une méthode void afficherInfos() qui

affiche les informations d’une Personne. Donnez le code source de

cette méthode.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

18/53

Constructeur

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Méthode particulière, portant le même nom que la classe et

automatiquement invoquée à la création d’une instance.

Un constructeur peut avoir un nombre quelconque de paramètres.

Un constructeur se définit comme une méthode standard portant le

même nom que la classe, mais ne renvoie aucune valeur (même pas

void).

Le rôle du constructeur est de déclarer et de permettre d’initialiser

les données membres de la classe, ainsi que de permettre

différentes actions (définies par le concepteur de la classe) lors de

l’instanciation.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

19/53

Constructeur simple

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

Voiture(){ }

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

20/53

Constructeur avec initialisation fixe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

Voiture(){

NImm=“1234TU195”;

Marque=“Fiat”;

Couleur=“Rouge”;

km=95000;

}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

21/53

Constructeur avec initialisation variable

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

Voiture(String n, String m, String c, int k){

NImm=n;

Marque=m;

Couleur=c;

km=k;

}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

22/53

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Exemple: Classe voiture

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

public Voiture(String n, int k){

NImm=n;

km=k;

}

public void rouler(int k){//k le km additionnel

km=km+k;

}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

23/53

Exemple: Instantiation et appel de méthode

Classe

Attribut

Publicité

Méthode

Création d’objets

Encapsulation

§ Instantiation: nom donné à l’opération de création d’un objet

a partir du modele qu’est une classe.

§ Elle se fait en appelant le consutructeur de la classe avec

l’opérateur new.

§ l’opérateur new crée pour le nouvel objet autant

d’emplacements memoire qu’il y a d’attributs dans sa classe.

Exemple

public static void main(String[] args) {

Voiture voit=new Voiture(“1234TU195”,90000);

//constructeur avec initialisation fixe

voit.rouler(10000);//Appel de la méthode rouler

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

24/53

Les accésseurs

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Deux types de méthodes ont un statut particulier en Java: les

getters et les setters

Afin de respecter le principe d’encapsulation (détaillé dans la

suite de ce chapitre), les attributs non statiques d’une classe sont

déclarés “private”. Afin de pouvoir lire ces attributs, et

éventuellement d’en modifier la valeur, on ajoute à la classe un

getter et un setter pour certains de ses attributs “private”

Le nom de ces deux méthodes est fixé par une convention

universellement suivie

Un getter commence par get, suivi d’un nom, qui est en général le

nom de l’attribut, commençant par une majuscule. Il retourne une

valeur en général du même type que l’attribut associé

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

25/53

Les accésseurs

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Le setter associé commence par set, suivi du nom de l’attribut. Il

prend en paramètre un unique argument, du même type que le

type de l’attribut

Si aucun setter n’est associé à un attribut, alors cette propriété est

en lecture seule

Si aucun setter, ni getter ne sont associé à un attribut, alors cet

attribut est utilisé uniquement pour l’implémentation interne de la

classe

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

26/53

Exemple de la classe Personne

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public String getNom(){

return Nom;

}

public Personne setCIN(int i) {

CIN = i;

return this;}

ou bien

public void setCIN(int i) {

CIN = i;

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

27/53

Exercice (suite)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Ajoutez à la classe Personne un constructeur par défaut (un

constructeur simple)

§ Ajoutez à la classe Personne les accésseurs nécéssaires

§ Dans une classe TestPersonne, définissez un main où vous

créez une première personne se nommant “Mohamed

Chouchen” agé de 25 ans

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

28/53

Surcharge de méthodes

Classe

Attribut

Méthode

Création d’objets

Encapsulation

La surcharge est la possibilité d’utiliser dans une même classe, le

même nom de méthodes ayant la même sémantique mais avec

différentes signatures.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

29/53

Exemple

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public class Voiture {

private String NImm, Marque, Couleur;

private int km;

public Voiture(String n, int k){

NImm=n;

km=k;}

public void rouler(int k){//k le km additionnel

km=km+k;}

public int rouler(int k){//k le km additionnel

rouler(k);

return km;}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

30/53

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Surcharge de constructeur

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

Voiture(){ }

Voiture(String n){

NImm=n;

}

Voiture(String n, String m, String c, int k){

NImm=n;

Marque=m;

Couleur=c;

km=k; }

}

31/53

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

Exercice (suite)

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Dans le main créez une deuxieme personne a partir de

données saisies par l’utilisteur. Pensez à ajouter un

constructeur adapté à ce besoin dans la classe Personne.

§ Modifiez votre code pour que la saisie des informations soit

faite dans une méthode de la classe personne.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

32/53

Exemple: Méthode statique

Classe

Attribut

Méthode

Création d’objets

Encapsulation

import java.util.Scanner;

public class Voiture {

private final String NImm;

private String Marque;

private String Couleur;

Scanner sc = new Scanner(System.in);

Voiture(String N){ NImm=N;}//constructeur

public static String saisirNImm(){

System.out.println(“Donnez le numéro d’immatriculation de la

voiture”);

String n= sc.nextLine();

return n; }

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

33/53

Exemple: Méthode statique

Classe

Attribut

Méthode

Création d’objets

Encapsulation

public static void main(String[] args) {

String n=Voiture.saisirNImm();

Voiture v1=new Voiture(n);

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

34/53

Objet

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Un objet est une variable (presque) comme les autres. C’est une

entité logicielle:

§ Ayant une identité.

§ Capable de sauvegarder un état c’est-à-dire un ensemble

d’informations dans des variables internes (attributs).

§ 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 des fonctions

liées à des objets et qui précisent le comportement de ces

objets.

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.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

35/53

Classes, Objets, Instances

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Un objet est caractérisé par:

§ Son identité (OID): valeur unique et invariante qui caractérise

l’objet

§ Son comportement: qui est défini à travers les méthodes

applicables à cet objet et qui caractérisent sa façon d’agir et

de réagir dans son environnement.

§ Son état: qui constitue l’ensemble des valeurs des attributs de

cet objet.

“ą Une classe est un type qui encapsulent 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

activeront les méthodes correspondantes.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

36/53

Instantiation

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Un objet est instance d’une classe.

§ Objet: instance d’une classe, entité informatique, individuelle,

repérée par une adresse unique, et constituée d’un ensemble

de champs contenant des valeurs.

§ Rappels: Un objet possède autant de champs qu’il y a

d’attribut d’instance définies dans sa classe. Les valeurs de ses

champs représentent l’état courant d’un objet.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

37/53

Exemple d’instances

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

38/53

Exemple

Classe

Attribut

Méthode

Création d’objets

Encapsulation

1. Personne p1 = new Personne();

2. Voiture v1 = new Voiture();

3. Personne [] tab = new Personne[10]; // un tableau de 10

personnes

4. tab[1] = new Personne(); // dans le second emplacement

duquel on stocke une nouvelle Personne

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

39/53

Déstruction des objets

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Publicité

Java dispose d’un ramasse-miette (garbage collector).

Le garbage collector libère automatiquement l’espace mémoire

occupé par tout objet qui n’est plus référencé pendant un certain

temps.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

40/53

Clonage d’objets

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ L’opérateur “=” ne permet pas des créer des objets

identiques. Il permet seulement de créer des références

identiques pointant sur le même objet.

§ Pour créer des objets identiques il faut utiliser “clone()”

héritée de la classe “Object ” (super-classe de toutes les

classes).

Exemple:

public static void main(String[] args) {

Voiture voit=new Voiture(“1234TU195”,90000);

Voiture v1=voit;//v et voit2 pointent vers le même objet

Voiture v2=voit.clone();//v2 et voit pointent vers 2 objets

différents ayant le même état

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

41/53

Comparaison d’objets

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ L’opérateur “ ==” compare les références. Si 2 variables v1

et v2 pointent vers le même objet, v1 ““ v2 retourne true, et

false sinon.

§ La méthode equals() héritée de la classe Object compare les

états (valeurs d’attributs) de 2 objets.

Exemple:

public static void main(String[] args) {

Voiture voit=new Voiture(“1234TU195”,90000);

Voiture v1=voit;//v1 et voit pointent vers le même objet

Voiture v2=voit.clone();//v2 et voit pointent vers 2 objets

différents ayant le même état

if(voit==v1){. . . }; true

if(voit.equals(v1)){. . . }; true

if(voit==v2){. . . }; false

if(voit.equals(v2)){. . . }; true

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

42/53

Mot clé this

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Le mot clé this, sert à référencer l’instance de l’objet en cours

d’utilisation dans une méthode.

§ this est un objet qui est égale à l’instance de l’objet dans

lequel il est utilisé.

§ Il peut être utile lorsqu’une variable locale ou un paramètre

d’une méthode porte le même nom qu’un attribut.

§ this est aussi utilisé quand l’objet doit appeler une méthode

en se passant lui même en paramètre de l’appel.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

43/53

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Exemple

Exemple:

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

public Voiture(String NImm, int km){

this.NImm=NIMM;

this.km=km;

}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

44/53

Mot clé InstanceOf

Obj instanceof Classe

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ instanceof est un opérateur qui teste si un objet est une

instance d’une classe.

§ Elle retourne true si c’est le cas et false sinon.

§ Elle est géneralement utilisée dans une condition if.

Exemple:

public static void main(String[] args) {

Voiture voit=new Voiture(“1234TU195”,90000);

if(voit instanceof Voiture){

System.out.println(“C’est une voiture”);}

else{System.out.println(“Ce n’est pas une voiture”);}

}

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

45/53

Les packages

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Définition: Java permet de regrouper les classes en ensembles

appelés packages afin de faciliter la modularité

§ Chaque paquetage porte un nom. Ce nom est soit un simple

identificateur ou une suite d’identificateurs séparés par des

points. L’instruction permettant de nommer un paquetage

doit figurer au début du fichier source (.java) comme suit:

————- Fichier Exemple.java ———-

package nomtest; // 1ere instruction

public class Exemple{// suite du code ...}

————- Fin du Fichier —————-

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

46/53

Les packages

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ Ainsi par cette opération la classe Exemple est assignée au

paquetage nomtest.

§ Si l’instruction package était absente du fichier, alors c’est le

paquetage par défaut qui est pris en considération. Ainsi la

classe du fichier va appartenir au paquetage par défaut.

§ Utilisation: Lors de l’instanciation d’un objet d’une classe

donnée, le compilateur va chercher cette classe dans le

package où elle a été appelée, nous dirons que cette recherche

a eu lieu dans le paquetage par défaut même si ce dernier

porte un nom.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

47/53

Utilisation d’une classe d’un autre package

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Pour instancier ou utiliser une classe appartenant à un autre

package, il faut:

§ mentionner le chemin complet d’acces a la classe :

Exemple:

NomPackage.UneAutreClasse mm = new

NomPackage.UneAutreClasse();

§ importer les paquetages utiles en utilisant l’instruction import

comme suit:

————- Fichier Test.java ————

import NomPackage.UneAutreClasse;

public class Test{ . . .

UneAutreClasse mm = new UneAutreClasse();. . . }

—————-Fin Fichier—————–

§ importer tout le package en entier avec import NomPackage.*;

afin d’utiliser toutes classes se trouvant dans ce package.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

48/53

Exemple de packages java

Classe

Attribut

Méthode

Création d’objets

Encapsulation

java.applet

java.awt

java.io

java.lang

java.math

java.net

java.rmi

Classes de base pour les applets

Classes d’interface graphique AWT

Classes d entrées/sorties (flux, fichiers)

Classes de support du langage

Classes permettant la gestion de grands nombres.

Classes de support réseau (URL, sockets)

Classes pour les méthodes invoquées à partir de

machines virtuelles non locales.

java.security Classes et interfaces pour la gestion de la sécurité.

Classes pour l’utilisation de JDBC.

java.sql

Classes pour la manipulation de textes, de dates

et de nombres dans plusieurs langages.

Classes d utilitaires (vecteurs, hashtable)

Classes d interface graphique

java.util

javax.swing

java.text

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

49/53

Associations entre classes

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Relation d’association: relation spécifiant qu’un objet, est

sémantiquement connecté, à un autre objet indépendant.

Une association (emploie) entre deux sortes d’objets peut être

représentée de differentes manières:

§ Une classe (Emploi) et deux attributs: employeur de type

Emploi dans la classe Compagnie et employé de type

Emploi dans la classe P ersonne.

§ Deux attributs, attention à la gestion de l’inverse.

Exemple:

§ Classe Personne

employeur : Compagnie

§ Classe Compagnie

employés : collection de Personnes

§ Un seul des deux attributs: pas de problème de gestion de

l’inverse mais problème de navigabilité.

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

50/53

Encapsulation

Classe

Attribut

Méthode

Création d’objets

Encapsulation

§ L’encapsulation désigne le principe de regroupement des

données et du code qui les utilise au sein d’une même unité

(classe).

§ Le principe d’encapsulation est utilisé afin de protéger

certaines données des interférences extérieures en forçant

l’utilisateur à utiliser les méthodes définies pour manipuler les

données.

§ L’encapsulation est le faite qu’un objet renferme ses propres

attributs et ses méthodes.

§ Les détails de l’implémentation d’un objet sont masqués aux

autres objets du systeme a objets.

§ On dit qu’il y a encapsulation de données et du comportement

des objets.

=ą L’encapsulation empêche que certaines propriétés ne soient

manipulées depuis l’extérieur de la classe

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

51/53

Exercice

Soit les classes suivantes:

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Chapitre 3 - Définition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

52/53

Exercice

Classe

Attribut

Méthode

Création d’objets

Encapsulation

Tout en respectant le principe de l’encapsulation et en ajoutant les

getters et setters nécéssaires;

1. Donnez le code source de la classe Date

2. Donnez le code source de la classe Contrat sachant que le

numero du contrat (numContrat) est un numéro séquentiel

qui s’incrémente automatique à chaque nouvelle instanciation

de la classe Contrat

3. Donnez le code source de la classe Employe

4. Dans votre programme principal, créez un employé “Mohamed

Besbes” , habitant à tunis ayant un numéro de CNSS

“TN344262” ayant le contrat de type CDD de numéro 1 qui a

commencé le 01/01...