Vous êtes sur la page 1sur 26

Lycée Diderot – BTS I.R.I.

LA PROGRAMMATION G.VALET
Nov 2010

ORIENTÉE OBJET Ve rs i o n 1 . 0

Courriel : genael.valet@diderot.org , URL : http://www.diderot.org 1


Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

COMMENT FAISAIT-ON AVANT ?


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 La programmation Programme
procédurale
Début
 Une suite d’instructions
s’exécutant les unes après les Instruction 1
autres Sous programme

 Avec des procédures ou des Instruction 1

fonctions (sous-programmes) Décision Instruction 12Instruction 2

 Cette approche a permis de


Décision Instruction 21
décomposer les Instruction 2

fonctionnalités d’un Instruction 3

programme en procédures
Appel sous
programme

qui s’exécutent Instruction 4

séquentiellement
Fin
 Exemple d’algorithme
2
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES LIMITES DU TOUT PROCÉDURAL


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Devant la complexité des applications, cette technique de


programmation présentait quelques inconvénients
 Cette méthode oblige le développeur à penser de manière algorithmique
 L’approche algorithmique est en général proche du langage de la machine
 Le développeur doit faire un effort supplémentaire pour structurer le
programme
 Finalement, le procédural est très éloigné de notre manière
de penser
 Le code est peu lisible
 Et difficile à modifier, à maintenir
 L’ajout de fonctionnalités dif ficile
 Réutilisation du code incertaine
 Attention au « Copier/Coller »
 Le travail d’équipe est délicat

3
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LE MONDE RÉEL ET LA PROGRAMMATION


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Finalement, il est peut-être plus simple de s’inspirer du


monde réel
 Le monde réel est composé d’objets, d’êtres vivants, de matière
 Pourquoi ne pas programmer de manière plus réaliste ?
 Les objets ont des propriétés
 Un chat à 4 pattes, un serpent aucune
 Les objets ont une utilité, une ou plusieurs fonctions
 Une voiture permet de se déplacer
 Un couteau peut couper
 Alors, plutôt que de focaliser sur les procédures, intéressons -
nous d’avantage aux données
 De cette analyse est née la programmation orientée objet

4
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

L’OBJET AU CŒUR DU SYSTÈME


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Qu’est-ce qu’un objet ?


 Un élément qui modélise toute entité, concrète ou abstraite, manipulée par le
logiciel
 Exemple : Une voiture avec 4 roues, un volant, un moteur, ….
 Un élément qui réagit à certains messages qu’on lui envoie de l’extérieur
 C ’est son comportement, ce qu’il sait faire
 Exemple : Avec cette voiture, je peux tourner, accélérer, freiner, …
 Un élément qui ne réagit pas toujours de la même manière
 Son comportement dépend de l’état dans lequel il se trouve
 Exemple : Essayez de démarrer sans essence !!?
 L’objet est l’élément central de la POO
 Ces objets doivent être :
 Modélisés
 Utilisés
 Détruits

5
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES 3 CARACTÉRISTIQUES DE L’OBJET


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Une identité unique


 Qui permet de le distinguer d’un autre
 Exemple : La plaque d’immatriculation pour 2 voitures de même modèle
 Un état interne
 Donné par des valeurs de variables internes appelées attributs ou membres
 Exemple : Un train roule à 150,7 km/h, transporte 200 personnes
 Ces attributs/membres sont typés et portent un nom
 Exemple : float vitesse; int nb_voyageurs;
 Un comportement
 Capacités d’actions données par des fonctions ou des sous programmes : Les
méthodes ou opérations
 Exemple : La méthode « freiner() » de l’objet « voiture »
 Ces méthodes définissent le comportement de l’objet face à des stimulations
extérieures
 Exemple : Le freinage doit être moins brutal par temps de pluie (ABS)

6
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

A QUOI RESSEMBLE UN OBJET ?


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Un objet c’est :
 Des données (Un état)
 Des algorithmes (Des méthodes)
Pour freiner, il suffit de faire
 Exemple tendre vitG et vitD vers 0
Freiner( )
Méthodes
Elles représentent le
savoir faire de l’objet
float vitG
Tourner( )

