Chapitre 2 Classe Et Objet I ING
Chapitre 2 Classe Et Objet I ING
Chapitre 2 Classe Et Objet I ING
Classe et Objet
Plan du cours
Introduction
Classe et objet
Encapsulation
Héritage
Polymorphisme
Exceptions
Interface et Collection
Plan du cours
Classe et Objet
Notion de classe et d’objet
Déclaration de classe
Déclaration des attributs et des méthodes
Les types des variables (primitives et objets)
Notion de référence
Les constructeurs
Classe et Objet
Analyse d’un problème en
utilisant l’approche OO
Etude de cas:
Une société nommée “Direct Clothing” vend des chemises par
catalogue.
On veut développer un programme pour cette société.
On sait qu’une chemise possède les caractéristiques suivantes:
Chaque chemise:
•possède un identifiant: code à barre
•est disponible en plusieurs coloris: bleu, gris, etc
•est disponible en plusieurs tailles
•a un prix
•a une description: type du tissu, style, etc
•a une quantité dans le stock
Objet Chemise
ID
Prix Couleur Description
Quantité dans le stock
Une classe n'est pas un objet. Une classe est un patron d'objets.
Classe « Chemise »
Objet 1 Objet 2
Id: 101 Id: 201
Prix: 20$ Prix: 30$
Couleur: Bleu Couleur: Rouge
Quantite: 200 Quantite: 180
Un objet est donc « issu » d'une classe. C'est le produit qui sort d'un moule.
En réalité on dit qu'un objet est une instanciation d'une classe
objet = instance
/*commentaires sur
plusieurs lignes*/
}
•Le fichier .java doit avoir le même nom que la classe
(Chemise.java)
int id = 0;
int id = 0;
Constante
•On déclare une constante avec le mot final
Exemple:
final int MAX_STOCK=100;
Exemple:
float f=1.2
double d=34.8
Le type boolean
boolean abonne=true;
boolean false
Syntaxe:
Type_retour nom_method([arguments])
{
Exemple:
void afficherInfoChemise (){
void afficherInfoChemise() {
System.out.println(id + quantite);
}
}
Plan de construction
Classe « Chemise »
Objet 1 Objet 2
Référence 1 Référence 2
un constructeur porte le même nom que la classe dans laquelle il est défini
un constructeur n'a pas de type de retour (même pas void)
Chemise(){
id=0; couleur=‘B’ prix=10.2;
}
Constructeur surchargé
Chemise(int id, char couleur, float prix)
{ this.id=id; this.couleur=couleur;
this.prix=prix;
}
• Si le constructeur surchargé est créé, le constructeur par défaut implicite ne sera plus
créé par le compilateur
• La plateforme java différencie entre les différents constructeurs déclarés au sein d’une
même classe en se basant sur le nombre des paramètres et leurs types.
• On ne peut pas créer deux constructeurs ayant le même nombre et types des paramètres.
Chemise(int id) {
this.id=id
} Erreur de compilation
Chemise(int id) {
this.id=id*2
}
Classe et Objet -32-
Les constructeurs 4/4
Quel constructeur va choisir Java lorsque vous allez créer votre objet ?
class Chemise{
int id;
char couleur; float prix;
String description;
int quantite;
Utilisation:
Variable d’instance:
Etudiant [class]
Chaque instance de la classe possède ses
propres valeurs des variables.
Class Etudiant{
String nom;
-35-
Les attributs static 2/8
Variable d’instance:
Utilisation
On invoque les variables d’instance avec le nom de l’instance
-36-
Les attributs static 3/8
Variable de classe:
•n'appartient pas à une instance particulière. Elle appartient
à la classe. Etudiant [class]
•est partagée par toutes les instances de la classe
nbrEtudiants
Class Etudiant{ 201
String nom;
static int nbrEtudiants;
Etudiant [instance]
Etudiant(String nom){
this.nom=nom; nom
Ahmed
nbrEtudiants++;
}
}
-37-
Les attibuts static 4/8
Etudiant [class]
nbrEtudiants
201
Etudiant(String nom){
this.nom=nom; class Test{
nbrEtudiants++; public static void main(String[] args){
}
} System.out.println(etud1.nbrEtudiants);
} 012
}
Encapsulation -38-
Les attributs static 5/8
Variable de classe:
•n'appartient pas à une instance particulière. Elle appartient
à la classe. Etudiant [class]
•est partagée par toutes les instances de la classe
nbrEtudiants
Class Etudiant{ 201
String nom;
static int nbrEtudiants;
Etudiant [instance]
Etudiant [instance]
Etudiant(String nom){
this.nom=nom; nom
nom
Ahmed
nbrEtudiants++; Marwa
}
}
-37-
Les attributs static 6/8
Etudiant [class]
nbrEtudiants
201
Etudiant [instance]
class Etudiant{ Etudiant [instance]
String nom;
nom
static int nbrEtudiants; Ahmed
nom
Marwa
Etudiant(String nom){
this.nom=nom; class Test{
nbrEtudiants++; public static void main(String[] args){
}
} System.out.println(etud2.nbrEtudiants);
} 021
}
Encapsulation -38-
Les attributs static 7/8
Variable de classe:
•n'appartient pas à une instance particulière. Elle appartient
à la classe. Etudiant [class]
•est partagée par toutes les instances de la classe
nbrEtudiants
Class Etudiant{ 2013
String nom;
static int nbrEtudiants;
Etudiant [instance]
Etudiant [instance]
Etudiant(String nom){
this.nom=nom; nom
nom
Ahmed
nbrEtudiants++; Marwa
}
} Etudiant [instance]
Variable de classe:
Utilisation
On invoque les variables static avec le nom de la classe
class Etudiant{
String nom;
static int nbrEtudiants; class Test{
public static void main(String[] args){
Etudiant(String nom){
this.nom=nom; System.out.println(etud1.nbrEtudiants);
nbrEtudiants++;
} } 1203
} }
Encapsulation -38-
Les méthodes static 1/2
-39-
Les méthodes static 2/2
-40-
La méthode toString
La méthode toString est définie dans la classe Object
La méthode toString définie dans la classe Object renvoie le nom de la classe de l'objet
concerné suivi de l'adresse de cet objet.
Quand on redéfinit la méthode toString, on fait en sorte qu'elle renvoie une chaîne de
caractères servant à décrire l'objet concerné.
class Chemise{
int id;
char couleur;
float prix;
String description; int quantite;
-41-
Destructeur
Le destructeur est une méthode spéciale qui sera appelée lorsque l'objet sera
nettoyé de la mémoire par le Garbage Collector.