You are on page 1of 35

Gnie Logiciel avanc

Master2 CPI

Chapitre 1

Rappel sur la programmation


orient objet
Constats

Il y a beaucoup de manires crire un programme qui


effectue une tche spcifie.
La manire de programmation dpende du langage
utilis.
Le langage utilis dpende de la manire de
programmation.
Paradigmes de programmation

programmation procdurale : P.P.


(Pascal, C, etc.)
programmation oriente objet : P.O.O. (C++,
Java, Delphi)
etc.

Rappel sur la programmation orient objet 3


Programmation procdurale (rappel de C)

Le programme est compos des fonctions


Les donnes (variables) sont cres lintrieure
des fonction ou bien passes comme paramtres
Il y a un programme principal (main)

Rappel sur la programmation orient objet 4


Un programme en C

Rappel sur la programmation orient objet 5


Limitations P.P
Il ny a pas de mthode ou de cadre pour bien
organiser les fonctions.
Les modifications dune fonction entranent
dautres modifications dans autre fonctions,
etc. la porte dune modification est trop
grand et difficile grer.
Redondance dans le code (la mme chose est
cod plusieurs fois)
Propagation des erreurs dboggage difficile

Rappel sur la programmation orient objet 6


Paradigme orient objet Comment peut on y arriver?
Tout est objet ! : chaque objet encapsule des donnes et des mthodes

agissant sur ces donnes.

L'encapsulation ralise une abstraction des donnes : vu de l'extrieur de

l'objet, les dtails d'implmentation sont caches.

Le concept de classe gnralise la notion de type : tous les objets d'une

certaine classe sont des instances de cette classe.

Des classes peuvent hriter d'autres classes (classe mre - classes filles).

La notion d'hritage permet d'tablir une hirarchie entre les classes.

Avec l'hritage, il devient possible de retenir des mthodes au sein des

classes lles. On parle de polymorphisme.


7
Rappel sur la programmation orient objet
Un programme orient objet
Objet message
Objet
donnes
donnes
code

ge
code

ss a
me
Objet

me
donnes

ss
ge

age
code
sa
es
m

Objet Objet
donnes message donnes

code code

Rappel sur la programmation orient objet 8


Procdure VS Objet
Le paradigme de la programmation orient objet est que on
privilge la donne avant laction
Contrairement au paradigme de la programmation
procdurale, qui dcompose un programme en un semble
de procdures (fonction)action puis penser au donnes d
ces actions
Donc la dfrence est dans le privilge du code par rapport
aux donnes
En objet on pense dabord au donne puis opration a
effectuer sur ces donnes

Rappel sur la programmation orient objet 9


Qu'est-ce qu'un objet ?
C'est un concept servant a reprsenter,
modliser toute entit
dcrite selon ses proprits et son
comportement.
Ce comportement s'observe via les interactions
que le monde extrieur peut avoir avec cette
entit.
Les interactions sont sollicites a travers les
oprations de l'objet.
Rappel sur la programmation orient objet 10
Dfinition de classe
Une classe est constitue dattributs et de mthodes.
Une mthode est un sous programme que lon peut
dmarrer partir dune autre mthode dune classe,
dune classe ou dun objet selon le modificateur
daccs et si elle est static ou non.
Les mthodes contenues dans une classes se divisent en
plusieurs catgories
Constructeurs
Accesseurs
Mutateurs
Destructeur
Les autres mthodes (oprateurs, comportements, )
Rappel sur la programmation orient objet 11
Instanciation d'une classe Voiture

Rappel sur la programmation orient objet 12


Apparence des 2 instances de Voiture

Rappel sur la programmation orient objet 13


Encapsulation

Rappel sur la programmation orient objet 14


Niveaux de visibilit
Public
Toutes les sous-classes et les objets peuvent accder
directement aux membres public
Private
Seuls les membres de la classe peuvent accder aux
membres private, pas mme les membres des sous-classes.
Protected
Seuls les membres de la classe et des sous-classes peuvent
accder aux membres protected
Accs par dfaut: lorsquaucun de ces
spcificateurs nest mentionn.
Rappel sur la programmation orient objet 15
Visibilit
- : prive (private)
# : protege (protected)
+ : publique (public)
~ : non-publique (default)

Rappel sur la programmation orient objet 16


Constructeurs
Mthodes qui permettent de crer une
instance(objet) et dinitialiser les attributs de cet
instance au moment de son instanciation (new).
Il y a rservation despace mmoire ce moment
seulement
Porte le mme nom que la classe.

Na aucun type de retour dans sa dfinition mais retourne une


instance de la classe.

Si aucun constructeur nest crit, il en existe un par dfaut qui ne fait


rien et les attributs sont initialiss avec leur valeur par dfaut (selon le
type).
Rappel sur la programmation orient objet 17
Exemple de constructeur
Cration dobjet
Accesseurs

Mthodes qui permettent dobtenir le contenu


des attributs privs dune classe.
Souvent commence par get

Si une classe na que des accesseurs, on dit quelle est