reculer()
float vitD Pour reculer, il faut modifier
sensG et sensD
bool 90sensG
Pour tourner, il faut que bool sensD
𝑣𝑖𝑡𝐺 ≠ 𝑣𝑖𝑡𝐷

Attributs
Ils représentent
l’état de l’objet
Pour avancer, il faut
avancer()
modifier vitG et vitD
7
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

QUELQUES REMARQUES
La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Dans l’exemple du robot précédent


 Comment peut-on empêcher le blocage des roues ?
 Empêcher que vitG=vitD=0 car freinage brutal
 Comment empêcher l’inversion brutale du sens de rotation des moteurs ?
 Eviter de casser la mécanique
 Comment éviter un virage trop serré qui remettrait en cause la stabilité de la
trajectoire ?
 Eviter un renversement
 Il faudrait empêcher la modification directe de l’état du robot
 Utiliser plutôt les méthodes dont les concepteurs auront prévu ces cas
d’utilisation extrêmes
 Des règles d’accès à l’état d’un objet sont indispensables
pour éviter les mauvaises utilisations
 Règles d’encapsulation
8
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES RÈGLES D’ENCAPSULATION


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Principe
 Les attributs de l’objet sont privés
 Inaccessibles directement depuis l’extérieur
 Les méthodes sont publiques et forme une interface de manipulation de
l’objet
Freiner( )

float vitG
Tourner( )

reculer()
float vitD
L’accès direct est
interdit car les
bool 90sensG
attributs sont privés bool sensD
L’utilisation des
méthodes publiques
permet de modifier
l’état de l’objet
avancer()
9
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES OBJETS COMMUNIQUENT


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Les objets vont être capables d’interagir et de communiquer


entre eux
 Par l’intermédiaire des méthodes publiques
 Ils vont s’envoyer des messages par l’intermédiaire des méthodes publiques
 Pour envoyer un message au robot :
 On appelle la méthode (exemple : tourner() )
 En spécifiant l’objet cible ( exemple : monRobot) Freiner( )
 En précisant d’éventuels paramètres
float vitG

Tourner( )

reculer()
float vitD
monRobot.tourner(12); bool 90sensG
bool sensD
Le robot tournera à gauche si le
paramètre est positif et à droite s’il est
négatif (C’est un exemple, on peut avancer()
faire autrement)

10
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES OBJETS COMMUNIQUENT (2)


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 L’appel de méthode est ef fectué par un autre objet


Objet monRobot
Objet unPilote

Freiner( )

monRobot.tourner(12);
float vitG

Tourner( )

reculer()
float vitD
90 bool 90sensG
bool sensD

avancer()

Le récepteur du message est


L’objet « unPilote » appelle la méthode
« monRobot ». L’objet « unPilote » est
« tourner » de l’objet « monRobot ».
l’envoyeur du message

11
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LES CLASSES ET LES OBJETS


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Avant de créer des objets, il faut définir un modèle


 Des objets pourront être crées à partir de ce modèle
 Ce modèle s’appelle une classe
 Les objets fabriqués à partir du modèle sont des instances
Code Mémoire Freiner( )
Objet robot1 est une
Classe Robot
float vitG instance de Robot

Tourner( )

reculer()
float vitD
Freiner( ) bool 90sensG
bool sensD

float vitG
Tourner( )

reculer()

float vitD avancer()


bool 90sensG Instanciation
bool sensD
Freiner( )
Objet robot2 est une
avancer() Tourner( )
float vitG
instance de Robot

reculer()
float vitD
bool 90sensG
bool sensD

La classe Robot représente un


modèle d’objet avancer()

12
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

CONSTITUTION D’UNE CLASSE (C++) 1/2


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 En langage C++
 La classe est définie dans un fichier d’entête : CRobot.h
class CRobot { Le nom de la classe

private :
Les attributs sont privés et ne sont pas
float vitG;
accessibles depuis l’extérieur
float vitD;
int sensG;
int sensD; Les méthodes sont publiques et
peuvent être appelées depuis l’extérieur
public :
void tourner(int dir);
void reculer(int vit);
void avancer(int vit);
void freiner(int force);
float getVitesseG(); Certaines méthodes ne servent qu’à
float getVitesseD(); accéder aux attributs. Ce sont les
accesseurs de données
}
13
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

