Classes et objets
Types de données abstraits, programmation orientée objet,
classes, objets,
Évolution de la programmation
Programmation séquentielle :
Les instructions sont exécutées DONNÉES
de façon linéaire.
Les données sont globales
et aucune réutilisation du
code n’est réalisée.
Programme Programme Programme
Programmation procédurale :
Il s’agit de découper un programme DONNÉES
en une série de fonctions lesquelles
ont pour but de réaliser un traitement
particulier.
On procède à un découpage du
traitement mais les données restent
globales. 2
Programmation orientée objet :
Il s’agit de regrouper l’ensemble DONNÉES DONNÉES
...
des données et les traitements
qui s’appliquent à ces données.
... ...
On procède à un découpage
naturel des données et du traitement des données.
Le concept de classe permet d’établir cette relation données – traitement. Il n’est
pas essentiel pour appliquer les principes de la programmation orientée objet mais
facilite grandement la tâche du programmeur.
Exemple : Application chargée de la paye des employés d’une entreprise.
La programmation orientée objet permet une modélisation en lien direct avec le
monde réel.
Cela nous amène à créer minimalement les 3 classes suivantes :
Employe : toutes les données qui caractérisent un employé et les méthodes
qui manipulent ces données,
Corps_de_metier : l’ensemble des « employés » de l’entreprise et des
méthodes qui se rattachent au corps de métier.
Entreprise : les caractéristiques de l’entreprise, un lien vers le corps de
3
métier et les méthodes qui se rattachent à l’entreprise.
Programmation orientée objets
Programmation orientée objets
Buts: - améliorer la réutilisation des outils existants
- favoriser la spécialisation de ces mêmes outils.
- s’éloigner de la machine et se rapprocher du problème à résoudre.
- développer une approche mieux adaptée à la résolution de problèmes.
- Nouvelle façon de penser la décomposition de problèmes et l’élaboration
de solutions.
Le concept de classe permet ypes de données abstraits
Défn.: Type de donnée défini par un programmeur et manipulé comme un type
de donnée de base du langage (int, long, float, …).
Un type de donnée abstrait peut être implanté à l’aide de la notion de classe.
Chaque instance d’une classe est un objet de la classe ou une variable de ce type
de donnée.
Peu ou pas de variables globales : permet une meilleure protection des
données.
4
Concepts de la programmation orientée objets
L’approche objet s’appuie sur 3 techniques fondamentales:
l’encapsulation l’héritage le polymorphisme
5
L’ENCAPSULATION
EXEMPLE :
Mon chat miaule, marche et mange :
Nous connaissons les manifestations extérieures du miaulement, mais la
façon dont le son est produit nous est masqué.
Le chat devient alors une abstraction dont on ne montre seulement que quelques
comportements.
Une interface représente cette abstraction.
L’interface énonce les services offerts et les détails de fonctionnement sont cachés.
L’emphase est mise sur la compréhension des éléments importants, sans se soucier
de l’implantation.
6
L ’ENCAPSULATION
Permet de réunir au sein d’une même entité appelée classe, des données membres
(variables ou attributs) et des traitements (fonctions membres ou comportements).
Les objets de ces classes ont la propriété de masquer l’information.
Un système de protection permet de contrôler l’accès aux données et traitements de
la classe.
On peut cacher le fonctionnement interne d’une classe et éviter que les objets
de cette classe soient utilisés de façon non conforme.
Vu de l’extérieur, l’interface d’un objet (aussi appelé protocole) constitue la liste
de tous les services (i.e. les méthodes) auxquels les autres objets ont accès.
On ne peut modifier l’état d’un objet directement, on doit passer par l’interface.
7
L ’ENCAPSULATION
Catégories d’opérations dans l’interface d’un objet
Constructeurs : créer et initialiser un nouvel objet.
Destructeurs : libérer les ressources et détruire l’objet.
Accès : accède à de l’information mais n’altère pas l’état de l’objet.
Assignation : altère l’état d’un objet.
Opérateur de comparaison : comparer des objets entre eux.
Itérateur : permet de parcourir une collection d’objets dans un ordre donné.
Copie et clonage : copie à partir d’un autre objet ou clonage de l’objet lui-même.
Entrée / sortie.
8
L’HÉRITAGE
EXEMPLE :
Plusieurs comportements d’un fournisseur de bois de chauffage sont connus, non
pas parce que je sais qu’il est fournisseur de bois de chauffage, mais aussi parce
qu’il est un commerçant.
Je m’attend à ce qu’il me demande de l’argent pour ses services et qu’il me donne
un reçu en échange.
Ces comportements sont aussi vrais pour l’épicier, le coiffeur ou le préposé au club
vidéo.
Les comportements d’un commerçant sont aussi ceux de l’épicier, du coiffeur, …
En organisant nos connaissances ainsi, cela permet une compréhension rapide du
problème. 9
L’HÉRITAGE
Objets physiques
Animal
Plante
Mammifère Reptile Poisson
Chien Humain Rex
(Un boa)
Fleurs
Commerçant Artiste Dentiste
Fleuriste Garagiste Peintre Philo
(Un poisson rouge)
Hubert Gaston Jean-Guy Picasso Jean Fleurs pour Béatrice
10
L’HÉRITAGE
Permet de réutiliser les classes existantes
On peut définir une nouvelle classe à partir d’une autre.
La classe dérivée pourra bénéficier
- des attributs (variables)
- des comportements (fonctions)
de la classe de base dont elle hérite.
Permet de spécialiser une classe de base en renfermant d’autres éléments dans les
classes dérivées. imprimante
Imprimante à matrice de points Imprimante au laser
Héritage des propriétés
11
Hiérarchie de classes
Une classe peut hériter d’une classe qui est elle-même une sous-classe et ainsi de
suite.
La structure arborescente qui en résulte est appelée hiérarchie de classes.
FIGURE
POLYGONE ELLIPSE
TRIANGLE RECTANGLE CERCLE
CARRÉ
12
LE POLYMORPHISME
EXEMPLE :
Les chiens, les serpents et les poissons partagent tous un comportement commun
hérité de la classe des animaux : ils ont la capacité de se mouvoir.
Tous le font, mais chacun à sa manière : - le chien marche
- le serpent rampe
- le poisson nage.
Si on donne l’ordre de se mouvoir, chaque animal va pouvoir répondre à cet ordre,
à sa manière propre.
S’applique aux fonctions membres des classes.
Permet à 2 objets de classes différentes de réagir différemment au même appel de
méthode. 13