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