Vous êtes sur la page 1sur 25

Année universitaire

2021/2022

2 AGE

Les Classes en C++


Introduction

Constatations :
 Le hardware progresse plus rapidement que le
Software.
 Le progrès en Software est insuffisant.
 En hardware : Conception de composants
réutilisables.
 En Software : ce n’est pas toujours le cas
 La conception de composants réutilisables est une
voie vers la création de meilleurs logiciels.

2
Notion d’objet
 Le monde réel est composé d’objets et d’entités qui évoluent d’une manière
autonome et qui interagissent entre eux :
Un animal, une voiture, une machine,…
 Idée : Réaliser des programmes qui modélisent (simulent) le monde réel : Les
composants d’un programme seront des entités/ des objets qui représentent les
objets du monde réel : Entité  objet
 La notion d’objet n’est pas nouvelle. Elle date de 1967
 1967 : SIMULA : un langage de programmation orienté vers les applications
de simulation des systèmes discrets fut le premier à avoir introduit la notion
de classe
 1976 : SMALTALK a implémenté les concepts d’encapsulation, d’agrégation
et d’héritage
 De nombreux langages OO ont vu le jour : EIFFEL, OBJECTIVE C, LOOPS
 Difficultés : créer une représentation abstraite sous la forme d’objets / entités
ayant une existence matérielle ( chien, voiture, …) ou bien virtuelle (sécurité
sociale, temps, ….)
3
Caractérisation d’un objet

Un objet est caractérisé par :

 Attributs : Ce sont les données qui indiquent l’état de


l’objet

 Méthodes : Ce sont les fonctions qui caractérisent son


comportement. Elles permettent de simuler :
 La réaction de l’objet aux sollicitations extérieures
 L’interaction de l’objet avec les autres objets

 Identité : Chaque objet doit avoir une identité qui


permet de le distinguer des autres objets.

4
Notion de classe
 Une classe décrit la structure d’un ensemble d’objet de même
nature. Plusieurs chiens seront décrits par une même classe
« chien ».
 Instance : Un objet est une instanciation d’une classe.
 Créer une classe est similaire à l’opération de définition d’un
nouveau type de données
 Créer un objet est similaire à la déclaration d’une variable
 Une classe sera composée de :
 Attributs
 Méthodes
Exemple: Pour décrire une classe voiture on sera amené à définir ses
attributs qui sont les composants de la voiture et des méthodes qui
sont le comportement de la voiture tels que « faire tourner le
moteur » 5
Exemple de classe

6
Concept d’encapsulation des données

Dans la programmation classique (procédurale) un programme est


composé de :
 Données
 Instructions
 les données ne sont pas protégées.
 Idée : en POO, chaque objet aura ses propres données à l’intérieur
protégées du monde extérieur. Personne ne pourra les regarder ou bien
les modifier sauf autorisation. Si un utilisateur veut consulter les données
de l’objet, il devra appeler les méthodes de l’objet.

 Masquage des données : L’utilisateur n’a pas à connaître la manière


dont les données sont stockées. Il ne peut pas les modifier ou bien les
consulter directement. Il doit appeler les méthodes de l’objet.

7
Exemple d’encapsulation

8
Niveau de visibilité (protection)

Une classe d’objet peut définir trois niveaux de


visibilité pour ses données ou bien pour ses
méthodes :

 Publique : l’accès est permis à tout le monde


 Privé : l’accès est interdit à tous les objets
extérieurs
 Protégé : l’accès n’est permis qu’aux héritiers

9
Concept d’héritage
Dans le monde réel, certains objets ont des choses en commun.
Exemple : Les voitures, les camions, les bus sont tous des
véhicules
 il est intéressant de définir une classe « véhicule » et de dire
ensuite qu’une voiture est avant tout un véhicule. Les fonctions et
les attributs de « véhicule » seront aussi fonctions et attributs de
« voiture ». Celle-ci pourra avoir des attributs et des fonctions
propres à elle.

On dira que « voiture » est héritière de « véhicule ».

La relation « hérite de » définit des relations de « père à fils »


entre les classes et donc une arborescence dite « arborescence
des classes ».

10
Exemple d’héritage

EST-UN ?

11
Polymorphisme

 Définition :
 Poly : plusieurs
 Morphisme : Forme

 Faculté d’une méthode à pouvoir s’appliquer à


des objets de classes différentes
 Capacité d’une classe à redéfinir une méthode
héritée à partir d’une classe mère : Surcharge.
 Avantages :
 Lisibilité du code
 Généricité du code

12
Exemple de polymorphisme

13
Entités modélisables par une classe

Une classe peut modéliser :


 Entités physiques :
avion, voiture, document, imprimante, …
 Rôles :
employé, employeur, pilote, joueur, enseignant,…
 Incidents / évènements :
Décision, décollage, crash, …
 Interactions :
Contrat de vente, contrat de mariage, divorce, …

