Vous êtes sur la page 1sur 22

Chapitre 1:

Introduction au POO
Mme Jihen Bokri
Introduction
Il existe deux grands types de programmation:
 La programmation procédurale ou structurée qui est basée sur le
concept d’appel mutuel entre les procédures et les fonctions. Ces
derniers sont décomposés en sous traitements jusqu'à obtenir des
fonctions basiques.
 Parmi les langages de programmation procédurale: C, Pascal, Delphi...
 Exemple : Calculprix(Produit)
 La Programmation Orientée Objet (POO) qui est basée sur le
concept objet. En effet, on manipule uniquement des objets auxquels
sont associés des méthodes spécifiques.
 Exemple : Disposant d'un objet Produit, tout le code touchant à l'objet Produit
se trouve regroupé. Ainsi, on effectue Produit.Calculprix().
Notion d’objet et de classe
Notion d’objet (1):
 La programmation orientée objet consiste à modéliser
informatiquement des entités du monde réel.
 Ces entités informatiques sont appelées objets.
 Chaque objet regroupe l’ensemble des caractéristiques
et de comportements de l’entité correspondante.
 Ces entités peuvent avoir une existence matérielle
(Produit, voiture, employé, ...) ou bien virtuelle
(sécurité sociale, temps, ...).
Notion d’objet et de classe
Notion d’objet (2):
Chaque objet est caractérisé par:
 L'identité: qui lui permet de se distinguer des autres objets
indépendamment de son état.
 Les attributs: qui sont des données caractérisant l'objet. Ils sont
représentés par des variables stockant des informations d'état de l'objet.
 Les méthodes: qui caractérisent son comportement. Elles représentent
l'ensemble des actions que l'objet peut réaliser. Ces opérations permettent
de faire réagir l'objet aux sollicitations extérieures ou d'agir sur les autres
objets. Ces méthodes sont liées aux attributs car leurs actions peuvent
dépendre des valeurs des attributs, ou bien les modifier.
Notion d’objet et de classe
Notion d’objet (3): Exemples
 Voiture:
 Attributs: Couleur, vitesse
 Méthodes: calcul-vitesse(), calcul-consommation()

 Employé:
 Attributs: Nom, prénom, matricule, grade
 Méthodes: calcul-salaire()
Notion d’objet et de classe
Notion de classe (1):
 On appelle classe la structure d'un objet.
 La classe définit l’ensemble des caractéristiques et de comportements
qui correspondent à un type d’objet donné.

 On dit qu'un objet est une instanciation d'une classe.


 En programmation orientée objet, on peut parler indifféremment
d'objet ou d'instance.
 Exemple : Si on définit la classe arbre, palmier et olivier seront des
instanciations de cette classe.
Notion d’objet et de classe
Notion de classe (2):
 Une classe est composée de deux parties :
 Les attributs : Il s'agit des données représentant l'état de l'objet.
 Les méthodes : Il s'agit des opérations applicables aux objets. Ces méthodes ne
peuvent être exécutées qu’en précisant l’objet sur lequel elles vont être
appliquées.

 Exemple : Si on prend l’exemple de la classe Point, les attributs de


cette classe peuvent être abscisse et ordonnée (du fait que chaque point
est caractérisé par une abscisse et une ordonnée). Les méthodes de cette
classe peuvent être Afficher() et Déplacer() (ce sont des opérations
applicables à chaque point).
Le concept d’encapsulation
 L'encapsulation est un mécanisme qui consiste à regrouper au sein de la
même classe les données (attributs) et les moyens de les gérer
(méthodes).

 Elle permet aussi de gérer l’accès aux données.

 En effet, l'encapsulation permet de définir des niveaux de visibilité des


éléments de la classe.
 Ces niveaux de visibilité définissent les droits d'accès aux données selon
que l'on y accède par une méthode de la classe elle-même, d'une classe
héritière, ou bien d'une classe quelconque.
Le concept d’encapsulation

 Il existe trois niveaux de visibilité:


 Publique: les fonctions de toutes les classes peuvent accéder aux données
ou aux méthodes d'une classe définie avec le niveau de visibilité public. Il
s'agit du plus bas niveau de protection des données.

 Protégé: l'accès aux données est réservé aux fonctions des classes
héritières, c'est-à-dire par les fonctions membres de la classe ainsi que des
classes dérivées.

 Privé: l'accès aux données est limité aux méthodes de la classe elle-même.
Il s'agit du niveau de protection des données le plus élevé.
Le concept d’encapsulation

 Remarque: La gestion d’accès aux données nous


permet de garantir une utilisation conforme à nos
attentes. Par exemple, si on interdit l’accès à un
attribut donné et on offre une fonction définie pour y
accéder, on peut contrôler l’intervalle des valeurs de
l’attribut à travers cette fonction.
La notion d’héritage

 Définition de l’héritage (1):


 L'héritage est un principe propre à la programmation orientée objet.

 Il permet de créer une nouvelle classe à partir d'une classe déjà existante.

 Le nom "Héritage" indique le fait que la classe fille (la classe nouvellement
créée) contient les attributs et les méthodes de sa classe mère (la classe dont elle
dérive).

 les attributs et les méthodes de la classe mère (appelée aussi superclasse) sont