CONSTITUTION D’UNE CLASSE (C ++) 2/2


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Ensuite, le fichier de définition de la classe : Crobot.cpp

class CRobot { Le nom de la classe

void CRobot::tourner(int dir) { La définition de la méthode :


Attention à l’opérateur ::
// Corps de la méthode
Le corps de la méthode
}

float Crobot::getVitesseG() { Cette méthode donne un


return vitG; accès en lecture seule à
} l’attribut « vitG ». Pas de
méthode setVitesse() pour
// Suite … éviter les mauvais cas
} La méthode renvoie l’attribut d’utilisation
demandé

14
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

CONSTITUTION D’UNE CLASSE (JAVA)


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 En langage Java, un seul fichier contient toute la classe :


 robot.java
public class Robot { Le nom de la classe

private float vitG;


private float vitD; La déclaration des attributs
private int sensG; de la classe
private int sensD;

public void tourner(int dir) { Prototype et corps de la


// Corps de la méthode méthode
}

public float getVitesseG() { Prototype et corps de la


return vitG; méthode accesseur de
} données
}

15
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

REPRÉSENTATION UML D’UNE CLASSE


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Pour représenter une classe, on utilise le langage de


modélisation UML (Unified Modeling Language) :

CRobot Le nom de la classe


-vitG : float
Les attributs de la classe
sont privés (présence du -) -vitD : float
-sensG : int
-sensD : int Méthode « tourner » ne renvoie rien
Les méthodes de la classe +tourner(entrée dir : int) : void et prend un paramètre « dir » de
sont publiques (présence type entier. Ce paramètre ne sera
du +)
+freiner(entrée force : int) : void
pas modifié dans le corps de la
+avancer(entrée vit : float) : void
méthode (Passage par valeur)
+reculer(entrée vit : float) : void
+getVitesseD() : float

Méthode
« getVitesseD() »
renvoie un flottant
16
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

EXEMPLE DE CONCEPTION OBJET 1/3


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Le jeu des balles rebondissantes :


 Objectif : Déplacer des balles dans un graphique
 Contrainte : Le graphique a une taille limitée
 Les balles doivent rebondir sur les parois
 Il faut raisonner « objet »
 La classe Ball :

Permet de déplacer la balle deplacer()


dans la zone de dessin
double x

dessiner()
x : Position abscisse double y
x : Position ordonnée Graphics
90 dessin

dx : Déplacement d’abscisse Color couleur


dy : Déplacement d’ordonnée double dx,dy Permet de dessiner la balle dans
Dessin : Objet Zone de dessin la zone de dessin
Couleur : Objet représentant la couleur

17
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

EXEMPLE DE CONCEPTION OBJET 2/3


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Une autre classe : La classe Panneau

Permet de démarrer
l’animation en déplaçant les
balles demarrer()

Permet d’ajouter une balle

ajouterBalle()
stopper()

Balle[] mesBalles dans l’animation


Graphics zoneDessin
90

mesBalles : C’est un tableau Prototype possible de la méthode ajouterBalle()


contenant toutes les balles public void ajouterBalle (Balle uneBalle)
zoneDessin : C’est la zone où
{ … }
dessiner les balles
Le paramètre de la méthode
est un objet (de type Balle)

18
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

EXEMPLE DE CONCEPTION OBJET 3/3


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Communication entre les objets


Instancié à partir de
la classe Balle
Instancié à partir de
la classe Panneau mesBalles[0]
deplacer()

monPanneau mesBalles[0].deplacer(); double x

dessiner()
double y

demarrer() mesBalles[0].dessiner(); Graphics


90 dessin

Color couleur
double dx,dy
ajouterBalle()
stopper()

Balle[] mesBalles
Graphics zoneDessin
90

mesBalles[1].deplacer();
mesBalles[1].dessiner();
mesBalles[1]
deplacer()

mesBalles[2].deplacer(); double x

dessiner()
double y
Graphics
90 dessin

mesBalles[2].dessiner(); Color couleur


double dx,dy

deplacer()

double x
dessiner()

double y
Graphics
90 dessin

Color couleur
double dx,dy

