Vous êtes sur la page 1sur 8

1

1
Java un langage Orient Objets
L'approche Objets
Philippe Genoud
Philippe.Genoud@imag.fr
Septembre 2006 Ph. Genoud Universit Joseph Fourier 2
Le langage Java
un langage orient-objet
Quest-ce quun objet ?
Modlise toute entit identifiable, concrte ou abstraite, manipule
par lapplication logicielle
une chose tangible
ex: ville, vhicule, tudiant, un bouton sur lcran
une chose conceptuelle
ex: date, runion, planning de rservation
Ragit certains messages quon lui envoie de lextrieur; la faon
dont il ragit dtermine le comportement de lobjet.
Ne ragit pas toujours de la mme faon un mme message; sa
raction dpend de ltat dans lequel il se trouve.
2
Septembre 2006 Ph. Genoud Universit Joseph Fourier 3
Le langage Java
un langage orient-objet
Un objet possde :
Une identit unique (permet de distinguer un objet dun autre)
Un tat interne donn par des valeurs de variables (ou attributs)
Attributs dcrivent ltat de lobjet un instant donn
ex: patient mesure 1,82 m et pse 75 Kg
Attributs sont typs et nomms
ex: float hauteur; float poids;
Un comportement (capacits daction de lobjet) donn par des fonctions
ou sous-programmes, appels mthodes (ou oprations).
Mthodes dfinissent le comportement de lobjet (ce quil peut faire,
comment il peut le faire) et ses ractions aux stimulations externes
ex: un tudiant passe un examen, etc
Mthodes implmentent les algorithmes invocables sur cet objet
Septembre 2006 Ph. Genoud Universit Joseph Fourier 4
Comportement
(public)
Le langage Java
un langage orient-objet
Un objet = donnes + algorithmes
Un objet est le regroupement de donnes (variables ou attributs) et des traitements
(mthodes) associes
Principe dencapsulation
Laccs aux donnes (tat) de lobjet ne peut
tre fait quau travers des mthodes.
Les donnes sont prives (caches)
Les mthodes publiques dfinissent linterface de
de lobjet
Etat
(cach)
i
n
t
g
e
t
H
e
u
r
e
(
)
setHeures
(int m)
s
e
t
M
i
n
u
t
e
s
(
i
n
t
m
)
int
getMinutes()
Mthodes
(oprations)
int jour;
int mois;
int anne;
int heure;
int minutes;
int secondes;
Variables
(donnes
internes)
Un objet
Un objet montre
3
Septembre 2006 Ph. Genoud Universit Joseph Fourier 5
int jour;
int mois;
int anne;
int heure;
int minutes;
int secondes; i
n
t
g
e
t
H
e
u
r
e
(
)
setHeures
(int m)
s
e
t
M
i
n
u
t
e
s
(
i
n
t
m
)
int
getMinutes()
Mthodes
(oprations)
Variables
(donnes
internes)
Le langage Java
un langage orient-objet
Intrt de lencapsulation
Modification des structures de donnes naffecte pas les programmes qui
utilisent lobjet.
long milisecs;
Septembre 2006 Ph. Genoud Universit Joseph Fourier 6
Le langage Java
un langage orient-objet
Les objets interagissent et communiquent entre eux par lenvoi de
messages
Les mthodes publiques dun objet correspondent aux messages que lon
peut lui envoyer
Les messages sont caractriss par
objet cible (recpeteur) du message
nom de la mthode dclencher
paramtres de cette mthode
objet maMontre
maMontre.setMinutes(45);
maMontre.getMois();
maMontre.setHeure(14);
Envoi dun message lobjet
identifi par maMontre
Paramtre du
message
Objet rcepteur
du message
Mthode
invoque
4
Septembre 2006 Ph. Genoud Universit Joseph Fourier 7
Le langage Java
un langage orient-objet
Les objets senvoient des messages entre eux
objet Pierre objet maMontre
setHeure(int h)
maMontre.setHeure(14)
Septembre 2006 Ph. Genoud Universit Joseph Fourier 8
Les objets (instances) sont crs (instancis) partir de "moules" : les
classes
Classe = schma/moule/modle dobjets, elle dcrit :
partie prive
structure de donnes interne (attributs)
corps des mthodes (algorithmes)
partie publique (interface)
noms et paramtres des mthodes
Classe = gnrateur dobjets
par instanciation, on peut fabriquer des objets
obissant ce schma/moule/modle
Le langage Java
un langage orient-objet
objet montre1
instance de
classe Montre
objet montre2
code
mmoire
5
Septembre 2006 Ph. Genoud Universit Joseph Fourier 9
Le langage Java
un langage orient-objet
Classe = raffinement/spcialisation dune classe existante
Elles forment une hirarchie de classes, o chaque classe :
hrite des attributs et mthodes de ses anctres/super-classes
ajoute de nouveaux attributs
et/ou de nouvelles mthodes
peut modifier ou redfinir
les mthodes hrites
instance de
MontreAiguilles
hrite de
montre1 montre2
montre3
MontreDigitale
instance de
Montre code
mmoire
Intrt hritage :
Rutilisation du code
Pas besoin de rinventer
la roue chaque fois
Septembre 2006 Ph. Genoud Universit Joseph Fourier 10
Le langage Java
un langage orient-objet
Approche procdurale (C)
Dfinir les structures de donnes
Dfinir les traitements
Analyse descendante
Le programme principal enchane
les traitements.
Approche Objet
Identifier les classes
Pour chaque classe
Dfinir son interface publique
(signature des mthodes)
Dfinir son implmentation
(attributs, corps des mthodes)
Le programme principal :
cration (instanciation) dobjets en
mmoire
lance excution par envoi de
messages aux objets crs
ces messages peuvent provoquer
dautres envois de messages et/ou
la cration dautres objets
6
Septembre 2006 Ph. Genoud Universit Joseph Fourier 11
Le langage Java
un langage orient-objet
Exemple : les visages anims
Visages anims
Demo Demo Demo Demo
Quels sont les concepts/les objets composant le jeu ?
Que doivent savoir faire ces objets ?
Quelles sont leurs proprits ?
Septembre 2006 Ph. Genoud Universit Joseph Fourier 12
Le langage Java
un langage orient-objet
Exemple : les visages anims
Objets ?
Capacit daction des objets : que font-ils ?
Attributs des objets : quelles sont leurs proprits ?
Visages anims
capacits daction
se fermer
siconifier
passer au premier plan
...
attributs
position
largeur, hauteur
...
Fentre
Utilisation dune classe existante dans Java
(JFrame)
7
Septembre 2006 Ph. Genoud Universit Joseph Fourier 13
Le langage Java
un langage orient-objet
Exemple : les visages anims
Objets ?
Capacit daction des objets : que font-ils ?
Attributs des objets : quelles sont leurs proprits ?
Visages anims
capacits daction
sourire
faire la tte
avancer
changer de direction
safficher
attributs
couleur
position
largeur, hauteur
...
Visages
Ecriture dune nouvelle classe (Visage)
Septembre 2006 Ph. Genoud Universit Joseph Fourier 14
Le langage Java
un langage orient-objet
Exemple : les visages anims
Objets ?
Capacit daction des objets : que font-ils ?
Attributs des objets : quelles sont leurs proprits ?
Visages anims
capacits daction
seffacer
afficher les objets quelle contient
...
attributs
fentre o elle se trouve
couleur du fond
...
Zone de dessin
Ecriture dune nouvelle classe (Dessin) en
rutilisant (hritage) une classe existante dans
Java (JPanel)
8
Septembre 2006 Ph. Genoud Universit Joseph Fourier 15
Le langage Java
un langage orient-objet
Une application oriente objet consiste en :
cration (instanciation) dobjets en mmoire
lancer excution par envoi de messages aux objets crs
ces messages peuvent provoquer dautres envois de messages et/ou la
cration dautres objets
visage1
dessiner
visage2
Visages anims
dessiner
zoneDeDessin
fentre
dessiner
afficher
Septembre 2006 Ph. Genoud Universit Joseph Fourier 16
Le langage Java
un langage orient-objet : Exemple de programme Java
class DemoVisagesAnimes
{
public static void main(String[] argv)
{
JFrame fentre = new JFrame("Titre de la fentre");
// Cration d'un objet de type Dessin. Cet objet est destin
// contenir les objets graphiques grs par l'application.
Dessin dessin = new Dessin();
// Insertion de objet de type Dessin dans la fentre de l'appli.
fentre.add(dessin);
// Affichage de la fentre
fentre.show();
// ajout, modification des objets visage
Visage v1 = new Visage();
Visage v2 = new Visage(200,100,200,200,5);
dessin.ajouterObjet(v1);
dessin.ajouterObjet(v2);
v2.pleurer();
dessin.repaint(10);
while (true) {
v1.deplacer();
v2.deplacer();
dessin.repaint(10);
}
}
}
Cration des objets
de lapplication
Envoi de messages
aux objets