hérités par la classe fille (appelée aussi classe dérivée). Toutefois, de nouveaux
attributs et méthodes peuvent être ajoutés.
La notion d’héritage

 Définition de l’héritage (2):


 Ainsi, on crée une hiérarchie de classes de plus en plus spécialisées.
Cela a comme avantage majeur de ne pas avoir à repartir de zéro
lorsqu’on veut spécialiser une classe existante.

 Exemples:
 Les classes Employé et Etudiant héritent de la classe Personne

 Les classes Dermatologue et Pédiatre dérivent de la classe Médecin


La notion d’héritage

 Hiérarchie des classes (1):


 Il est possible de représenter sous forme de hiérarchie de classes,
appelée aussi arborescence de classes, la relation de parenté qui existe
entre les différentes classes.

 Les classes dérivées (classes filles) deviennent de plus en plus


spécialisées.

 Remarque : on peut généralement exprimer la relation qui lie une classe


fille à sa mère par la phrase "est un" (de l'anglais "is a").
La notion d’héritage

 Hiérarchie des classes (2):


La notion d’héritage

 Héritage multiple (1):


Certains langages orientés objet permettent de faire de l'héritage multiple

 Ce qui signifie qu'ils offrent la possibilité de faire hériter une classe de


deux superclasses.

 Ainsi, cette technique permet de regrouper au sein d'une seule et même


classe les attributs et méthodes de plusieurs classes.
La notion d’héritage

 Héritage multiple (2):

Remarque : C++ permet l’héritage multiple mais Java ne le permet pas.


Le polymorphisme

Le nom de polymorphisme vient du grec et signifie qui peut


prendre plusieurs formes. Cette caractéristique est un des
concepts essentiels de la programmation orientée objet.

On distingue généralement deux types de polymorphisme :


 La surdéfinition ou surcharge (en anglais overloading)

 La redéfinition (en anglais overriding)


Le polymorphisme

La surdéfinition:
 La surdéfinition (ou surcharge) consiste à définir plusieurs fonctions de
même nom mais possédant des paramètres différents (en nombre et/ou
en type).
 Le choix de la bonne méthode à adopter se fait automatiquement par le
compilateur en fonction du type de donnée passée en paramètre.
 On peut par exemple définir plusieurs méthodes homonymes addition()
effectuant une somme de valeurs :
 La méthode int addition(int, int) qui retourne la somme de deux entiers
 La méthode float addition(float, float) qui retourne la somme de deux flottants
 La méthode char addition(char, char) qui retourne la somme de deux caractères
Le polymorphisme

La redéfinition:
 La redéfinition consiste à implémenter de nouveau, dans une classe
fille, la même méthode qui a été définie dans sa classe mère.
 La nouvelle méthode doit avoir exactement le même nom et la même
signature (paramètres) que celle définie dans la classe mère.
 Exemple : Si on définit la procédure affichage() dans la classe mère
Point, l’affichage va être différent dans la classe fille Point3D du fait
qu’on a une nouvelle valeur à afficher. On redéfinit donc la procédure
affichage() dans la classe fille Point3D en ajoutant l’affichage qui
manque. Ainsi, on peut faire appel à la méthode affichage() sans se
soucier si l’objet est un point ou point 3D.
Avantages de la technologie Objet
 Facilité de la gestion des projets : facilité d'organisation, possibilité
de réutilisation, possibilité d'héritage, facilité de correction.
 Facilité de la conception : La programmation orientée objet décrit des
entités existantes dans le monde réel. En effet, dans un modèle à objets,
toute entité du monde réel est un objet et tout objet représente une
entité du monde réel.
 Des programmes facilement lisibles : les programmes orientées objet
sont bien organisés et généralement de taille minimale de façon qu’il
soient facilement lisibles avec un minimum d’expérience.
 La sécurité : Du fait que les informations concernant une entité donnée
sont centralisées, il est facile de sécuriser le programme en interdisant
ou autorisant l'accès à ces objets aux autres parties du programme.
Exercice
 Soit l’exemple suivant d’héritage de classes :

 Soit fome1 une instance de Forme et rectangle1 une instance de Rectangle.


 1- Peux-t-on faire rectangle1.affichage() ? Pourquoi ?
 2- Si on fait rectangle1.CalculSurface(), est-ce la méthode de la classe Forme ou de la
classe Rectangle qui est appelée ?
 3- Peux-t-on faire forme1.CalculVolume() ? Pourquoi ?
Correction:
 1-Oui car rectangle1 est un objet de type Rectangle qui
dérive de Forme.
 2-C'est la méthode de Rectangle car par défaut, la
méthode exécutée est celle de la classe courante.
 3-Non car la classe Forme ne possède pas de méthode
CalculVolume().