mesBalles[2]
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LA CRÉATION D’UN OBJET


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 La création d’un objet est appelé « instanciation »


 L’instanciation permet de réserver un espace mémoire
 Les attributs de l’objet crée sont stockés dans cet espace mémoire
 Comme toute variable les attributs doivent être initialisés
 Comment créer un objet ?
 En appelant une méthode spéciale : Le constructeur
 Rôle du constructeur :
 Initialiser les attributs de la classe
 Préparer le travail de l’objet
 Exemples :
 Initier une connexion réseau
 Ouvrir un fichier de travail
 Réserver de la mémoire, …

20
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LE CONSTRUCTEUR : EXEMPLE EN JAVA


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Définition de la public class Robot {


classe Java private float vitG;
private float vitD;
private int sensG;
private int sensD;

Constructeur de la
classe Robot ne public Robot() {
vitG = 0.0F; Le constructeur
renvoie rien (Même
vitD = 0.0F; initialise chaque
pas void)
sensD = 0; attribut
sensG = 0;
}

2ème constructeur public Robot(float vit1, float vit2) {


prenant des vitG = vit1;
paramètres vitD = vit2; Initialisation de vitG
sensD = 0; et vitD avec vit1 et
sensG = 0; vit2
}// Suite de la classe
} 21
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

LE CONSTRUCTEUR : EXEMPLE EN C++


La P.O.O Les objets Les classes Exemple de conception Constructeurs

Fichier de définition
de classe Fichier d’entête
class CRobot { class CRobot {
CRobot::CRobot() {
vitG=0.0; Définition du private :
constructeur
vitD=0.0; float vitG;
sensG=0; float vitD;
sensDG=0; int sensG; Déclaration 2ème
} int sensD; constructeur
2ème constructeur
Déclaration du
CRobot::CRobot(float vit1, public : constructeur
float vit2) { CRobot();
vitG=vit1; CRobot(float , float);
vitD=vit2; void tourner(int dir);
sensG=0; void reculer(int vit);
sensDG=0; void avancer(int vit);
} void freiner(int force);
// Suite … float getVitesseG();
} float getVitesseD();
} 22
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

CARACTÉRISTIQUES DU CONSTRUCTEUR
La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Le constructeur est une méthode qui a les caractéristiques


suivantes :
 Il porte le même nom que la classe
 Il ne renvoie rien
 Il ne contient pas d’instruction return
 Un constructeur peut prendre aussi des paramètres
 Comme une méthode
 La définition du constructeur n’est pas obligatoire
 Dans ce cas, un constructeur par défaut est automatiquement appliqué
 Cela signifie que, quoiqu’il arrive, un constructeur sera toujours appelé
 Explicitement
 Implicitement

23
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

ET MAINTENANT, COMMENT CRÉER UN OBJET ?


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 La création de se déroule en 2 temps :


 Création d’une référence à l’objet (Le nom de la variable objet)
 Appel d’un constructeur
 Cette création peut se faire dans le programme principal ou
depuis un autre objet
 Rappel : Un objet peut-être composé d’un ou plusieurs autres objets
 Les objets membres (composés) doivent être également initialisés
 Possibilité de créer plusieurs constructeurs
 Chaque constructeur aura des paramètres différents
 Permet au développeur de proposer plusieurs manières de créer un objet

24
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

EXEMPLE D’APPEL AU CONSTRUCTEUR


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 En C++
Création d’une
CRobot unRobot; nouvelle variable
CRobot unAutreRobot;
Instanciation du
unRobot = Robot(); nouvel objet
unAutreRobot = Robot(5.0, 7.0);

 En Java
 Utilisation de l’opérateur new obligatoire
 L’opérateur new n’a pas la même signification qu’en C++

CRobot unRobot;
CRobot unAutreRobot;
Instanciation du avec
l’opérateur new
unRobot = new Robot();
unAutreRobot = new Robot(12.4F, 5.3F);

25
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet

REPRÉSENTATION UML DU CONSTRUCTEUR


La P.O.O Les objets Les classes Exemple de conception Constructeurs

 Le constructeur est représenté comme une méthode normale


 Son nom est le même que la classe

Capteur
-temp : float
-humidite : float
1er Constructeur +Capteur()
+Capteur(entrée intervalle : int) 2ème constructeur
+mesurer()
+getTemperature() : float
+getHumidite() : float

Méthodes normales

26