Programmation Orientée Objet

Programming, Object-Oriented Programming (OOP) · course

Voir tous les documents en programmation

Programmation Orient´ee Objet

Chapitre 3: Les bases de la POO

Dr. Mouna Chebbah

Dr. Mouna Chebbah

L2 BC

ESEN

Semestre 1, 2020/2021

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

1/53

Programmation Orient´ee Objet

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

La POO est une m´ethode d’impl´ementation dans laquelle:

§ les programmes sont organis´es sous forme de collections

coop´eratives d’objets

§ chaque objet repr´esente une instance d’une classe quelconque

§ toutes les classes sont membres d’une hi´erarchie de classes

unies `a travers des relations d’h´eritage

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

2/53

Concepts de base de la POO

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

La POO se base sur les notions cl´es suivantes:

§ Classe et objets

§ Encapsulation

§ H´eritage: d´etaill´e dans le chapitre 4

§ Polymorphisme: d´etaill´e dans le chapitre 4

§ Abstraction: d´etaill´e dans le chapitre 5

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

3/53

Classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Comme ´etant une variable, il faut qu’un objet soit d´eclar´e avec son

type

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

primitifs: entier, caract`ere, . . . ) qu’on appelle une classe

Une classe regroupe un ensemble de donn´ees (qui peuvent ˆetre des

variables primitives ou des objets) et un ensemble de m´ethodes de

traitement de ces donn´ees et/ou de donn´ees ext´erieures `a la classe

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

4/53

Classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Classe: est une entit´e

§ repr´esentant un ensemble d’objets ayant la mˆeme

repr´esentation m´emoire (structure) et les mˆemes

comportements

§ d´efinissant cette structure

§ d´efinissant et d´etenant ces comportements

§ capable de g´en´erer des instances

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

5/53

§ public/private: la port´ee. La visibilit´e par d´efaut d’une classe

est dans son propre paquetage

§ Mots cl´es optionnels:

§ abstract: impossibilit´e `a ˆetre instanci´ee

§ final: impossibilit´e `a ˆetre d´eriv´ee (Voir chapitre suivant)

Exemple

public class Voiture { ... }

Syntaxe de d´efinition d’une classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

z Corps de la classe/

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Exemple

public class Voiture { ... }

Syntaxe de d´efinition d’une classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

z Corps de la classe/

}

§ public/private: la port´ee. La visibilit´e par d´efaut d’une classe

est dans son propre paquetage

§ Mots cl´es optionnels:

§ abstract: impossibilit´e `a ˆetre instanci´ee

§ final: impossibilit´e `a ˆetre d´eriv´ee (Voir chapitre suivant)

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Syntaxe de d´efinition d’une classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

z Corps de la classe/

}

§ public/private: la port´ee. La visibilit´e par d´efaut d’une classe

est dans son propre paquetage

§ Mots cl´es optionnels:

§ abstract: impossibilit´e `a ˆetre instanci´ee

§ final: impossibilit´e `a ˆetre d´eriv´ee (Voir chapitre suivant)

Exemple

public class Voiture { ... }

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

6/53

Les membres d’une classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Attributs

§ M´ethodes

§ Constructeur

§ Accesseurs

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

7/53

Attributs

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

pr´esentant sous forme de variables et permettant de repr´esenter

l’´etat de l’objet

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

8/53

§ private/protected/public: la port´ee (voir diapositive n˚7)

§ Mots cl´es optionnels:

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

§ final: la variable ne pourra ˆetre affect´ee qu’une seule fois. Une

fois la variable est affact´ee, sa valeur ne pourra plus changer

private final String NImm; Le num´ero d’immatriculation d’une

Exemple: Attribut final

public class Voiture {

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

D´eclaration d’un attribut

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

private final String NImm; Le num´ero d’immatriculation d’une

Exemple: Attribut final

public class Voiture {

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

D´eclaration d’un attribut

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

§ private/protected/public: la port´ee (voir diapositive n˚7)

§ Mots cl´es optionnels:

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

§ final: la variable ne pourra ˆetre affect´ee qu’une seule fois. Une

fois la variable est affact´ee, sa valeur ne pourra plus changer

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

D´eclaration d’un attribut

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

§ private/protected/public: la port´ee (voir diapositive n˚7)

§ Mots cl´es optionnels:

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

§ final: la variable ne pourra ˆetre affect´ee qu’une seule fois. Une

fois la variable est affact´ee, sa valeur ne pourra plus changer

Exemple: Attribut final

public class Voiture {

private final String NImm; Le num´ero d’immatriculation d’une

voiture ne change pas.

private String Marque;

private String Couleur;

private int km; . . . }

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

9/53

Specifier

Classe

Sous-classes Package Partout

private

protected

public

(cid:88)

Publicité

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

(cid:88)

Qualifieur par d´efaut: sans modificateur d’acc`es, seules les classes

