Cours Poo2 1
Cours Poo2 1
Cours Poo2 1
LA PROGRAMMATION G.VALET
Nov 2010
ORIENTÉE OBJET Ve rs i o n 1 . 0
La programmation Programme
procédurale
Début
Une suite d’instructions
s’exécutant les unes après les Instruction 1
autres Sous programme
programme en procédures
Appel sous
programme
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
3
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
4
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
5
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
6
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
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
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
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
Freiner( )
monRobot.tourner(12);
float vitG
Tourner( )
reculer()
float vitD
90 bool 90sensG
bool sensD
avancer()
11
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
Tourner( )
reculer()
float vitD
Freiner( ) bool 90sensG
bool sensD
float vitG
Tourner( )
reculer()
reculer()
float vitD
bool 90sensG
bool sensD
12
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
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
14
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
15
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
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
dessiner()
x : Position abscisse double y
x : Position ordonnée Graphics
90 dessin
17
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
Permet de démarrer
l’animation en déplaçant les
balles demarrer()
ajouterBalle()
stopper()
18
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
dessiner()
double y
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
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
20
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
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;
}
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
23
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
24
Lycée Section technicien supérieur
en Informatique et réseaux IRIS
Diderot
La Programmation orientée objet
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
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