MODULE : POO
Enseignant : Mohamed Kharrat Année universitaire 2016/2017
1
Séance 5
C++ : classes
- Introduction aux Langages Orientés Objets
- Qu’est-ce qu’un objet ?
- Propriétés d'un objet
- Notion d’héritage et de polymorphisme
- Les classes en C++
- Objectif? • Exemples d'objets • une fenêtre ; • un bouton ; • Une voiture • ... • Beaucoup de choses peuvent être considérées comme des objets. • Concrètement, c'est quoi ? Une variable ? Une fonction ?
- Avantages :
- Programmes plus faciles à maintenir
- Programmation plus claire : les fonctions sont rattachées à un type de données
- Modularité accrue -> possibilité de réutiliser le code
- Un objet est une entité informatique comprenant :
- L'accès aux données et méthodes peut être réglementé :
Publicité
.
Vision interne Partie privée
Partie publique Vision externe
Vision interne
Vision externe
Objet : exemples (notation UML)
DeuxRoues m_tailleRoues m_nbVitesses m_couleur m_poids Accélérer() Freiner() ChangerVitesse() GetCouleur() GetPoids()
Nom de la classe
Données membres ou attributs
Fonctions membres ou méthodes
CompteBancaire m_numéro m_solde m_propriétaire Créditer() Débiter() Fermer() Numéro() Solde() Propriétaire()
Vision interne
Vision externe
Propriétés d’un objet
- Un objet possède un état :
- Un objet est décrit par une classe :
- Un objet possède une identité :
- L’héritage permet de définir une hiérarchie de classes :
- La classe de base est une classe générique.
- Les classes dérivées sont de plus en plus spécialisées
- Supposons que nous déclarions les quatre classes suivantes : Voiture, Moteur, Route et Véhicule.
- Quel genre de relation y a-t-il entre la classe Voiture et les trois autres classes ?
- Par convention, on crée un fichier .cpp et un .h ayant le nom de la classe en minuscule.
Publicité
ellipse.h ellipse.cpp main.cpp
class Ellipse {protected :
float m_cX, m_cY; float m_a, m_b;
e.deplace(50, 0); public :float s = e.surface();
void deplace(float dx, float dy);
e.zoom(1.5);
void zoom(float z);
m_b *= z; float surface(); }};
float Ellipse :: surface()
return 0; }
{
return 3.14 * m_a * m_b / 4.; }
Constructeurs de classe
- Le constructeur est une fonction membre qui sert à initialiser les données membres de l’objet • Systématiquement appelé quand un objet est instancié. • N’a pas de type de retour • Porte le nom de l’objet
- Une même classe peut avoir plusieurs constructeurs
- Constructeurs particuliers : • constructeur par défaut • Ne contient aucun argument • Automatiquement généré si aucun constructeur n’est défini • A définir explicitement dans le cas contraire • constructeur de copie • Contient comme argument un objet du même type • Sert à créer des clones d’objets • Automatiquement généré par le compilateur (copie membre à membre) mais pas toujours satisfaisant
- Fonction membre systématiquement appelée juste avant la destruction d’un objet
- Porte le nom de la classe et est précédé de ~
- Pas de type de retour
- Pas d’arguments
- Un seul par classe
- Permet de libérer les ressourcesellipse.h ellipse.cpp prog.cpp