du mˆeme package peuvent acc´eder `a l’item

La port´ee

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Port´ee d’un identificateur:

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

sa d´eclaration, o`u un identificateur est visible

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

Qualifieur par d´efaut: sans modificateur d’acc`es, seules les classes

du mˆeme package peuvent acc´eder `a l’item

La port´ee

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Port´ee d’un identificateur:

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

sa d´eclaration, o`u 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

La port´ee

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Port´ee d’un identificateur:

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

sa d´eclaration, o`u 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´efaut: sans modificateur d’acc`es, seules les classes

du mˆeme package peuvent acc´eder `a l’item

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

10/53

Variables de classe (Attribut static)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Variable de classe: variables repr´esentant des propri´et´es dont la

valeur est partag´ee par toutes les instances d’une mˆeme classe

Exemples:

§ la classe des carr´es et la variable nbCot´es (tous les carr´es ont

le mˆeme nombre de cot´es)

§ la classe des Tunisiens et la variable pr´esident de la republique

La ou elles sont visibles, les variables statiques peuvent ˆetre

r´ef´erenc´ees:

§ simplement par leur nom, au sein des m´ethodes

§ notation point´ee via la classe

§ notation point´ee 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

Exemple 1

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

class Tunisien {

private String nom, pr´enom, adresse;

private int age;

private static String president = “KS” ;

. . .

Tunsien(){. . . }

}

System.out.println(“Le pr´esident des Tunisiens

est”:+Tunisien.president);

Ahmed = new Tunisien();

System.out.println(“Le pr´esident des Tunisiens est”:

Ahmed.president);

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

12/53

Exercice

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Ecrire une classe Personne qui permet de g´erer les individus, cette

classe dispose des attributs suivant:

§ nom

§ pr´enom

§ ˆage

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

13/53

M´ethodes

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

M´ethode: fonction ou proc´edure nomm´ee, d´efinie au sein d’une

classe et d´efinissant une propri´et´e fonctionnelle des instances de la

classe. Elle d´ecrit comment une instance de cette classe va r´eagir `a

la r´eception du message correspondant `a son nom

La signature d’une m´ethode repr´esente la pr´ecision de son nom, du

type de ses arguments et du type de donn´ee retourn´ee

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

14/53

§ private/protected/public: la prot´ee de la m´ethode (voir

diapositive n˚7)

§ Mots cl´es optionnels:

§ static: m´ethode de classe

§ abstract: m´ethode abstraite ou virtuelle pure

§ final: m´ethode ne pouvant ˆetre red´efinie sur une sous-classe

(ne pouvant ˆetre sp´ecialis´ee)

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

proc´edure il faut mettre void

§ nomMethode: nom de la m´ethode

§ (type param1, type param2, . . . ): liste des param`etres

§ throws: liste des exceptions signal´ees

Syntaxe en Java

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

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

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

15/53

Syntaxe en Java

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

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

§ private/protected/public: la prot´ee de la m´ethode (voir

diapositive n˚7)

§ Mots cl´es optionnels:

§ static: m´ethode de classe

§ abstract: m´ethode abstraite ou virtuelle pure

§ final: m´ethode ne pouvant ˆetre red´efinie sur une sous-classe

(ne pouvant ˆetre sp´ecialis´ee)

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

proc´edure il faut mettre void

§ nomMethode: nom de la m´ethode

§ (type param1, type param2, . . . ): liste des param`etres

