Cours Java - F. Michel

publicité
Objet
Classe
Concepts clés de la POO
Résumé global
Concepts de base de la
programmation orientée objet
Cours Java - F. Michel
1 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Plan
1
Qu’est-ce qu’un objet ?
Une définition
Principe d’encapsulation des données
Exemples
2
Qu’est-ce qu’une classe ?
Une définiton
Exemple de classe en Java
3
Concepts clés de la POO
Héritage
Spécialisation
Redéfinition
Interface
Cours Java - F. Michel
2 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Qu’est-ce qu’un objet ?
Une entité logicielle cohérente définie par son état et son
comportement.
Utilisé pour modéliser informatiquement des "objets" de la vie courante
(voiture, personne, etc.) ou des concepts (date, couleur,etc.).
Cours Java - F. Michel
4 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Qu’est-ce qu’un objet ?
Son état est défini à l’aide d’attributs (Fields) : des variables associées
à l’objet.
Son comportement est défini par des méthodes (Methods) : une
fonction rattachée à l’objet qui permet de déclencher un des
comportements associés à l’objet.
Cours Java - F. Michel
5 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Principe d’encapsulation des données
Principe d’encapsulation des données
Les attributs sont généralement inaccessibles depuis l’extérieur de
l’objet : seules les méthodes sont accessibles.
Cacher le détail de la structure interne d’un objet (les attributs)
correspond à appliquer le principe d’encapsulation des données :
principe de base de la programmation objet.
Cours Java - F. Michel
6 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Un exemple
Un vélo :
Les méthodes permettent de controler la manière dont les attributs de
l’objet vélo sont modifiés.
Avantages : modularité, réutilisation, indépendance des différentes
parties du programme (facilite la maintenance et le debug).
Cours Java - F. Michel
7 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Autre exemple, avec la notation UML
Une ampoule :
L’ensemble des méthodes d’un objet est appelé l’interface de l’objet.
Une interface définit donc en quelque sorte tout ce qu’il est possible de
"faire" avec un objet.
Cours Java - F. Michel
8 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Qu’est-ce qu’une classe ?
Dans le monde réel, nous comprenons les objets en les associant à
des catégories :
tous les vélos posèdent des caractéristiques communes.
peu importe leurs états individuels, ils sont tous faits des mêmes
composants (vitesses, pédales, etc.)
Ils définissent donc une classe (ou type) d’objet particulière.
En termes "orientés objets" :
un vélo particulier est simplement une instance de la classe vélo.
les attributs et les méthodes d’une instance de vélo sont les mêmes pour
toutes les instances de vélos.
seules les valeurs des attributs (caractéristiques propres) sont
susceptibles d’être différentes.
une classe est donc un patron de conception à partir duquel des objets
individuels sont créés.
Cours Java - F. Michel
10 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Exemple de classe en Java
Bicycle.java
public class
private int
private int
private int
Bicycle {
cadence = 0 ;
speed = 0 ;
gear = 1 ;
p u b l i c v o i d changeCadence ( i n t newValue ) {
cadence = newValue ;
}
p u b l i c v o i d changeGear ( i n t newValue ) {
gear = newValue ;
}
v o i d speedUp ( i n t i n c r e m e n t ) { / /
speed = speed + i n c r e m e n t ;
}
v i s i b i l i t e de l a methode r e s t r e i n t e au package
p u b l i c v o i d applyBrakes ( i n t decrement ) {
speed = speed − decrement ;
}
public void p r i n t S t a t e s ( ) {
System . o u t . p r i n t l n ( " cadence : " +cadence+ " speed : " +speed+ " gear : " +gear ) ;
}
}
Cours Java - F. Michel
11 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Remarques
la classe précédente ne contient pas de méthode main.
ce n’est pas une application.
c’est juste une classe permettant de créer des objets qui seront utilisés
dans une application.
La responsabilité de créer et d’utiliser de nouveaux objets du type
Bicycle appartient à une classe : celle qui portera le nom du
programme.
Cours Java - F. Michel
12 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Utilisation d’une classe dans une application Java
BicycleDemo.java
p u b l i c c l a s s BicycleDemo {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args ) {
/ / Create two d i f f e r e n t B i c y c l e o b j e c t s
B i c y c l e b i k e 1 = new B i c y c l e ( ) ;
B i c y c l e b i k e 2 = new B i c y c l e ( ) ;
/ / Invoke methods on those o b j e c t s
b i k e 1 . changeCadence ( 5 0 ) ;
b i k e 1 . speedUp ( 1 0 ) ;
b i k e 1 . changeGear ( 2 ) ;
bike1 . p r i n t S t a t e s ( ) ;
b i k e 2 . changeCadence ( 5 0 ) ;
b i k e 2 . speedUp ( 1 0 ) ;
b i k e 2 . changeGear ( 2 ) ;
b i k e 2 . changeCadence ( 4 0 ) ;
b i k e 2 . speedUp ( 1 0 ) ;
b i k e 2 . changeGear ( 3 ) ;
bike2 . p r i n t S t a t e s ( ) ;
}
}
Cours Java - F. Michel
13 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Héritage
Cours Java - F. Michel
15 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Héritage : le mot clé extends
Pour hériter d’une classe, on utilise le mot clé extends :
MountainBike.java
p u b l i c c l a s s MountainBike extends B i c y c l e {
/ / new f i e l d s and methods d e f i n i n g a mountain b i k e would go here
}
Cours Java - F. Michel
16 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Héritage (notation UML)
Cours Java - F. Michel
17 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Spécialisation
Cours Java - F. Michel
18 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Redéfinition de méthodes
Cours Java - F. Michel
19 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Interface en java
Définition
Les objets interagissent avec le monde extérieur grâce aux méthodes
qu’ils définissent (encapsulation)
Les méthodes d’un objet définissent donc son interface avec le monde
extérieur
En java, il est possible de définir, de manière abstraite (sans le code
des méthodes), une interface.
On peut ainsi définir toutes les méthodes nécessaires à un type d’objet
particulier sans pour autant imposer le code des méthodes.
Cours Java - F. Michel
20 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Interface, exemple :
BicycleInterface.java
public interface BicycleInterface {
p u b l i c v o i d changeCadence ( i n t newValue ) ;
p u b l i c v o i d changeGear ( i n t newValue ) ;
p u b l i c v o i d speedUp ( i n t i n c r e m e n t ) ;
p u b l i c v o i d applyBrakes ( i n t decrement ) ;
}
Cours Java - F. Michel
21 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
ACMEBicycle.java
p u b l i c c l a s s ACMEBicycle implements B i c y c l e {
p u b l i c v o i d changeCadence ( i n t newValue ) {
/ / code
}
p u b l i c v o i d changeGear ( i n t newValue ) {
/ / code
}
p u b l i c v o i d speedUp ( i n t i n c r e m e n t ) {
/ / code
}
p u b l i c v o i d applyBrakes ( i n t decrement ) {
/ / code
}
}
Une classe implémente une interface grâce au mot clé implements
Lorsqu’une une classe implémente une interface, toutes les méthodes
de l’interface doivent être définies dans le corps de la classe.
Il s’agit d’une sorte de contrat : "la classe s’engage à définir les
méthodes de l’interface"
Cours Java - F. Michel
22 / 23
Objet
Classe
Concepts clés de la POO
Résumé global
Résumé global
La programmation orientée objet (POO) :
la POO est un paradigme de programmation qui fait le lien avec la
La POO sur Wikipédia
manière dont nous concevons le monde.
elle repose sur l’assemblage de briques logicielles, les objets, définies
par un état et un comportement.
On parle d’attributs et de méthodes.
Quelques principes de bases de la POO :
encapsulation : les traitements et les attributs internes à un objet ne
doivent pas être visibles de l’extérieur
notion d’interface : les méthodes d’une classe d’objets. Elles définissent
son comportement.
héritage et spécialisation : un programme correspond au final à définir
et utiliser une hiérarchie d’objets.
la spécialisation d’une classe peut entraîner la redéfinition d’une partie
de son comportement, c’est-à-dire de ses méthodes.
Ce cours reprend largement les tutoriaux en ligne proposés par Sun :
The Java Tutorials
Cours Java - F. Michel
23 / 23
Téléchargement