Académique Documents
Professionnel Documents
Culture Documents
Anthony AÏT
2 Objet 2
3 Les attributs 2
4 Les méthodes 2
5 Classes 3
7 Encapsulation et interface 3
8 Visibilité de classe/d’instance 4
13 Héritage 7
13.1 Synonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
13.2 Redéfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
14 Polymorphisme 8
15 Visibilité et héritage 8
17 Classe abstraite 9
1
Algorithmique
Les fonctions sont des méthodes et les données sont attachées à des objets, nommées attributs.
La grande différence entre un langage objet et un langage orienté objet, dans un langage orienté
objet il existe encore des types de bases (entier,...) alors que dans le langage objet ce sont des
objets.
2 Objet
Les objets fonctionnent en classe d’équivalence.
Un objet :
• A un cycle de vie : un objet nait (réservation mémoire), vit (le temps d’utilisation) et
meurt (libération de la mémoire utilisée)
3 Les attributs
Les attributs sont les données contenues dans l’objet
Synonymes : Donnée membre/Propriété/Champ
L’attribut appartient à la classe ou l’objet, contrairement à une variable.
4 Les méthodes
Les méthodes sont les fonctions et procédures de l’objet
Synonymes : Fonction membre/Service/Sélecteur
Une méthode et une fonction sont deux choses différents : une méthode est inhérente à l’objet
et n’existe pas sans, tandis qu’une fonction si.
4 LES MÉTHODES 2
Algorithmique
5 Classes
Les objets possédant les mêmes méthodes et mêmes attributs sont décrits par une classe.
Une classe est une abstraction d’un objet réel, elle décrit une catégorie d’objets ayant des com-
portements communs.
L’abstraction est le fait de passer du monde réel à une classe. On va extraire les caractéris-
tiques utiles lors de la modélisation. On ne modélise pas de la même façon une Formule 1 et
une voiture tuning.
À partir de la classe, on peut créer plusieurs objets ayant les caractéristiques contenues dans
la classe. On parle d’une instanciation. Un objet est donc aussi appelé une instance.
Les attributs d’un objet contiennent des valeurs spécifiques.
Exemple d’une classe :
Identifiant Voiture
Attributs marque/couleur
Méthodes demarrer()/arreter()
Serveur
Liste : Utilisateur
- Liste : Mot de passe
+ demande connexion
- accepter connexion
Si accepter connexion était public, on aurait juste à la demander pour se connecter. De même
pour les mots de passe.
On met un + quand c’est public et un - quand c’est privé
7 Encapsulation et interface
On dit des membres privés qu’ils sont encapsulés. Souvent, les attributs sont privés, on parle
alors d’encapsulation.
7 ENCAPSULATION ET INTERFACE 3
Algorithmique
Le programmeur qui utilise un objet n’a pas besoin de connaître la représentation physique
des données utilisées et peut raisonner en terme d’abstraction, l’objet étant définir par son
comportement et non par sa structure. On réalise ainsi une abstraction des données.
L’ensemble des membres publics d’un objet constitue son interface, c’est-à-dire la partie est
visibles depuis l’extérieur. L’objet est manipulé par ses méthodes d’interface pour modifier ou
accéder à la valeur d’un attribut. On parle d’envoi de messages, un message est une requête
envoyé à un objet pour lui demander l’exécution d’une certaine action, c’est-à-dire appliqué
une de ses méthodes.
Il faut éviter de rendre des attributs publics, on créera plutôt des accesseurs (méthodes d’accès),
qui sont des méthodes publiques dont l’intérêt est de donner l’attribut de l’objet.
L’encapsulation permet :
8 Visibilité de classe/d’instance
De classe : Un objet a accès à tous les membres de toutes les instances de sa classe
D’instance : Les membres privés d’un objet sont visibles par lui seul
• Son identifiant
• Sa classe d’appartenance
Exemple :
VOITURE
//Attributs
tourner (angle a, entier v)
vitesse get.vitesse()
tourner (entier v, angle a)
tourner()
On peut écrire plusieurs méthodes avec le même nom, cela s’appelle de la surdéfinition
Quand on crée un objet, il faut pouvoir donner des valeurs à ses attributs.
• Constructeur par défaut : Certains langages possèdent des constructeurs par défaut, ils
n’attendent aucun paramètre et initialise l’objet avec des valeurs par défauts présentes
dans le code source de la classe. Il convient de s’en méfier car souvent ces constructeurs
par défaut ne font rien.
Parfois il faut libérer la mémoire lorsque l’on a fini d’utiliser l’objet. Le destructeur est appelé
lors de la mort d’un objet, et permet d’expliciter les actions que l’objet va réaliser avant de
disparaître (fermer fichier ouvert par exemple). Dans certains langages, le destructeur est appelé
automatiquement ou est appelé depuis un finaliseur.
Les langages orientés objet définissent des membres de classe, ce sont des données et fonctions
partagées par toutes les instances d’une même classe. En d’autres termes, la modification d’une
variable de classe par un objet implique une modification de cette variable pour toutes les ins-
tances de la classe.
Une méthode de classe doit avoir un comportement identique pour tous les objets de la classe,
elle ne peut pas manipuler de variables d’instance. Les membres de classe sont appelés membres
statiques, elles sont partagées par toutes les instances de la classe.
Par exemple, une personne utilise une voiture, il y a relation d’association entre la personne et
la voiture.
12.2 Agrégation/Composition
Il y a composition ou agrégation quand un objet en contient un autre. L’objet contenu est un
composant, c’est-à-dire un attribut de l’objet qui le contient. L’objet contenant est un objet
dit composite.
Dans une relation d’agrégation, la destruction du composite n’induit pas la destruction des
composants. Contrairement à la composition ou les composants sont détruits si le composite
est détruit.
Dans une composition, le constructeur du composite instancie les composantes, mais pas d’une
agrégation où les composantes ont une instance propore
13 Héritage
L’héritage est une relation entre classes. L’héritage permet de factoriser des connaissances (par
spécialisation ou extension) pour créer de nouveaux objets. Les classes qui héritent sont appe-
lées classe-héritière.
L’héritage est le partage des services (méthode) et données entre classes ayant une relation
hiérarchique. L’héritage conserve les données et méthodes.
Préciser une classe signifie qu’une classe héritière va devenir un cas particulier de sa classe mère.
Étendre une classe signifie que qu’une classe héritière va gagner des propriétés par rapport à
sa classe mère.
13.1 Synonymes
Classe mère = Classe de base = Superclasse
13.2 Redéfinition
On appelle redéfinition les membres de la classe mère réécrits dans une classe fille. Ils masquent
alors ceux de la classe de base. On conserve toutefois la possibilité d’utiliser les membres de la
classe de base.
Lorsqu’un membre est utilisé, la version dans la classe fille est prioritaire à l’ancienne version
présente dans la classe mère.
La redéfinition de méthode est très souvent utilisée, elle permet de spécialiser ou d’optimiser
les méthodes de la classe mère dans la classe fille.
On ne redéfinit jamais les attributs, en effet un attribut redéfinit ne serait pas connu de sa
classe mère mais il est probable que cet attribut soit utilisé par des méthodes de la classe mère
13 HÉRITAGE 7
Algorithmique
avant redéfinition. Deux mondes parallèles cohabitent alors, les méthodes de la classe mère uti-
lisent les attributs non redéfinis tandis que les méthodes de la classe fille utilisent les méthodes
redéfinis.
14 Polymorphisme
Deux types :
• Polymorphisme d’héritage
• Polymorphisme de fonction
Affectation polymorphique :
Un objet dérivé peut être considéré comme un cas particuliers d’instance de sa classe-mère. On
peut donc affecter à un objet déclaré dans une classe-mère tout objet d’une de ses classes-filles,
les types sont compatibles. À chaque fois qu’une instance de la classe-mère est attendue, une
instance de n’importe laquelle de ses classes héritières sera acceptée. On parle de polymor-
phisme d’héritage.
Par conséquent, un objet au cours de sa vie n’est pas connu par son type car il peut stocker
une donnée de sa classe ou de l’une de ses filles.
Partout où une instance de la classe-mère est attendue, on peut passer une instance de la classe-
fille.
On dit qu’une fonction est polymorphe quand elle s’applique à des arguments qui peuvent
prendre plusieurs types (exemple la surdéfinition).
15 Visibilité et héritage
Principe d’encapsulation des données conduit à créer des classes dont tous les attributs sont
privés. Les données d’une instance sont donc inaccessibles aux instances des autres classes. En
particulier, les données d’une classe sont inaccessibles à ses sous-classes.
• Héritage multiple : Une classe C hérite de plusieurs classes. Certains langages ne le per-
mettent pas. Certains attributs vont créer une ambiguïté car ils auront le même nom
dans plusieurs classes mères. Pour les méthodes, il suffit de les redéfinir dans la classe
fille. Pour les attributs, on ne peut rien y faire.
C hérite de la classe B et implémente l’interface B. Une interface ne contient que des prototypes
de méthodes. Comme cela ne contient que des méthodes et que je dois les redéfinir car il faut
affecter un contenu à chaque méthode, cela permet de contourner le problème de l’héritage
multiple.
17 Classe abstraite
Une classe est définie comme abstraite si elle ne peut pas être instanciée.
17 CLASSE ABSTRAITE 9