Introduction informelle à la Programmation Orientée Objets
Créer un premier gâteau à
partir d’un moule
Couleur : jaune
Epaisseur : 5
Type : simple
Gout : vanille
Nature : Non cuit
Créer des gâteaux de
même caractéristiques
(par défaut)
à partir d’un seul moule
Mme Kadri Mme Zaouche 1
Introduction informelle à la programmation orientée objets
On fait cuire le gâteau
Couleur : jaune
Epaisseur : 5
Type : simple
Gout : vanille
Nature : consommable
Glacer au chocolat un gâteau
Couleur : Noir
Epaisseur : 5
Type : simple
Gout : chocolat
Nature : consommable
Mme Kadri Mme Zaouche 2
Introduction informelle à la programmation orientée objets
Créer d’autres gâteaux (autres
caractéristiques)
Couleur : jaune
Epaisseur : 10
Type : simple
Gout : vanille
Nature : Non cuit
Mettre un trou dans un
gâteau Couleur : jaune
Epaisseur : 3
Type : troué
Gout : vanille
Nature : Non cuit
Mme Kadri Mme Zaouche 3
Introduction informelle à la programmation orientée objets
-Faire cuire gâteau
-Décorer gâteau
Couleur : blanc
Epaisseur : 10 ;
Gout : abricot
Nature : cuit ; Type : troué
Mme Kadri Mme Zaouche 4
Introduction informelle à la programmation orientée objets
Objets,
exemplaire ou
instances de
classe
Nou
veau
gâte
au Premier gâteau
No
uv
ea
ug Deuxième
âte
Classe au
gâteau
Moule
Descriptive
Plan de construction Troisième
gâteau
Mme Kadri Mme Zaouche 5
Introduction informelle à la programmation orientée objets
Un gâteau a des propriétés : épaisseur : 5
attributs, champs nature : consommable
gout : chocolat
couleur : marron
Valeurs des propriétés
( état d’un objet)
cuire
décorer
Un gâteau subi des congeler
traitements : comportements, décongeler
méthodes trouer
Mme Kadri Mme Zaouche 6
Introduction informelle à la programmation orientée objets
Tous les gâteaux sont caractérisés par les mêmes
propriétés:
epaisseur : entier
nature : chaine de caractères
gout : chaine de caractères
couleur : chaine de caractères .
Toutefois, les valeurs de ces propriétés peuvent différer
d’un gâteau à un autre.
Les mêmes traitements peuvent être appliqués à
n’importe quel gâteau:
- trouer,
- congeler,
- décorer.
- cuireMme Kadri Mme Zaouche 7
Introduction formelle à la Programmation Orientée Objet
La Programmation Orientée Objet (abrégée en POO)
désigne une approche de résolution algorithmique
ou programmation avec laquelle un logiciel est
organisé sous forme d’une collection d’éléments
(objets).
Ces éléments sont représentés tels qu’ils sont dans
le monde réel.
Cette approche se base essentiellement sur deux
éléments clés : l’objet et la classe.
Mme Kadri Mme Zaouche 8
Notion de L'objet
Un objet est une entité caractérisée par trois éléments fondamentaux :
1. Une identité : c’est un nom qu’on lui attribue,
Exemple: g1 et g2 sont des noms d’objets correspondant à deux
gâteaux
2. Des propriétés : c’est l’état de l’objet défini par un ensemble
de valeurs d’attributs,
Exemples:
(1) Les propriétés d’un gâteau sont ses caractéristiques (épaisseur,
couleur, gout, nature , type) . Leurs valeurs = état d’un objet.
(2) Les propriétés d’un étudiant donné sont son matricule, nom,
prénom, section, année d’étude, spécialité ainsi que ses notes.
Mme Kadri Mme Zaouche 9
3. Des comportements :
c’est l’ensemble d’actions (opérations, méthodes)
pouvant être réalisées sur l’objet et permettant de
traiter des données,
• exemple : décorer, congeler, trouer, cuire pour
un objet gâteau
• calcul de moyenne, le changement de section et
l’affichage de des informations pour un objet étudiant .
• Cependant, les objets sont créés à partir d’une classe
Mme Kadri Mme Zaouche 10
Notion de classe
Une classe est la représentation de la structure
d’une famille d’objets partageant des propriétés et
méthodes communes. Elle permet la déclaration
des attributs (propriétés) ainsi que la définition de
l’ensemble de méthodes.
Une classe est considérée comme un moule de
création d’objets, et un objet serait donc une
instance (exemplaire) d’une classe.
. Mme Kadri Mme Zaouche 11
La définition d’une classe consiste à créer un
nouveau type.
Une fois créée, la classe devient un type et des
objets peuvent être associés à ce type.
Une classe généralise la notion de type
et l’objet celle d’une variable
Une classe peut être vue comme un
enregistrement auquel on associe des
traitements spécifiques
Mme Kadri Mme Zaouche 12
La structure d’une classe en java
La définition d’une classe consiste à lui attribuer un nom, déclarer ses
attributs et à implémenter (écrire le code) ses méthodes. Ainsi, le
squelette d’une classe est composé de trois parties :
A. Entête de la classe
B. La déclaration des attributs
C. La définition des méthodes
Mme Kadri Mme Zaouche 13
A. L’entête de la classe
L’entête d’une classe est décrite par le mot réservé class
suivi de nom de la classe ainsi que d’autres éléments (seront
vus plus loin).
Conventions :
1. La première lettre de nom de classe est une majuscule (e.g. Point).
2. Si le nom de la classe est composé de plusieurs mots,
la première lettre de chaque mot est en majuscule
et le reste en minuscules (e.g. PointColoré)
Mme Kadri Mme Zaouche 14
La classe Point ressemble à ceci : La classe Etudiant ressemble à
ceci :
class Etudiant {
class Point { // Déclaration des attributs
// Déclaration des attributs ……..
…….. // Déclaration des méthodes
// Déclaration des méthodes ………..
………..
}
}
Mme Kadri Mme Zaouche 15
B. Déclaration des attributs
La déclaration des attributs permet de spécifier, le nom, le
type et éventuellement une valeur initiale.
Par convention, la déclaration des attributs est donnée au
début de la classe.
Le type d’un attribut peut être :
- Primitif tel que double, int, float, double, boolean.
- Nom d’une classe tel que Point, String, Etudiant.
Mme Kadri Mme Zaouche 16
Exemples de déclarations
• Type primitif
int x,y; // int est un type primitif
float z; // on peut déclarer autant de variables que l’on veut
• Type prédéfini (classe)
Point p1,p2 // on peut déclarer autant d’objets que l’on veut
Etudiant et1,et2,et3,et4;
String nom,prénom,adresse
Voiture maToyota, maPolo;
Amphi amph1, amph2;
Pays pay1, pay2,pay3
Mme Kadri Mme Zaouche 17
Exemple 1
Définir une classe Point. Chaque point d’un plan est caractérisé
par une abscisse et une ordonnée. (Traitement après)
class Point {
// déclaration des attributs
double x, y;
// Définition des méthodes
après
} Mme Kadri Mme Zaouche 18
Exemple 2
Définir la classe Segment.
Un segment est caractérisé par deux extrémités de type Point. (Traitement après).
class Segment { Attention, ce
// Attributs n’est pas
double xe1, ye1, interessant
xe2,ye2 ;
double épaisseur;
// Définition des profiter du
méthodes après type Point.
} Mme Kadri Mme Zaouche 19
class Segment {
// attributs
Point p1, p2 ;
double épaisseur;
// Définition des
méthodes après
}
Mme Kadri Mme Zaouche 20
C. Définition des méthodes
La définition d’une méthode est composée de sa signature
suivie de son corps. La signature comporte généralement le
nom de la méthode, son type de retour et un ensemble de
paramètres.
La syntaxe utilisée pour définir le corps d’une méthode java
est identique à celle utilisée pour les fonctions en C. Ainsi,
nous retrouvons les mêmes :
- Instructions conditionnelles, itératives, etc.
- Opérateurs de comparaisons, logiques, etc.
Mme Kadri Mme Zaouche 21
Convention :
-Les noms des attributs et méthodes commencent par une lettre
minuscule.
Si le nom est composé, la première lettre de chaque mot est en majuscule
sauf pour le premier mot.
Exemple
float calculMoyenne()
Remarque Importante :
Dans java, aucune instruction n’est permise en dehors d’une méthode,
seules les initialisations lors de la déclaration des attributs sont autorisée
Mme Kadri Mme Zaouche 22
Les méthodes d’une classe peuvent être classées
en trois catégories :
1. Les méthodes de traitement.
2. Les méthodes d’exécutions.
3. Les méthodes d’initialisation.
Mme Kadri Mme Zaouche 23
1. Les méthodes de traitements
Les méthodes de traitement correspondent
aux actions possibles pouvant être
invoquées par des objets de la classe telles
que déplacer un point, afficher les
coordonnées d’un point.
Mme Kadri Mme Zaouche 24
class Point{
// Déclaration des attributs
double x,y ;
// Définition des méthodes
void déplacer( double a, double b) {x+=a ;y+=b ; }
void afficher(){
System.out.println (" l’abscisse =" +x+ "ordonnée = "+y );}
}
Mme Kadri Mme Zaouche 25
class Etudiant{
// Déclaration des attributs
String mat, nom, prénom, dateNaissance ;
double note1, note2 ;
// Définition des méthodes
void moyenne() {return (note1+note2)/2 ; }
void afficher(){ System.out.println (" Le nom est =" +nom+ » et le
prénom = "+prénom );}
}
Mme Kadri Mme Zaouche 26
2. La méthode d’exécution: main
Une classe définie par ses attributs et ses méthodes n’est
pas exécutable même si elle est compilée sans erreur, Pour
exécuter une classe, les concepteurs java ont choisi pour
cela de particulariser une méthode, appelée la méthode
main. La méthode main a la signature suivante :
public static void main(String[] args).
Remarque :
1. Toute classe possédant la méthode main est appelée
classe exécutable.
2. Dans une application java il suffit d’avoir une seule
classe exécutable.
3. Les termes static et public seront définis plus loin.
Mme Kadri Mme Zaouche 27
Exemple d’une classe exécutable
class Application
{
public static void main(String[] ars)
{
System.out.println("On dit que ISIL B est une bonne
section!!!" );
System.out.println(" Prouvez le moi!! " );
}
}
Remarque: De préférence mettre la méthode main dans une
classe à part, elle sera considérée, la classe qui lance
l’application ou la classe deMmetest.
Kadri Mme Zaouche 28
3. Les méthodes d’initialisation
A la création d’un objet, ses attributs sont initialisés par une
méthode particulière appelée, constructeur. Un constructeur est
une méthode qui :
- n’a pas de type de retour,
- porte le même nom que la classe,
- ne peut être appelé en dehors de la création d’un objet,
- il permet d’initialiser les attributs de l’objet à créer.
Mme Kadri Mme Zaouche 29
Si une classe ne définit pas de constructeur
(explicitement), un constructeur par défaut est créé
automatiquement (implicitement) par le compilateur
Le constructeur implicite permet d’initialiser
les attributs par des valeurs par défaut.
Par exemple, les numériques sont initialisés à zéro,
le booléen à faux, une référence d’objet à null.
En revanche, le constructeur explicite initialise
les attributs par des valeurs passées en paramètre.
Mme Kadri Mme Zaouche 30
Classe point sans constructeur explicite
class Point {
// Déclaration des attributs
double x,y ;
// Définition des méthodes de traitement
void déplacer( double a, double b) {x+=a ;y+=b ; }
void afficher(){ System.out.println (" l’abscisse =" +x+
"ordonnée = "+y );}
}
Mme Kadri Mme Zaouche 31
Classe Point avec un constructeur explicite
class Point {
// Déclaration des attributs
double x,y ;
// Constructeur
Point(double a, double b){x=a ; y=b ;}
// Définition des méthodes de traitement
void déplacer( double a, double b) {x+=a ;y+=b ; }
void afficher(){ System.out.println (" l’abscisse =" +x+
"ordonnée = "+y );}
} Mme Kadri Mme Zaouche 32
Constructeur explicite ou implicite
Si une classe ne définit pas de constructeur
(explicitement), un constructeur par défaut est
créé automatiquement (implicitement ) par le
compilateur. Ce constructeur est sans paramètres.
Exemple: On le voit pas dans la classe, exemple la
classe Point bleue.
Le constructeur implicite permet d’initialiser les
attributs par des valeurs par défaut. Par exemple, les
numériques sont initialisés à zéro, le booléen à faux,
une référence d’objet à null.
Les objets de la classe Point bleue sont créés avec
des coordonnées nulles. Mme Kadri Mme Zaouche 33
Le constructeur explicite initialise les
attributs par des valeurs passées en
paramètre.
Exemple : Les objets de la classe Point verte
sont créés avec des coordonnées choisies par
l’utilisateurs.
Remarque: Dès qu’un constructeur avec
paramètre est mis dans la classe, le
constructeur sans paramètres ne peut être
utilisé sauf si on rajoute un constructeur explicite
sans paramètre à la classe.
Mme Kadri Mme Zaouche 34
Instanciation d’une classe ou création d’objets
Pour créer une instance (ou objet) d’une classe, on utilise
l’opérateur new suivi d’un constructeur de la classe. Bien
évidemment, l’objet à créer doit être préalablement déclaré avec
le type de la classe adéquate.
Exemple 1 (classe Point sans constructeur explicite, la bleu)
1. Point p1 ; // déclaration de l’objet
p1 ?
2. p1 = new Point ( ) ; //Création de l’objet
P1 0 0
Mme Kadri Mme Zaouche 35
Instanciation d’une classe ou création d’objets
Exemple 2 (classe Point avec constructeur explicite, la verte)
1. Point p2,p3,p4,p5 ; // déclaration de l’objet
2. p2 = new Point (3, 4 ) ; //Création de l’objet p2
3. p3 = new Point (-3, -4 ) ; //Création de l’objet p3
4. p4 = new Point (-3, -4 ) ; //Création de l’objet p4
Questions: - représentez en mémoire ces objets.
- l’objet p5 a-il-été créé?
- P3 et p4 correspondent ils à un même objet?
Mme Kadri Mme Zaouche 36
Accès aux membres d’un objet
L’accès à un membre (attribut ou méthode) d’un objet donné se fait
à l’aide de la notation à point. Cette notation possède deux
parties séparées par un point: à gauche du point, on trouve la
référence de l’objet et à sa droite le membre:
NomDeObjet.NomAttribut
ou
NomDeObjet.NomMethode( )
Mme Kadri Mme Zaouche 37
Exemples
Point p1,p2 ; Voiture v1,v2 ; Oiseau o1 ; Femme f1 ;
Homme h1 ;
p1.affiche() ; p2.deplace(3,4) ; bool= p1.egal(p2) ;
v1.affiche() ; bool= v2.plusPuissante(v1) ; v2.demarrer() ;
o1.affiche() ; o1.voler() ; esp= o1.espece() ;
f1.affiche() ; h1.marie(f1) ;
p5.affiche(); ?????????
Mme Kadri Mme Zaouche 38
Exemples:
Class PointApplication {
public static void main(String[] ars) {
Point p1 = new Point (12,23) ;// classe Point verte
System.out.println(p1.x) ; p1.affiche();
p1. déplacer(15,-4) ;
p1.afficher() ;
Point p2 = new Point (2,3) ;// classe Point verte
p2. déplacer(15,-4) ;
p2.afficher() ;
Point p3 = new Point();
Point p4 =null;
p4.déplacer(2,6); // sont elles correctes?
}
}
Donner les messages affichés suite à l’exécution de cette classe.
Mme Kadri Mme Zaouche 39