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...