Programmation Orientée Objet
Ch 1: Introduction à la POO
Dr. Mouna Chebbah
Dr. Inès Thabet
Dr. Mouna Chebbah
L2 BC
Ecole Supérieur d’Économie Numérique
Semestre 1, 2020/2021
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
1/21
Préambule
§ Public:
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Ce cours est destiné aux étudiants de 2ème année Licence en
Business Computing
§ Objectif du cours:
§ Introduction aux paradigmes de la POO: les notions de base
illustrés avec le langage Java
§ Comprendre les origines et l’intérêt de la POO
§ Maˆıtriser les concepts orientés objet : classes, objets,
encapsulation, héritage, polymorphisme, classe abstraite et les
interfaces
§ Savoir utiliser cette nouvelle approche : définitions, syntaxe et
usage avec Java pour modéliser des problèmes
§ Traiter la gestion des exceptions afin de permettre une
production du code efficace
§ Objectif final: être capable de développer une application Java
en suivant une approche objet
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
2/21
Plan
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Chapitre 1: Introduction à la programmation orientée objet
§ Chapitre 2: Le langage Java
§ Chapitre 3: Les bases de la programmation orientée objet
§ Chapitre 4: L’héritage 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édurale
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Définir des variables (ensemble de données)
§ Diviser l’application en petit bloc de code
(procédures/fonctions)
§ Exécuter un programme se réduit à appeler ces
procédures/fonctions suivant l’ordre des instructions en leur
fournissant les données nécessaires à l’accomplissement de
leurs tâches
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
4/21
La programmation procédurale
Programmation procédurale
Programmation orientée objet
Exemple d’application
Figure: Structure d’un programme en C (langage procédural)
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
5/21
Exemple de code en C
Programmation procédurale
Programmation orientée objet
Exemple d’application
Données
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;
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édurale
Programmation orientée 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();}
}
Publicité
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
7/21
Limites de la programmation procédurale
Programmation procédurale
Programmation orientée objet
Exemple d’application
Au fur et à mesure que les programmes écrits avec une approche
procédurale grossissent, ils deviennent fragiles et mettent en
danger les données:
§ Pas de cadre bien défini pour organiser les fonctions
§ La modification d’une fonction entraine la modification d’une
autre
§ La portée d’une modification est trop difficile à gérer
§ Redondance du code
§ Propagation des erreurs et déboggage difficile
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
8/21
De la programmation procédurale à la POO
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Programmation procédurale
§ Programmes: éléments actifs et importants comportant les
opérations séquentielles nécessaires pour résoudre un problème
§ Données: éléments passifs qui traversent l’arborescence de la
programmation procédurale en tant que flot d’informations
§ Programmation orientée objet
§ Fondée sur une seule catégorie d’éléments: “les objets” qui
communiquent entre eux grâce à l’envoi de messages (des
opérateurs appelés méthodes)
§ Par rapport à un langage impératif typé, un objet est
l’équivalent d’une variable (simple ou structurée) 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édurale
Programmation orientée objet
Exemple d’application
§ Pourquoi la POO?
§ Développement plus facile (et souvent plus rapide)
§ Fonctionnement plus stable
§ Maintenance plus simple
§ Augmentation de la qualité des logiciels (moins de bugs)
§ Une approche différente pour rapprocher le développement et
notre manière 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édurale à la POO
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Objet: élément tiré du
monde réel
§ Avec:
§ Des frontières précises,
§ Une identité (ou
référence),
§ Un ensemble d’attributs
(propriétés) décrivant son
état,
§ Un ensemble de méthodes
(opérations) définissant
son comportement.
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
11/21
De la programmation procédurale à la POO
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Classe: description d’un ensemble d’objets communs
caractérisés par des propriétés: attributs et méthodes
communes à des objets.
=ą Objet : instance de classe
Figure: Représentation graphique
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
12/21
Exemple
Programmation procédurale
Programmation orientée objet
Exemple d’application
On veut faire un programme de gestion du personnel d’une
entreprise informatique. On y trouve des ingénieurs, des
techniciens, des directeurs et des ouvriers d’entretiens (concierge,
femme de ménage, . . . ).
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
13/21
Exemple
Programmation procédurale
Programmation orientée objet
Exemple d’application
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
14/21
Programmation procédurale
vs Programmation OO
Programmation procédurale
Programmation orientée objet
Publicité
Exemple d’application
Programme
Prog Procédurale
programme
Le
principal est divisé
en petites parties
selon les fonctions
Les données Chaque
tion
des
différentes
fonc-
contient
données
Accès
Aucun
spécificateur
d’accès
utilisé
n’est
petit
fonction
Prog OO
programme
Le
principal est divisé
objet
en
en
du
problème
données
et
Les
fonctions de
les
in-
chaque objet
dividuel
agissent
comme une seule
unité
spécificateurs
Les
d’accès public, pri-
vate, et protected
sont utilisés
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
15/21
Programmation procédurale
vs Programmation OO
La communication
Contrôle des données
Importance
Prog Procédurale
Les fonctions com-
muniquent
avec
d’autres fonctions
en conservant les
règles habituelles
La
des
plupart
fonctions utilisent
données
des
globales
Les
fonctions ou
les algorithmes ont
plus d’importance
que
les données
dans le programme
Programmation procédurale
Programmation orientée objet
Exemple d’application
Prog OO
lié
Un objet est
à l’autre en util-
isant
le message
qui passe
Chaque
contrôle
propres données
objet
ses
données
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édurale
Programmation orientée objet
Exemple d’application
Publicité
§ On désire écrire un programme qui permet de dire si à un
étudiant a réussi son année.
§ Les étudiants de 1ere et 2eme année sont décrits par :
§ num, nom, adresse, moyenneS1 et moyenneS2
§ La moyenne calculée: pmoyenneS1 ` moyenneS2q{2
§ Les étudiants de 3ème année sont décrits par :
§ num, nom, adresse, moyenneS1, noteP F E
§ La moyenne est calculée : pmoyenneS1 ˆ 2 ` noteP F Eq{3
§ Le programme demande à saisir les informations des 30
étudiants et affiche s’ils ont réussi ou pas
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
17/21
Programmation procédurale
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Comment définir les données d’un étudiants?
struct etudiant{
int num;
char nom[30];
char adresse[30];
int classe;
float noteS1;
float noteS2;
float notePFE;
};
§ Comment stocker les données de tous les étudiants?
Définir un tableau de 10 étudiants avec des indices
correspondant aux rang des étudiants
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
18/21
Programmation procédurale
Programmation procédurale
Programmation orientée objet
Exemple d’application
§ Comment peut-on découper le programme pour le simplifier?
Définir une fonction qui calcule la moyenne d’un étudiant en
1ere ou 2eme année et une fonction pour les 3ème année
§ 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édurale
Programmation orientée 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édurale
Programmation orientée objet
Exemple d’application
§ Classe Etudiant:
§ Attributs: num, nom, adresse, noteS1
§ Méthodes: ajouter(), calculerMoyenne(), afficher()
§ Classe EtudiantL1L2:
§ Attributs: num, nom, adresse, noteS1, noteS2
§ Méthodes: ajouter(), calculerMoyenne(), afficher()
§ Classe EtudiantL3:
§ Attributs: num, nom, adresse, noteS1, noteP F E
§ Méthodes: ajouter(), calculerMoyenne(), afficher()
Chapitre 1 - Introduction, M. Chebbah
Semestre 1, 2020
21/21