§ throws: liste des exceptions signal´ees

15/53

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

M´ethodes de classe (M´ethode static)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

M´ethode d´efinissant une propri´et´e fonctionnelle de la classe (et pas

de ses instances).

Exemple: M´ethode de classe MAXVALUE de la classe Integer.

Integer.Max Value(val1, val2);

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

16/53

Envoi de m´essage (appel de m´ethode)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

Envoi de message: demande `a un objet, dit le receveur d’ex´ecuter

une m´ethode d´efinie dans sa classe par une m´ethode de nom

selecteur.

Exemples:

§ voit.rouler();

§ int c=voit.rouler(10000);

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

17/53

Publicité

Exercice (suite)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

La classe personne dispose d’une m´ethode void afficherInfos() qui

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

cette m´ethode.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

18/53

Constructeur

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

M´ethode particuli`ere, portant le mˆeme nom que la classe et

automatiquement invoqu´ee `a la cr´eation d’une instance.

Un constructeur peut avoir un nombre quelconque de param`etres.

Un constructeur se d´efinit comme une m´ethode standard portant le

mˆeme nom que la classe, mais ne renvoie aucune valeur (mˆeme pas

void).

Le rˆole du constructeur est de d´eclarer et de permettre d’initialiser

les donn´ees membres de la classe, ainsi que de permettre

diff´erentes actions (d´efinies par le concepteur de la classe) lors de

l’instanciation.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

19/53

Constructeur simple

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

