Programmation Orient´ee Objet
Ch 1: Introduction `a la POO
Dr. Mouna Chebbah
Dr. In`es Thabet
Dr. Mouna Chebbah
L2 BC
Ecole Sup´erieur d’´Economie Num´erique
Semestre 1, 2020/2021
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
1/21
Pr´eambule
§ Public:
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Ce cours est destin´e aux ´etudiants de 2`eme ann´ee Licence en
Business Computing
§ Objectif du cours:
§ Introduction aux paradigmes de la POO: les notions de base
illustr´es avec le langage Java
§ Comprendre les origines et l’int´erˆet de la POO
§ Maˆıtriser les concepts orient´es objet : classes, objets,
encapsulation, h´eritage, polymorphisme, classe abstraite et les
interfaces
§ Savoir utiliser cette nouvelle approche : d´efinitions, syntaxe et
usage avec Java pour mod´eliser des probl`emes
§ Traiter la gestion des exceptions afin de permettre une
production du code efficace
§ Objectif final: ˆetre capable de d´evelopper une application Java
en suivant une approche objet
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
2/21
Plan
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Chapitre 1: Introduction `a la programmation orient´ee objet
§ Chapitre 2: Le langage Java
§ Chapitre 3: Les bases de la programmation orient´ee objet
§ Chapitre 4: L’h´eritage et le polymorphisme
§ Chapitre 5: Classe abstraite et Interface
§ Chapitre 6: La gestion des exceptions
§ Chapitre 7: Les collections
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
3/21
Programmation proc´edurale
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ D´efinir des variables (ensemble de donn´ees)
§ Diviser l’application en petit bloc de code
(proc´edures/fonctions)
§ Ex´ecuter un programme se r´eduit `a appeler ces
proc´edures/fonctions suivant l’ordre des instructions en leur
fournissant les donn´ees n´ecessaires `a l’accomplissement de
leurs tˆaches
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
4/21
La programmation proc´edurale
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Figure: Structure d’un programme en C (langage proc´edural)
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
5/21
Exemple de code en C
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Donn´ees
const int taille maximale = 100;
float vecteur[taille maximale ];
int haut = 0;
Fonctions
bool Pile vide()
bool Pile pleine()
void Initialiser pile() {haut = 0;}
void Inserer pile(float valeur)
{return (haut == 0); }
{return (haut == taille maximale); }
{vecteur[haut] = valeur;
Advertisement
haut += 1; }
float Acces pile()
void Enlever pile()
{return vecteur[haut - 1];}
{haut = haut-1; vecteur[haut]=0;}
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
6/21
Exemple de code en C
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Utilisation
void main()
{
Initialiser pile();
Inserer pile(2.3f);
Inserer pile(3.4f);
Inserer pile(6.3f);
while (!Pile vide()) { Enlever pile();}
}
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
7/21
Limites de la programmation proc´edurale
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Au fur et `a mesure que les programmes ´ecrits avec une approche
proc´edurale grossissent, ils deviennent fragiles et mettent en
danger les donn´ees:
§ Pas de cadre bien d´efini pour organiser les fonctions
§ La modification d’une fonction entraine la modification d’une
autre
§ La port´ee d’une modification est trop difficile `a g´erer
§ Redondance du code
§ Propagation des erreurs et d´eboggage difficile
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
8/21
De la programmation proc´edurale `a la POO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Programmation proc´edurale
§ Programmes: ´el´ements actifs et importants comportant les
op´erations s´equentielles n´ecessaires pour r´esoudre un probl`eme
§ Donn´ees: ´el´ements passifs qui traversent l’arborescence de la
programmation proc´edurale en tant que flot d’informations
§ Programmation orient´ee objet
§ Fond´ee sur une seule cat´egorie d’´el´ements: “les objets” qui
communiquent entre eux grˆace `a l’envoi de messages (des
op´erateurs appel´es m´ethodes)
§ Par rapport `a un langage imp´eratif typ´e, un objet est
l’´equivalent d’une variable (simple ou structur´ee) et la classe
dont il est l’instance correspond au type de la variable
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
9/21
Programmation OO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Pourquoi la POO?
§ D´eveloppement plus facile (et souvent plus rapide)
§ Fonctionnement plus stable
§ Maintenance plus simple
§ Augmentation de la qualit´e des logiciels (moins de bugs)
§ Une approche diff´erente pour rapprocher le d´eveloppement et
notre mani`ere de concevoir le monde
§ La base pour des langage comme C++, c#, Java, Pyhthon,
PHP, . . .
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
10/21
De la programmation proc´edurale `a la POO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Objet: ´el´ement tir´e du
monde r´eel
§ Avec:
§ Des fronti`eres pr´ecises,
§ Une identit´e (ou
r´ef´erence),
§ Un ensemble d’attributs
Advertisement
(propri´et´es) d´ecrivant son
´etat,
§ Un ensemble de m´ethodes
(op´erations) d´efinissant
son comportement.
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
11/21
De la programmation proc´edurale `a la POO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Classe: description d’un ensemble d’objets communs
caract´eris´es par des propri´et´es: attributs et m´ethodes
communes `a des objets.
=ą Objet : instance de classe
Figure: Repr´esentation graphique
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
12/21
Exemple
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
On veut faire un programme de gestion du personnel d’une
entreprise informatique. On y trouve des ing´enieurs, des
techniciens, des directeurs et des ouvriers d’entretiens (concierge,
femme de m´enage, . . . ).
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
13/21
Exemple
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
14/21
Programmation proc´edurale
vs Programmation OO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Programme
Prog Proc´edurale
programme
Le
principal est divis´e
en petites parties
selon les fonctions
Les donn´ees Chaque
tion
des
diff´erentes
fonc-
contient
donn´ees
Acc`es
Aucun
sp´ecificateur
d’acc`es
utilis´e
n’est
petit
fonction
Prog OO
programme
Le
principal est divis´e
objet
en
en
du
probl`eme
donn´ees
et
Les
fonctions de
les
in-
chaque objet
dividuel
agissent
comme une seule
unit´e
sp´ecificateurs
Advertisement
Les
d’acc`es public, pri-
vate, et protected
sont utilis´es
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
15/21
Programmation proc´edurale
vs Programmation OO
La communication
Contrˆole des donn´ees
Importance
Prog Proc´edurale
Les fonctions com-
muniquent
avec
d’autres fonctions
en conservant les
r`egles habituelles
La
des
plupart
fonctions utilisent
donn´ees
des
globales
Les
fonctions ou
les algorithmes ont
plus d’importance
que
les donn´ees
dans le programme
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
Prog OO
li´e
Un objet est
`a l’autre en util-
isant
le message
qui passe
Chaque
contrˆole
propres donn´ees
objet
ses
donn´ees
Les
prennent
plus
d’importance que
les
fonctions du
programme
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
16/21
Exemple d’application
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ On d´esire ´ecrire un programme qui permet de dire si `a un
´etudiant a r´eussi son ann´ee.
§ Les ´etudiants de 1ere et 2eme ann´ee sont d´ecrits par :
§ num, nom, adresse, moyenneS1 et moyenneS2
§ La moyenne calcul´ee: pmoyenneS1 ` moyenneS2q{2
§ Les ´etudiants de 3`eme ann´ee sont d´ecrits par :
§ num, nom, adresse, moyenneS1, noteP F E
§ La moyenne est calcul´ee : pmoyenneS1 ˆ 2 ` noteP F Eq{3
§ Le programme demande `a saisir les informations des 30
´etudiants et affiche s’ils ont r´eussi ou pas
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
17/21
Programmation proc´edurale
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Comment d´efinir les donn´ees d’un ´etudiants?
struct etudiant{
int num;
char nom[30];
char adresse[30];
int classe;
Advertisement
float noteS1;
float noteS2;
float notePFE;
};
§ Comment stocker les donn´ees de tous les ´etudiants?
D´efinir un tableau de 10 ´etudiants avec des indices
correspondant aux rang des ´etudiants
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
18/21
Programmation proc´edurale
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Comment peut-on d´ecouper le programme pour le simplifier?
D´efinir une fonction qui calcule la moyenne d’un ´etudiant en
1ere ou 2eme ann´ee et une fonction pour les 3`eme ann´ee
§ Programme principal?
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
19/21
Programme principal
#includeăstdio.hą
#includeăconio.hą
struct etudiant{
int num;
char nom[30];
char adresse[30];
int classe;
float noteS1;
float noteS2;
float notePFE;
};
void rem(struct etudiant
*p)
{ int i;
for(i=0 ; iă10 ; i++)
{ printf(”etudiant no : %d
” , i+1);
Chapitre 1 - Introduction, M. Chebbah
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
{ printf(”etudiant no : %d ” ,
cet
le nom de
l’adresse de cet
i+1);
printf(”entrez
etudiant”);
scanf(”%s”,&(*(p+i)).nom);
printf(”entrez
etudiant”);
scanf(”%s”,&(*(p+i)).adresse);
printf(”entrez la classe de cet
etudiant”);
scanf(”%d”,&(*(p+i)).classe);
if((*(p+i)).classe
1)||((*(p+i)).classe == 2))
{printf(”entrez la moyenne de S1
de cet etudiant”);
scanf(”%s”,&(*(p+i)).noteS1);
}
==
Semestre 1, 2020
20/21
Programmation OO
Programmation proc´edurale
Programmation orient´ee objet
Exemple d’application
§ Classe Etudiant:
§ Attributs: num, nom, adresse, noteS1
§ M´ethodes: ajouter(), calculerMoyenne(), afficher()
§ Classe EtudiantL1L2:
§ Attributs: num, nom, adresse, noteS1, noteS2
§ M´ethodes: ajouter(), calculerMoyenne(), afficher()
§ Classe EtudiantL3:
§ Attributs: num, nom, adresse, noteS1, noteP F E
§ M´ethodes: ajouter(), calculerMoyenne(), afficher()
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
21/21