Introduction a la programmation
orientée objet
B.KADRI
1
la programmation classique
• La programmation classique telle que étudiée au travers des
langages C, Pascal… définie un programme comme étant un
ensemble de données sur lesquelles agissent des procédures et des
fonctions.
• Les données constituent la partie passive du programme. Les
procédures et les fonctions constituent la partie active.
• Programmer dans ce cas revenait à :
– définir un certain nombre de variables (structures, tableaux…)
– écrire des procédures pour les manipuler sans associer explicitement
les unes aux autres.
• Exécuter un programme se réduit alors à appeler ces procédures
dans un ordre décrit par le séquençage des instructions et en leur
fournissant les données nécessaires à l’accomplissement de leurs
tâches.
2
la programmation classique
Dans cette approche données et procédure sont traitées indépendamment les unes des
autres sans tenir compte des relations étroites qui les unissent.
3
la programmation classique
• Plusieurs problèmes existent:
– Débogage des programmes.
– Réutilisation des programmes.
– Mis a jour et évolution des logiciel
– Extensibilité des logiciel
– Le travail de groupe pour le développement des
logiciels
– Extensible, Flexible.
– Modulaire.
– Lisible.
– Pas de relation directe avec le monde réel.
4
la programmation classique
• Tous ça a donné lieu a l’encapsulation des données et des
opérations qui agissent sur ces données dans une même
entité appelée objet
• La POO consiste a regrouper le code et les données sur
lesquelles il agisse dans une même entité nommée objet.
• Cette entité encapsule a la fois le comportement et l’état
de cet objet.
• Le problème posé a la programmation va être vu comme un
ensemble d’objet en liaison directe avec le monde réel et
en interaction entre eux pour former le logiciel.
• La résolution d’un problème revient a le faire décomposer
en objets et définir les lien entre ces objets « les
associations »
La programmation orienté objet
• Les objets au sens informatique peuvent représenter :
– des objets réels : voiture, conducteur, chaise, porte, chien, ...,
– Des notions immatérielles : une algorithme, un point de l’espace, une ligne de texte,...
• Les objets au sein d’un programme interagissent par envois de
message.
• Ces message définissent le comportement globale du logiciel.
6
Programmation par
objets
• Un programme = une société d'entités « objets » Qui collaborent
pour résoudre le problème final en s'envoyant des messages.
• une entité = un objet qui prend en compte sa propre gestion
(définit les données et le fonctions qui agissent sur ces données «
état + comportement »)
objet
Objet= données + opérations sur ces données
(méthodes)
=
entité du domaine du problème
=
État+comportement+identité
=
« un objet est quelque chose de réel ou d'abstrait, de
tangible ou d'intangible, à propos duquel on
emmagasine des données et les méthodes
(procédures, fonctions) permettant de les manipuler
»
La programmation orienté objet
• Dans l’approche orienté objet un logiciel sera essentiellement vu
comme un ensemble d’objets auxquels l’utilisateur envoie des
messages et qui s’échangent pendent le fonctionnement.
• Ces objets seront toujours pour l’utilisateur des boites noires et qui
contiendront des variables locales, inconnues de l’environnement,
et qui ne s’y intéressera d’ailleurs pas. Le seul moyen d’accéder à
ces objets sera l’envoie des messages qu’ils sont capables de
comprendre.
• La spécification d’un système dans l’approche OO va s’axer
principalement sur la détermination des objets à manipuler.
• Une fois cette étape réalisé le concepteur n’aura plus qu’à réaliser
les fonctions de haut niveau qui s’appuient sur les objets et les
familles d’objets définis.
9
La programmation orienté objet
• La POO se base sur les notions clés suivantes :
– Abstraction
– Encapsulation
– Classe et objets
– Message
– Héritage
– Polymorphisme
10
L’encapsulation
• L’encapsulation est le faite qu’un objet renferme ses propres
attributs et ses méthodes. Les détails de l’implémentation d’un
objet sont masqués aux autres objets du système à objets.
• L’encapsulation consiste à ne montrer de l’objet que ce qui est
nécessaire à son utilisation.
• On précise trois modes d’accès aux attributs d’un objet.
– Le mode public avec lequel les attributs seront accessibles
directement par l’objet lui-même ou par d’autres objets. Il s’agit du
niveau le plus bas de protection.
– Le mode private avec lequel les attributs de l’objet seront
inaccessibles à partir d’autres objets : seules les méthodes de l’objet
pourront y accéder. Il s’agit du niveau le plus fort de protection.
– Le mode protected : cette technique de protection est étroitement
associée à la notion d’héritage
11
Abstraction
• C’est le faite de se concentrer sur les
caractéristiques importantes d’un objet selon
le point de vue de l’observateur.
• Exemple : vehicule
• L’abstraction est un principe qui consiste à
ignorer certains aspects d’un sujets qui ne
sont pas importants pour le problème dans le
but de se concentrer sur ceux qui le sont.
12
Abstraction
Classes, objets, instances
• Une classe est un ensemble d’objets qui ont en commun :
– les mêmes méthodes
– les mêmes types d’attributs
Classe = attributs + méthodes + instanciations
• Une instance d’une classe est un objet particulier d’une classe qui peut activer les
méthodes de la classe et qui a des valeurs particulières de ses attributs.
• On définit l’objet comme l’instance d’une classe. La classe représente pour l’objet
ce que représente le type pour la variable.
• Un objet est caractérisé par :
– Son identité (OID) : valeur unique et invariante qui caractérise l’objet
– Son comportement : qui est défini à travers les méthodes applicables à cet objet et qui
caractérisent sa façon d’agir et de réagir dans son environnement.
– Son état : qui constitue l’ensemble des valeurs des attributs de cet objet.
– Une classe est un type abstrait qui encapsulent données et traitement. C’est une sorte de
moule qui permet ensuite de créer autant d’instances qu’on veut. Ces instances seront des
objets de la classe auxquelles on pourra effectivement envoyer des messages qui activeront
les méthodes correspondantes.
14
Classes, objets, instances
• Attributs
– Les attributs d’un objet sont l’ensemble des informations se
présentant sous forme de variable et permettant de représenter
l’état de l’objet.
• Méthodes
– Une méthode est une fonction ou procédure liée à un objet qui
est déclenchée à la réception d’un message particulier : la
méthode déclenchée correspond strictement au message reçu.
– La liste des méthodes définies au sein d’un objet constitue
l’interface de l’objet pour l’utilisateur : ce sont les messages que
l’objet peut comprendre si on les lui envoie et dont la réception
déclenche les méthodes correspondantes.
Classes, objets, instances
16
Instanciation
• Lorsque des objets ont les mêmes attributs et
comportements : ils sont regroupés dans une famille
appelée : Classe.
• Les objets appartenant à celle-ci sont les instances
de cette classe.
• L’instanciation est la création d’un objet d’une classe.
• Deux instances d’une même classe peuvent avoir des
attributs avec des valeurs différentes et mais
partagent les mêmes méthodes.
Messages
• Le problème posé a la programmation va être vu comme un ensemble
d’objet en interaction entre eux par envoie de messages. La manipulation
des objets passe par des envois de messages.
• Lorsqu’un objet reçoit un message :
Soit le message correspond à un traitement défini dans la classe de l’objet auquel
cas la méthode correspondante est exécutée. L’objet répond ainsi au message.
• Un message équivaut à un appel d’une méthode.
– Un objet gère lui même son comportement.
– Ce qui lui permet soit de traiter des messages en exécutant les méthodes
correspondantes soit de rejeter des messages en signalant des erreurs.
– Un objet est parfaitement identifié. Comme s’il possédait un attribut (inaccessible
directement) qui identifie la classe à laquelle il appartient.
Association
• L’association exprime une connexion sémantique bidirectionnel entre
deux classes
• Une association est une abstraction des liens qui existe entre objets réel,
de la même façon qu’une classe est une abstraction d’une ensemble
d’objets.
• Les cardinalité d’association exprime le nombre minimum et maximum
d’objet qui participe a la fois dans une même association.
Agrégation
• Agrégation: est une relation qui permet de décrire un objet
composite en terme d'objets qui le constituent qui traduit
cette fois les relations « Est composé de ... » ou « Possède … »
ou encore contenant et le contenu.
Héritage
• La notion d’héritage est une relation entre
différentes classes permettant de définir une
nouvelle classe en se basant sur les classes
existantes. On parle d’héritage simple
lorsqu’une classe fille ne possède qu’une
classe mère.
• On parle d’héritage multiple lorsqu’une classe
fille possède plusieurs classes mères.
21
Héritage
22
Héritage multiple
L'héritage multiple est une extension au modèle d'héritage simple où l'on
autorise une classe à posséder plusieurs classes mères afin de modéliser une
généralisation multiple.
Polymorphisme
– C’est un mécanisme qui permet à une sous classe de
redéfinir une méthode dont elle a hérité tout en
gardant la même signature de la méthode héritée.
– Ainsi on peut avoir une méthode avec la même tête
(même signature) et des corps différents (codes
différents) : polymorphisme.
– Un même message peut ainsi déclencher des
traitements différents selon l’objet auquel il fait appel.
Polymorphisme
25