public class Voiture {

private String NImm;

private String Marque;

private String Couleur;

private int km;

Voiture(){ }

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

20/53

Constructeur avec initialisation fixe

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

21/53

Constructeur avec initialisation variable

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

22/53

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

23/53

Exemple: Instantiation et appel de m´ethode

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Instantiation: nom donn´e `a l’op´eration de cr´eation d’un objet

a partir du modele qu’est une classe.

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

l’op´erateur new.

§ l’op´erateur new cr´ee 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´ethode rouler

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

24/53

Les acc´esseurs

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Deux types de m´ethodes ont un statut particulier en Java: les

getters et les setters

Afin de respecter le principe d’encapsulation (d´etaill´e dans la

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

d´eclar´es “private”. Afin de pouvoir lire ces attributs, et

´eventuellement d’en modifier la valeur, on ajoute `a la classe un

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

Le nom de ces deux m´ethodes est fix´e par une convention

universellement suivie

Un getter commence par get, suivi d’un nom, qui est en g´en´eral le

nom de l’attribut, commen¸cant par une majuscule. Il retourne une

valeur en g´en´eral du mˆeme type que l’attribut associ´e

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

25/53

Les acc´esseurs

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

prend en param`etre un unique argument, du mˆeme type que le

type de l’attribut

Si aucun setter n’est associ´e `a un attribut, alors cette propri´et´e est

en lecture seule

Si aucun setter, ni getter ne sont associ´e `a un attribut, alors cet

attribut est utilis´e uniquement pour l’impl´ementation interne de la

classe

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

26/53

Exemple de la classe Personne

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

27/53

Exercice (suite)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Ajoutez `a la classe Personne un constructeur par d´efaut (un

constructeur simple)

§ Ajoutez `a la classe Personne les acc´esseurs n´ec´essaires

§ Dans une classe TestPersonne, d´efinissez un main o`u vous

cr´eez une premi`ere personne se nommant “Mohamed

Chouchen” ag´e de 25 ans

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

28/53

Surcharge de m´ethodes

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

La surcharge est la possibilit´e d’utiliser dans une mˆeme classe, le

mˆeme nom de m´ethodes ayant la mˆeme s´emantique mais avec

diff´erentes signatures.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

29/53

Exemple

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

public class Voiture {

private String NImm, Marque, Couleur;

private int km;

public Voiture(String n, int k){

NImm=n;

Publicité

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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

30/53

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

Exercice (suite)

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Dans le main cr´eez une deuxieme personne a partir de

donn´ees saisies par l’utilisteur. Pensez `a ajouter un

constructeur adapt´e `a ce besoin dans la classe Personne.

§ Modifiez votre code pour que la saisie des informations soit

faite dans une m´ethode de la classe personne.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

32/53

Exemple: M´ethode statique

Classe

Attribut

M´ethode

Cr´eation 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´ero d’immatriculation de la

voiture”);

String n= sc.nextLine();

return n; }

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

33/53

Exemple: M´ethode statique

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

public static void main(String[] args) {

String n=Voiture.saisirNImm();

Voiture v1=new Voiture(n);

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

34/53

Objet

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

entit´e logicielle:

§ Ayant une identit´e.

§ Capable de sauvegarder un ´etat c’est-`a-dire un ensemble

d’informations dans des variables internes (attributs).

§ R´epondant `a des messages pr´ecis en d´eclenchant des

activations internes appropri´es qui changent l’´etat de l’objet.

Ces op´eration sont appel´ees m´ethodes. Ce sont des fonctions

li´ees `a des objets et qui pr´ecisent le comportement de ces

objets.

On d´efinit l’objet comme l’instance d’une classe. La classe

repr´esente pour l’objet ce que repr´esente le type pour la variable.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

35/53

Classes, Objets, Instances

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Un objet est caract´eris´e par:

§ Son identit´e (OID): valeur unique et invariante qui caract´erise

l’objet

§ Son comportement: qui est d´efini `a travers les m´ethodes

applicables `a cet objet et qui caract´erisent sa fa¸con d’agir et

de r´eagir dans son environnement.

§ Son ´etat: qui constitue l’ensemble des valeurs des attributs de

cet objet.

“ą Une classe est un type qui encapsulent donn´ees et traitement.

C’est une sorte de moule qui permet ensuite de cr´eer 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´ethodes correspondantes.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

36/53

Instantiation

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Un objet est instance d’une classe.

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

rep´er´ee par une adresse unique, et constitu´ee d’un ensemble

de champs contenant des valeurs.

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

d’attribut d’instance d´efinies dans sa classe. Les valeurs de ses

champs repr´esentent l’´etat courant d’un objet.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

37/53

Exemple d’instances

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

38/53

Exemple

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

39/53

D´estruction des objets

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

Le garbage collector lib`ere automatiquement l’espace m´emoire

occup´e par tout objet qui n’est plus r´ef´erenc´e pendant un certain

temps.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

40/53

Clonage d’objets

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ L’op´erateur “=” ne permet pas des cr´eer des objets

identiques. Il permet seulement de cr´eer des r´ef´erences

identiques pointant sur le mˆeme objet.

§ Pour cr´eer des objets identiques il faut utiliser “clone()”

h´erit´ee 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ˆeme objet

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

diff´erents ayant le mˆeme ´etat

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

41/53

Comparaison d’objets

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ L’op´erateur “ ==” compare les r´ef´erences. Si 2 variables v1

et v2 pointent vers le mˆeme objet, v1 ““ v2 retourne true, et

false sinon.

§ La m´ethode equals() h´erit´ee de la classe Object compare les

´etats (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ˆeme objet

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

diff´erents ayant le mˆeme ´etat

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

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

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

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

}

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

42/53

Mot cl´e this

Classe

Publicité

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Le mot cl´e this, sert `a r´ef´erencer l’instance de l’objet en cours

d’utilisation dans une m´ethode.

§ this est un objet qui est ´egale `a l’instance de l’objet dans

lequel il est utilis´e.

§ Il peut ˆetre utile lorsqu’une variable locale ou un param`etre

d’une m´ethode porte le mˆeme nom qu’un attribut.

§ this est aussi utilis´e quand l’objet doit appeler une m´ethode

en se passant lui mˆeme en param`etre de l’appel.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

43/53

Classe

Attribut

M´ethode

Cr´eation 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

44/53

Mot cl´e InstanceOf

Obj instanceof Classe

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ instanceof est un op´erateur 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´eneralement utilis´ee 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

45/53

Les packages

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ D´efinition: Java permet de regrouper les classes en ensembles

appel´es packages afin de faciliter la modularit´e

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

identificateur ou une suite d’identificateurs s´epar´es par des

points. L’instruction permettant de nommer un paquetage

doit figurer au d´ebut 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

46/53

Les packages

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ Ainsi par cette op´eration la classe Exemple est assign´ee au

paquetage nomtest.

§ Si l’instruction package ´etait absente du fichier, alors c’est le

paquetage par d´efaut qui est pris en consid´eration. Ainsi la

classe du fichier va appartenir au paquetage par d´efaut.

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

donn´ee, le compilateur va chercher cette classe dans le

package o`u elle a ´et´e appel´ee, nous dirons que cette recherche

a eu lieu dans le paquetage par d´efaut mˆeme si ce dernier

porte un nom.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

47/53

Utilisation d’une classe d’un autre package

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Pour instancier ou utiliser une classe appartenant `a 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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

48/53

Exemple de packages java

Classe

Attribut

M´ethode

Cr´eation 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´ees/sorties (flux, fichiers)

Classes de support du langage

Classes permettant la gestion de grands nombres.

Classes de support r´eseau (URL, sockets)

Classes pour les m´ethodes invoqu´ees `a partir de

machines virtuelles non locales.

java.security Classes et interfaces pour la gestion de la s´ecurit´e.

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´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

49/53

Associations entre classes

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Relation d’association: relation sp´ecifiant qu’un objet, est

s´emantiquement connect´e, `a un autre objet ind´ependant.

Une association (emploie) entre deux sortes d’objets peut ˆetre

repr´esent´ee de differentes mani`eres:

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

Emploi dans la classe Compagnie et employ´e de type

Emploi dans la classe P ersonne.

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

Exemple:

§ Classe Personne

employeur : Compagnie

§ Classe Compagnie

employ´es : collection de Personnes

§ Un seul des deux attributs: pas de probl`eme de gestion de

l’inverse mais probl`eme de navigabilit´e.

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

50/53

Encapsulation

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

§ L’encapsulation d´esigne le principe de regroupement des

donn´ees et du code qui les utilise au sein d’une mˆeme unit´e

(classe).

§ Le principe d’encapsulation est utilis´e afin de prot´eger

certaines donn´ees des interf´erences ext´erieures en for¸cant

l’utilisateur `a utiliser les m´ethodes d´efinies pour manipuler les

donn´ees.

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

attributs et ses m´ethodes.

§ Les d´etails de l’impl´ementation d’un objet sont masqu´es aux

autres objets du systeme a objets.

§ On dit qu’il y a encapsulation de donn´ees et du comportement

des objets.

=ą L’encapsulation empˆeche que certaines propri´et´es ne soient

manipul´ees depuis l’ext´erieur de la classe

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

51/53

Exercice

Soit les classes suivantes:

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

Chapitre 3 - D´efinition de Classe et Construction d’Objets, M. Chebbah

Semestre 1, 2020

52/53

Exercice

Classe

Attribut

M´ethode

Cr´eation d’objets

Encapsulation

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

getters et setters n´ec´essaires;

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´ero s´equentiel

qui s’incr´emente automatique `a chaque nouvelle instanciation

de la classe Contrat

3. Donnez le code source de la classe Employe

4. Dans votre programme principal, cr´eez un employ´e “Mohamed

Besbes” , habitant `a tunis ayant un num´ero de CNSS

“TN344262” ayant le contrat de type CDD de num´ero 1 qui a

Publicité

commenc´e le 01/01...