immuable (non modifiable).
Na habituellement pas de paramtres et sert
retourner le contenu dun attribut priv.

Exemple : public String getNom() {


return nom;
}
Rappel sur la programmation orient objet 20
Mutateurs
Mthodes qui permettent de modifier le
contenu des attributs privs dune classe.
Souvent commence par set (setNom, setAge, setPrenom,).

Si une classe a des mutateurs, on dit quelle est mutable (modifiable).


Ne retourne habituellement rien et a un paramtre qui remplacera le
contenu dun attribut

Exemple : public void setNom(String nom) {


this.nom = nom;
}

Rappel sur la programmation orient objet 21


Mot cl static

La valeur dun membre public dfinie comme tant


static existe pour tous les objets dune mme classe.
Un attribut static nest pas initialis lors de
linstanciation dun objet mais une seule fois au
dbut dun programme.
Sil y a une modification faite par un objet sur un
attribut static, tous les autres objets de cette classe
en verront les effets.
On peut les voir comme des membres appartenant
toute la classe et non un objet en particulier.
Rappel sur la programmation orient objet 22
Hritage
L'hritage est une notion fondamentale dans les
langages de programmation par Objets.
Il permet de crer de nouvelles classes par combinaison
de classes dj existantes sans toucher au code source
des classes existantes.
Il permet de rutiliser une classe existante:
- en l'adaptant: ajouter de nouveaux attributs et mthodes la nouvelles
classes ou adapter (personnaliser) les attributs et les mthodes de la
classes existante.
- En la factorisant: plusieurs classes peuvent partager les mmes
attributs et les mmes mthodes.
Syntaxe:
class <ClasseDerivee> extends <ClasseDeBase>

Rappel sur la programmation orient objet 24


Factorisation de code

Toutes les mthodes publiques de Vhicule sont directement


partages et exposes par les classes filles

Rappel sur la programmation orient objet 25


Hirarchie des classes
Hritage plusieurs niveau
Hritage vs composition
Dans la programmation oriente objet,
lhritage et la composition sont deux moyens
qui permettent la rutilisation des classes
Lhritage traduit le terme Est un ou Une
sorte de
La composition traduit le terme A un ou
A plusieurs .
Voyons partir dun exemple entre lhritage
et la composition de type A un .
Rappel sur la programmation orient objet 28
Exemple Hritage et composition

Rappel sur la programmation orient objet 29


Abstractions
Une classe abstraite est une classe dclare avec le mot cl abstract.
Elle est non instanciable, elle sert uniquement de classe mre.
Exemple:
abstract class ClasseA {

}
Dans une classe abstraite on peut trouver:
des champs,
des mthodes ,
des mthodes abstraites.
Une mthode abstraite est dclare avec le mot cl abstract.
Dans ce cas on la dclare sans donner son implmentation (sans
spcifier le corps de la mthode).
Les mthodes abstraites peuvent tre implmentes par les classes
filles.

Rappel sur la programmation orient objet 30


Les rgles
On ne peut pas instancier une classe abstraite. Soit
ClasseA une classe abstraite.
On peut crer une rfrence sur un objet de type ClasseA
On ne peut pas crer un objet de type ClasseA, car il est
interdit de crer une instance (un objet) dune classe
abstraite
ClasseA objA; // autoris
ClasseA objA = new ClasseA(); // nest pas autoris.
Soit ClasseB une classe qui hrite de ClasseA. Si ClasseB
nest pas abstraite alors on peut crire:
ClasseA a = new ClasseB();
Une classe qui dfinit au moins une mthode abstraite
doit tre obligatoirement dclare abstraite.

Rappel sur la programmation orient objet 31


Intrt des classe abstraites:
Le principe est que la classe mre dfinit la
structure globale dun algorithme et laisse aux
classes filles le soin de dfinir des points bien
prcis de lalgorithme.
Par exemple quand on ne connat pas priori
le comportement par dfaut dune opration
commune plusieurs sous-classes

Rappel sur la programmation orient objet 32


Interfaces
Une classe est purement abstraite si toutes ses mthodes
sont abstraites.
Une interface est une classe purement abstraite
dclare avec le mot cl interface, dont toutes les
mthodes sont publiques.
Une interface est une liste de noms de mthodes publiques.
Dans linterface on dfinit la signature des mthodes qui doivent
tre implmentes dans les classes qui les implmentent.
Une interface est un modle pour une classe
Exemple dinterfaces
public interface Figure {
public void dessineFigure();
public void deplaceFigure(int dx, int dy);
}
Rappel sur la programmation orient objet 33
Rgles
Toutes les mthodes sont abstraites.
Il ny a aucun attribut.
Une interface peut possder des constantes
Les interfaces ne sont pas instanciables.
I obj; // juste
I a = new I(); // Erreur

Les interfaces sont implmentes par des classes.


Une classe implmente une interface I si elle
dclare implements I dans son en-tte.
Rappel sur la programmation orient objet 34
Extensions et implementations

Rappel sur la programmation orient objet 35

You might also like