14
Les méthodes d’analyse et de modélisation

Modéliser le monde réel sous la forme d’objets


abstraits n’est pas une tâche facile. Il faut :
 Analyser le monde réel
 Identifier les entités
 Déterminer leurs caractéristiques
 Identifier leurs comportements
 Identifier leurs interactions
 Identifier leurs relations
 Etc.
 il faut adopter et suivre une démarche
méthodique pour ne pas se perdre
15
Les méthodes d’analyse et de modélisation (2)
Cette méthode doit être indépendante du langage de programmation.

 Années 80 : Méthodes pour organiser la programmation


fonctionnelle (Merise), séparation des données et des traitements.

 Début des années 90 : Apparition de la programmation objet (il faut


définir une méthodologie adaptée), apparition de plus de 50
méthodes entre 1990 et 1995.

 1994 : Consensus sur 3 méthodes :


 la méthode OMT proposée par Rumbaugh
 la méthode BOOCH’93 proposée par Booch
 la méthode OOSE proposée par Jacobson

 Les trois méthodes ont unifié leurs efforts et ont convergé vers une
méthode unique connue sous le nom de :
UML : Unified Modeling Language (Langage de Modélisation Unifié)
16
Les méthodes d’analyse et de modélisation (3)

 1997 : Définition de la norme UML comme


standard de modélisation des systèmes
d’information objet par l’OMG (Object
Management Group)
 UML est employé dans l’ensemble des secteurs
du développement informatique :
 Systèmes d’information
 Télécommunication, défense
 Transport, aéronautique, aérospatial
 Domaines scientifiques
Mais pas seulement : on peut modéliser des
comportements mécaniques, humain, etc.
17
Diagrammes d’UML 2

Diagrammes structurels / statiques


(UML Structure)

 Diagramme de classes (Class diagram)


 Diagramme d’objets (Object diagram)
 Diagramme de composants (Component diagram)
 Diagramme de déploiement (Deployment diagram)
 Diagramme de paquetages (Package diagram)
 Diagramme de structures composites (Composite
structure diagram)
18
Diagrammes d’UML 2 (2)

Diagrammes comportementaux / dynamiques


(UML Behavior)

 Diagramme de cas d’utilisation (Use Case diagram)


 Diagramme d’activités (Activity diagram)
 Diagramme d’états-transitions (State Machine diagram)
 Diagramme d’interaction (Interaction diagram)
 Diagramme de séquence (Sequence diagram)
 Diagramme de communication (Communication diagram)
 Diagramme global d’interaction (Interaction Overview diagram)
 Diagramme de temps (Timing diagram)

19
Exercice

Le dessin ci-dessous représente des figures (triangles,


carrés ou cercles) emboîtées. Les triangles
contiennent une ou plusieurs figures. Les carrés ne
contiennent rien. Les cercles contiennent exactement
une figure. Les figures possèdent des « côtés ». On
dira que les cercles ont un seul côté, les triangles trois
côtés et les carrés quatre côtés.

Modéliser un diagramme de classes correspondant à


la figure.
20
Correction

21
Définition d’une classe

La classe décrit le modèle structurel d’un objet. Elle est


composée de :
 Ensemble des attributs (ou champs ou données membres)
décrivant sa structure
 Ensemble des opérations (ou méthodes ou fonctions
membres) qui lui sont applicables.

Une classe en C++ est une structure qui contient :


 Des fonctions membres
 Des données membres

Les mots réservés public et private délimitent les sections


visibles par l’application.

22
Définition d’une classe (2)
Exemple

class Vehicule
{ private : // membres privées

char matriculation[8]; // données membres privées


float poids;
char* Type;

public : // fonctions membres publiques

void init(char [ ], float, char *);


void affiche();

}; // n’oubliez pas ce ; après l’accolade


23
Droits d’accès
L’encapsulation consiste à masquer l’accès à certains attributs et
méthodes d’une classe. Elle est réalisée à l’aide des mots clés :
 private: les membres privés ne sont accessibles que par les
fonctions membres de la classe. La partie privée est aussi appelée
réalisation.
 protected: les membres protégés sont comme les membres privés.
Mais ils sont aussi accessibles par les fonctions membres des classes
dérivées (voir l’héritage).
 public: les membres publics sont accessibles par tous. La partie
publique est appelée interface.

Les mots réservés private, protected et public peuvent figurer plusieurs


fois dans la déclaration de la classe. Le droit d’accès ne change pas tant
qu’un nouveau droit n’est pas spécifié.
24
Recommandations de style

Pour écrire des programmes claires et faciles à relire et à


comprendre, il vaut mieux adopter quelques
conventions de style. On pourrait par exemple choisir de
mettre :

 La première lettre du nom de la classe en


majuscule
 La liste des membres publics en premier
 Les noms des méthodes en minuscules

25

Vous aimerez peut-être aussi