Initiation à la Programmation
Orientée Objet
Niveau: L1
Généralités
• Le POO permet de concevoir une application sous la forme d’un ensemble
de briques logicielles appelées des objets.
• Chaque objet joue un rôle précis et peut communiquer avec les autres
objets.
• La POO facilite la conception de programmes par réutilisation de
composants existants.
• Elle constitue le standard actuel(on parle de paradigme) en matière de
développement de logiciels.
Notion d'objet
• Modélisation orientée objet: on cherche àreprésenter le domaine étudié
sous la forme d'objets.
• Objet: une entité qui représente (modélise) un élément du domaine étudié:
un employé, une voiture, un compte bancaire, un nombre complexe, une
facture, etc.
• Objet = informations + actions:
✓des informations(ou données) qui le caractérisent (son état).
✓des actions (ou traitements) qu'on peut exercer sur lui (son
comportement).
Notion d'objet: Exemple
• On souhaite modéliser des comptes bancaires pour un logiciel de gestion.
• On commence par réfléchir à ce qui caractérise un compte bancaire, puis
on classe ces éléments en deux catégories:
✓Les informations liées à un compte bancaire.
✓Les actions réalisables sur un compte bancaire.
Notion de classe
• Chaque objet "compte bancaire" de
l’exemple précédent sera construit sur le
même modèle: ce modèle est appelée une
classe.
• Une classe est donc un modèle d’objet.
• C'est un nouveau type créé par le
programmeur et qui sert de modèle pour
tous les objets de cette classe.
• Une classe spécifie les informations et les
actions qu'auront en commun tous les
objets qui en sont issus.
• Un objet est une variable particulière dont
le type est une classe: on dit qu’un objet
est une instance d’une classe.
Concepts essentiels: Constructeur
• Une méthode spécifique dont le rôle est de construire un objet, le plus
souvent en initialisant ses attributs.
• Le nom du constructeur doit être identique au nom de la classe, et sa
définition ne comporte pas le type de valeur de retour.
• Utilisation d’un constructeur se fait au moment de l'instanciation de l'objet
• Une classe peut disposer de plusieurs constructeurs initialisant différents
attributs.
Concepts essentiels: Encapsulation
• Il consiste à restreindre l'accès à certains éléments d’une classe (le plus
souvent ses attributs).
• L'objectif de l'encapsulation est de ne laisser accessible que le strict
nécessaire pour que la classe soit utilisable.
• CONSEIL: sauf cas particulier, on donne le niveau de visibilité private à tous
les attributs d’une classe afin d'assurer leur encapsulation par défaut.
• Pour pouvoir accéder aux données (private) de la classe, on ajoute des
accesseurs à la classe
Concepts essentiels: Accesseurs
• Un accesseur est une méthode le plus souvent publique qui permet
d'accéder à un attribut privé:
✓Un accesseur en lecture (getter) permet de lire la valeur d’un attribut.
✓Un accesseur en écriture (mutateur ou setter) permet de modifier la
valeur d’un attribut.
• Dans la plupart des langages, les accesseurs sont des méthodes de la
forme getXXX et setXXX où XXX le nom d’un attribut.
Programmer avec des objets
(Cas du langage C++)
Niveau: L2
Ecriture d’une classe
Ecriture d’une classe: fichier comptebancaire.h
Ecriture d’une classe: [Link]
Utilisation de la classe: instanciation ou creation d’un objet
Résultats
Relation d'héritage
• Etude de cas:
✓Supposons maintenant que nous voulons gérer un nouveau type de
compte: le compte épargne. Comme un compte classique, un compte
épargne possède un titulaire, un solde et une devise. Sa spécificité est qu’il
permet d'appliquer des intérêts à l'argent déposé sur le compte.
✓Au lieu de concevoir une classe CompteEpargne totalement distincte de la
classe CompteBancaire, il est préférable de définir un compte épargne par
héritage de la définition d’un compte bancaire.
• L'héritage est l'un des mécanismes fondamentaux de la POO.
• Il permet de créer des classes à partir de classes existantes.
Relation d'héritage
Relation d'héritage
Relation d'héritage
• Le tableau ci-dessous rassemble les trois niveaux de visibilité utilisables.
To be continued …..