Vous êtes sur la page 1sur 11

Programmation orientée objets (GIMIL 507)

I- Introduction - Multithread
Pour un ingénieur, l’analyse et la conception de systèmes - Dynamique
complexes est une tache primordiale nécessitant des
méthodes et des langages de haut niveau. L’une des Le langage JAVA permet de compiler et d’interpréter
démarches de conception et d’analyse les plus utilisées votre programme JAVA. La compilation permet de
aujourd’hui est la programmation orienté objet POO. convertir le programme en un langage intermédiaire
appelé JAVA-bytecodes. L’interprétation permet de
Afin de concevoir votre système avec la démarche POO décoder et exécuter chaque instruction du byte-code par
vous devez utiliser des outils de conceptions et des l’ordinateur.
langages de programmation dédiés à ce type de
démarche. L’objectif de ce cours est de vous apprendre à
utiliser la méthode UML (pour la conception) et le
langage JAVA pour la programmation.

II- L’environnement JAVA


Vous pouvez ouvrir votre moteur de recherche préféré Compilation et Interprétation JAVA
(GOOGLE) et vous allez comprendre rapidement que
JAVA est largement utilisé (everywhere). Mais c’est quoi Ce principe de compilation et d’interprétation permet
JAVA exactement ? d’écrire un programme JAVA une seule fois et de
En analogie avec les autres langages de programmation l’exécuter n’ importe où (il suffit d’avoir l’interpréteur
que vous avez fréquentés (Langage C) vous pouvez dire installé –JVM : Java Virtual Machine).
que JAVA est lui aussi un langage de programmation
cependant JAVA est une plateforme en plus.

Principe du « write once, run everywher ».

Un programme JAVA passe par cinq étapes avant d’être


exécuter :
 Etape d’Édition : Nous créons le programme sur
l'éditeur, puis on l'enregistre dans le disque avec
l’extension .java.
 Etape de Compilation javac (compilateur java) : Le
JAVA est un langage de programmation et une compilateur traduit le programme en bytecode et le
plateforme. stocke dans le disque avec l’extension .class.
Remarque:  Etape de Chargement : Le chargeur de classe lit et
Un compilateur génère un code objet (*.o dans le cas du
met les bytecodes à partir du disque vers la RAM.
langage C sous linux) qui va être exécuté par votre CPU
 Etape de Vérification : Vérifiez les bytecodes pour
alors qu’un interpréteur ne génère pas ce code et exécute
confirmer qu’ils sont valides et n’altère pas les
votre programme (après vérification) sur votre CPU.
restrictions JAVA.
II.1 Le langage de programmation JAVA  Etape d’Exécution : La machine virtuelle Java (JVM)
Java est un langage de programmation de haut niveau: traduit les bytecodes en langage machine (que
- Simple l’ordinateur comprend) et les exécutent.
- Orienté objet
- Distribué II.2 La technologie JAVA
- Interprété La technologie JAVA rassemble tous les outils
- Robuste nécessaires (environnement) pour réussir votre
- Sécurisé programme JAVA. On distingue trois environnements :
- Architecture neurale
- Portable
- Haute performance
Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 1 -
Programmation orientée objets (GIMIL 507)
- Le JDK (JAVA DEVELOPPEMENT KIT) : c’est  Networking : URL, TCP, UDP, Sockets, IP
l’environnement permettant de développer et adresses.
d’exécuter votre programme JAVA.  Internationalization : Aide à écrire des
programmes qui peuvent être localisés à travers le
- Le JRE (JAVA RUNTIME ENVIRONNEMENT) : monde. Les programmes seront adaptés
C’est l’environnement permettant d’exécuter votre automatiquement à une localisation spécifique et
programme JAVA. affichés dans un langage approprié.
 Security : signatures électroniques, gestion des clés
publiques et privés, contrôle d’accès et les
- LA JVM (JAVA VIRTUAL MACHINE) : C’est certificats.
l’environnement permettant d’exécuter votre  JAVA Database Connectivity (JDBC): fournissent
JAVA- bytecodes. un accès uniforme aux bases de données
relationnelles.

L’API JAVA et La JVM débarrasse le programme de


son dépendance du matériel.

JDK=JRE+outils de développement III- Les types de programmes


JRE=JVM+library classes Les types de programmes JAVA les plus connus sont les
Applets et les applications. Un applet est un programme
II.3 La plateforme JAVA qui adhère à certaines conventions lui permettant d’être
Une plateforme est l’environnement matériel et logiciel exécuté sur un navigateur JAVA-enabled. Une
Sur lequel un programme va être exécuté (windows XP, application est un programme qui va être directement
Linux, Solaris, Macos …etc.). La majorité des exécuté sur une plateforme JAVA.
plateformes peuvent être décrit comme une combinaison
de système d’exploitation et de matériel. La plateforme IV- La programmation orienté objet
JAVA diffère des autres types de plateforme du fait Si vous n’avez jamais utilisé un langage de
qu’elle combine des logiciels seulement à savoir : programmation orienté objet vous êtes obliger de
- La machine virtuelle JAVA (JVM) comprendre les concepts de base de l’approche orienté
La JVM est responsable du chargement et d’exécution objet premièrement. Vous allez devoir comprendre ce
du JAVA-bytecodes. que c’st un objet, une classe, comment les objets et les
classes sont reliés et comment les objets communiquent
entre eux en utilisant des messages.

IV.1 Les objets


Jetez un cout d’œil sur ce qui vous entoure et vous allez
voir que les objets sont n’ importe où : votre chat, votre
bureau, votre télévision, votre bicyclette … etc. Ces
objets réels partagent deux caractéristiques : ils ont tous
un état et un comportement. Par exemple, votre chat
Ou commence le rôle de la JVM possède un état (nom, couleur, race, nourriture) et un
https://www.youtube.com/watch?v=dncpVFP1JeQ comportement (miaulement, chasse, étirement). Votre
bicyclette à un état (Engrenage actuel, cadence de pédale
- L’interface de programmation d’application JAVA actuelle, deux roues, nombre d'engrenages) et un
(JAVA API) : Un ensemble de composant logiciel qui comportement (Freinage, accélération, ralentissement,
fournit plusieurs capacités telles que : changement de vitesse).
 Essentials : objets, chaine de caractères, nombres, Par analogie, les objets de votre programme seront
threads, entrées/sorties, structures de données, modélisés comme les objets réels du fait qu’ils ont aussi
propriétés systèmes, date et temps …etc. un état et un comportement. Un objet de votre
 Applets : Un ensemble de convention utilisé par les programme possède un état maintenu par une ou
applets JAVA. plusieurs variables et un comportement implémenté par

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 2 -


Programmation orientée objets (GIMIL 507)
des méthodes (une méthode est une fonction ou sous- d'alliage, de titane et de caoutchouc. Seule, la bicyclette
programmes associée à un objet). ne peut réalisée aucune activité, elle devient utile quand
un autre objet (vous) s’interagit avec elle (la pédale).
Les objets de votre code communiquent entre eux en
envoyant des messages. Quand un objet A veut que
l’objet B performe l’une de ces méthodes (de l’objet B),
l’objet A envoie un message à l’objet B.

Un objet est un ensemble de variables et de méthodes

L’objet de votre programme modélisant votre bicyclette


va avoir des variables qui indiquent l’état actuel de votre Interaction d’objets en utilisant des messages
bicyclette (sa vitesse est de 10mph, sa cadence de pédale
est de 90 rpm et son engrenage actuel est le 5èmme). Parfois, l’objet recevant le message a besoin de plus
L’objet de votre code (programme) possède aussi des d’informations afin de savoir exactement ce qu’il faut
méthodes pour freiner, changer la cadence de la pédale et faire. Par exemple, lorsque vous souhaitez changer de
changer l’engrenage. vitesse sur votre bicyclette, vous devez indiquer quelle
vitesse vous voulez. Cette information est transmise avec
le message en tant que paramètres.
D’une manière générale, un message comporte trois
composants :
- L’objet auquel le message sera envoyé (bicyclette).
- Le nom de la méthode à performée (changer la
vitesse).
- Les paramètres nécessaires à la méthode (la vitesse
L’objet réel bicyclette modéliser par un objet code. inferieur par exemple).

Une dernière remarque concernant les objets, c’est qu’ils


peuvent exposés ou cachés leurs variables ou méthodes.
Ceci permet :
- La modularité : le code source d’un objet peut être
écrit ou modifié sans indépendamment des codes
sources des autres objets. En plus votre objet peut
être réutilisé aisément (Vous pouvez donner votre
bicyclette à une autre personne et elle marchera Exemple de composants d’un message.
toujours).
- Protection d’information : Un objet possède des IV.3 Les classes
informations et des méthodes publiques lui Dans le monde réel, vous avez souvent beaucoup d'objets
permettant de communiquer avec d’autres objets. Il du même genre. Par exemple, votre bicyclette est l'une
peut aussi maintenir d’autres variables et méthodes des nombreuses bicyclettes du monde. En orientée objet,
comme privés et par conséquent il peut les modifiés on dit que votre objet bicyclette est une instance de la
sans altérés les autre objets qui dépond de lui (vous classe d'objets appelée bicyclette. Les bicyclettes ont un
n’allez pas avoir besoin de comprendre le état (Engrenage actuel, cadence de pédale actuelle, deux
mécanisme d’engrenage de votre bicyclette pour roues, nombre d'engrenages) et un comportement
l’utilisée). (Freinage, accélération, ralentissement, changement de
vitesse) en commun.
IV.2 Les messages Lors de la fabrication d’une bicyclette, les fabricants
Généralement, un objet seul n’est pas très utile. En utilise un seul prototype (blueprint) pour réaliser
réalité, un objet ne représente qu’une partie d’un plusieurs bicyclettes (il serait inefficace de réaliser un
programme ou application contenant plusieurs objets. prototype pour chaque bicyclette).
Grâce à l’interaction entre ces objets, les programmeurs Une classe est un prototype qui définit les variables et
atteignent des fonctionnalités d’ordre supérieur et des les méthodes des objets de même genre. On dit qu’un
comportements plus complexes. Votre bicyclette objet est une instance de la classe.
suspendue à un crochet dans le garage est juste une bande

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 3 -


Programmation orientée objets (GIMIL 507)
course et les tandems sont toutes des bicyclettes. On dit
que les bicyclettes de montagne, les bicyclettes de course
et les tandems sont des sous-classes et la classe bicyclette
est la superclasse.

La classe bicyclette

Après la création de la classe bicyclette, on peut créer


n’importe quel nombre d’objet bicyclette à partir de cette
classe.
Quand vous créer des objets à partir d’une classe, ils vont
posséder les mêmes variables et méthodes sauf que les
valeurs de variables changent.

Les sous-classes (moutain bike, racingBike et tandem


Bike) héritent de la superclasse Bicycle.

Chaque sous-classe hérite l’état (les variables) de la


superclasse. Les bicyclettes de montagne, les bicyclettes
Deux instances-objets- (ma et ton bicyclette) de la
de course et les tandems partagent certains états: la
même classe bicyclette.
cadence, la vitesse … etc. En outre, chaque sous-classe
hérite des méthodes de la superclasse. Les bicyclettes de
Les variables de l’objet sont appelées variables-
montagne, les bicyclettes de course et les tandems
instances et les variables de la classe sont appelées
partagent certains comportements: freinage et
variables-classes. Une variable-classe contient une
changement de vitesse …etc.
information partagée par tous les objets. Par exemple, si
En plus des variables et des méthodes héritées de la
toutes les bicyclettes possèdent le même nombre de
superclasse, les sous-classes peuvent avoir d’autre
d’engrenage alors il serait logique de définir une valeur
variables et méthodes. Les bicyclettes tandem ont deux
pour la variable-classe nombre d’engrenage et par
sièges et deux guidons; Certains vélos de montagne ont
conséquent toutes les variables-instances des objets
un ensemble supplémentaire d’engrenage avec un rapport
bicyclette vont avoir cette même valeur.
d'engrenage inférieur.
Les sous-classes peuvent également remplacer
(override) les méthodes héritées et fournir des
implémentations spécifiques pour ces méthodes. Par
exemple, si vous avez une bicyclette de montagne avec
un ensemble supplémentaire d'engrenages, vous
remplacerez la méthode « changer engrenage » pour que
vous puissiez utiliser ces nouveaux engrenages.
L’héritage n’est pas limité à un seul niveau, on peut avoir
La variable-classe numberofGear (de la classe Bike) tout un arbre d’héritage.
est utilisé par la variable-instance numberofGear (de L'héritage offre l’avantage suivant:
l’objet YourBike)
- Les sous-classes fournissent des comportements
Les objets offrent l'avantage de la modularité et de la spécifiques à partir des éléments communs fournis par la
protection d'informations. Les classes offrent l'avantage superclasse. Grâce à l'utilisation de l'héritage, les
de la réutilisation. Les fabricants de bicyclettes réutilisent programmeurs peuvent réutiliser le code dans la
le même plan encore et encore pour construire beaucoup superclasse à plusieurs reprises.
de bicyclettes. Les programmeurs de logiciels utilisent la
même classe, et donc le même code, encore et encore IV.5 L’interface
pour créer de nombreux objets. En littérature, une interface est un dispositif permettant à
des objets non reliés de s’interagir entre eux. La
IV.4 L’héritage télécommande est une interface entre une personne et une
On peut définir des classes à partir d’autre classes. Par télévision, la langue est une interface entre deux
exemple, les bicyclettes de montagne, les bicyclettes de personnes ... etc. Dans la programmation orienté objet,

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 4 -


Programmation orientée objets (GIMIL 507)
l’interface est un dispositif permettant à des objets non
relié de communiquer entre eux. Les objets non reliés
sont les objets issus de classes différentes ou d’une
hiérarchie de classe différente.

Deux objets de la même classe ayant deux


comportements différents pour la même méthode
(overloading).

Le comportement Brake de la classe Bike sera


remplacé par le comportement Brake de la sous-classe
Moutains Bike (overriding).

IV.7 L’abstraction
Supposant que vous voulez inventer une nouvelle
bicyclette comportant des ailes (elle va avoir le
comportement volé en plus des comportements
classiques). Cela veut dire que vous allez déclarer ce
Plusieurs objets (Bicycle, motocycle, helmet) utilisent comportement seulement (vous ne pouvez pas
la même interface pour avoir un prix de détail (get l’implémenter réellement). Dans ce cas on dit que le
and set retail price) et un numéro de suivi (tracking comportement voler est un comportement abstrait et on
number). dit qu’une classe est abstraite si et seulement si elle
contient un comportement abstrait.
L’interface n’est pas une classe. Il ne contient pas d’état
(variables). Il contient seulement des constantes et des On ne peut en aucun cas créer un objet d’une classe
méthodes qui vont être implémentées par les objets non abstraite. On doit premièrement définir une sous-classe à
reliés. partir de la classe abstraite et implémenter tous les
comportements abstraits afin qu’on obtient une classe
IV.6 Le polymorphisme normale (concrète) puis vous pouvez créer votre objet.
En biologie, le polymorphisme est le principe qu’un
organisme ou une espèce peut avoir de nombreuses
formes ou étapes différentes. En programmation orienté
objet, le polymorphisme est le principe que des objets
appartenant à la même classe (ou hiérarchie de classe)
aient plusieurs comportements différents (Same classe
Many behaviours).

Comme exemple, à partir de la classe bicyclette on peut


avoir deux objet votre bicyclette à double freins et ma
bicyclette à un seul frein. La classe bicyclette contient la
méthode freiner, cependant le frein de votre bicyclette
nécessite d’introduire le paramètre numéro du frein (quel
frein utilisé) alors que ma bicyclette ne nécessite aucun
paramètre  Deux objets (votre et ma bicyclette) issus
de la même classe (bicyclette) mais avec deux
comportement différents (freiner avec paramètres et
freiner sans paramètres).

IV.8 L’encapsulation
Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 5 -
Programmation orientée objets (GIMIL 507)
L’encapsulation est le principe de protéger l’état d’un En mémoire, un bloc est réservé pour l’objet bike1. Ce
objet par ces comportements (Emballer les variables par boc aura un espace pour les attributs et un autre pour les
les méthodes). Par exemple, si on veut changer la vitesse instructions des méthodes.
actuelle de la bicyclette (Current speed) on est obliger Le code de la méthode
changeCadence
d’invoquer la méthode change gear (on ne peut pas lire bike1.changeCadence
ou modifier la valeur d’une variable de l’objet qu’a speedUp …..
travers l’une de ces méthodes). L’avantage de applyBrakes
l’encapsulation est la protection de l’information. applyBrakes
bike1.cadence
V- Du principe à l’implémentation bike1.speed 4 octets
Après avoir compris le principe de la POO, vous pouvez bike1.gear
maintenant choisir votre langage de programmation
préféré et écrire des programmes orienté objet. - Le programme JAVA aura la structure suivante
(comme exemple) :
Le langage que vous allez utiliser dans ce module de // Importation des packages
POO est le langage JAVA. // import package
// Équivalent à #include
class Bicycle {
- Pour définir une classe la syntaxe suivante est
utilisée (on donne l’exemple de la bicyclette) : int cadence = 0;
class Bicycle { //visibilité int speed = 0;
int gear = 1;
public int cadence = 0;
private int speed = 0; variables (état) void changeCadence(int newValue) {
protected int gear = 1; ou attributs cadence = newValue;
}
void changeCadence(int newValue) {
cadence = newValue; void changeGear(int newValue) {
} gear = newValue;
}
void changeGear(int newValue) {
ou fonctions
Méthodes(Comportement)

gear = newValue; void speedUp(int increment) {


} speed = speed + increment;
}
void speedUp(int increment) {
speed = speed + increment; void applyBrakes(int decrement) {
} speed = speed - decrement;
}
void applyBrakes(int decrement) {
speed = speed - decrement; void printStates() {
} System.out.println("cadence:" +
cadence + " speed:" +
void printStates() {
speed + " gear:" + gear);
System.out.println("cadence:" + }
cadence + " speed:" + }
speed + " gear:" + gear);
} class BicycleDemo { // classe principale
} public static void main(String[] args) {
// private : Visible par la classe uniquement.
// protected : Visible par la classe et les sous-classes. // Create two different
// public : Visible par tous le monde. // Bicycle objects
System.out.println est l’équivalent de printf en Bicycle bike1 = new Bicycle();
langage C. Bicycle bike2 = new Bicycle();

// Invoke methods on
- Pour Créer un objet, la syntaxe suivante est utilisée
// those objects
(on donne l’exemple de la bicyclette) : bike1.changeCadence(50);
Bicycle bike1 = new Bicycle();
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
Le nom de la classe le nom de l’objet
Donc bike1 est un objet issu (créer, générer …) de la bike2.changeCadence(50);
classe Bicycle grâce au mot clé new. bike2.speedUp(10);
Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 6 -
Programmation orientée objets (GIMIL 507)
bike2.changeGear(2); }
bike2.changeCadence(40);
bike2.speedUp(10); void changeGear(int newValue) {
bike2.changeGear(3); gear = newValue;
bike2.printStates(); }
}
}//Le nom du programme sera BicycleDemo.java void speedUp(int increment) {
La fonction public static void main(String[] args) speed = speed + increment;
(équivalent à int main(int argc, char *argv[ ] ) en langage }
C)
void applyBrakes(int decrement) {
Le résultat d’exécution :
speed = speed - decrement;
cadence:50 speed:10 gear:2
}
cadence:40 speed:20 gear:3
void printStates() {
- Pour l’héritage : System.out.println("cadence:" +
class MountainBike extends Bicycle { cadence + " speed:" +
// new fields and methods defining speed + " gear:" + gear);
// a mountain bike would go here }
public int length; }
}
MountainBike est une sous-classe et Bicycle est une - Pour créer une classe abstraite :
superclasse. Pour créer un objet de cette classe : abstract class FlyBicycle {
MountainBike bike1 = new MountainBike ();
int cadence = 0;
Dans la mémoire, bike1 aura la représentation : int speed = 0;
int gear = 1;
Le code de la méthode
changeCadence bike1.changeCadence void changeCadence(int newValue) {
speedUp ….. cadence = newValue;
applyBrakes }
applyBrakes
bike1.cadence void changeGear(int newValue) {
gear = newValue;
bike1.speed 4 octets }
bike1.gear
bike1.length void speedUp(int increment) {
speed = speed + increment;
- Si on veut maintenant utiliser un interface : }
interface Bicycle {
void applyBrakes(int decrement) {
void changeCadence(int newValue); speed = speed - decrement;
}
void changeGear(int newValue);
void printStates() {
void speedUp(int increment); System.out.println("cadence:" +
cadence + " speed:" +
void applyBrakes(int decrement); speed + " gear:" + gear);
} }
abstract void Fly() ;
class ACMEBicycle implements Bicycle { }
FlyBicycle bike1 = new FlyBicycle();
int cadence = 0; /* on peut avoir une classe quine contient
int speed = 0; pas de méthodes abstraites mais une méthode
int gear = 1; abstraite ne peut se trouver que dans une
classe abstraite. */
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and
// applyBrakes
Si par exemple la science à révélé une nouvelle
// all be implemented. Compilation will fail bicyclette qui vole alors :
// if those class Bicycle extends FlyBicycle {
// methods are missing from this class. void Fly() {
// votre code ici
void changeCadence(int newValue) { }
cadence = newValue; }
Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 7 -
Programmation orientée objets (GIMIL 507)
- Pour le Polymorphisme :
Comme déjà vue, il y a deux types de polymorphisme - Encapsulation :
(overriding and overloading). Cependant, on langage class Bicycle {
Java il existe un troisième type qu’on appelle
polymorphisme de constructeur. private int cadence = 0; // encapsulée
int gear = 1; // non encapsulé
 Overloading :
class Bicycle {
void changeCadence(int newValue) {
// ……………
cadence = newValue;
int speed = 0;
}
void applyBrakes() {
speed = speed - 1;
void printcadences() {
}
System.out.println("cadence:" +
cadence);
void applyBrakes(int decrement) {
}
speed = speed - decrement;
void changeGear(int newValue) {
}
gear = newValue;
}
// ……………
}
} class BicycleDemo { // classe principale
class BicycleDemo { // classe principale
public static void main(String[] args) {
public static void main(String[] args) {
Bicycle bike1 = new Bicycle();
bike1.changeCadence(50);
Bicycle bike1 = new Bicycle();
bike1.changeGear(2);
bike1.applyBrakes();
bike1.gear=3 ;
bike1.applyBrakes(3);
bike1.cadence=10 ; //protégée par private
}
bike1.printcadences() ;
} System.out.println("gear:" + bike1.gear);
Dans le premier appel on charge la première méthode alors System.out.println("cadence:" +
que dans le deuxième, la deuxième méthode sera chargée bike1.cadence); // protégé par private
 Method OverLoading. }
 Overriding }
class Bicycle { - Constructeur :
// …………… Le constructeur est un type spécial de méthode utilisé
void applyBrakes() { pour initialiser un objet. Lorsque vous créer un objet
speed = speed - 1; vous êtes obligé d’appelé le constructeur :
}
void applyBrakes(int decrement) {
Bicycle bike1 = new Bicycle();
speed = speed - decrement;
} constructeur
// …………… Le constructeur porte toujours le nom de la classe et
} ne possède pas de type retourné (ni void ni int …
class MountainBike extends Bicycle {
etc). On distingue deux types de constructeurs : les
// Cette classe hérite de la classe Bicycle
void applyBrakes() { constructeurs par défaut et les constructeurs
speed = speed - 2; paramétrés. Un constructeur par défaut est un
} constructeur définit par le système et qui ne possède
// ……………
} pas de paramètres. Un constructeur paramétré est un
constructeur définit par l’utilisateur et qui possède
class BicycleDemo { // classe principale des arguments.
public static void main(String[] args) {

MountainBike bike1 = new MountainBike ();  Constructeur par défaut


bike1.applyBrakes(); class Bicycle {
bike1.applyBrakes(3);
int cadence = 0;
} int speed = 0;
} int gear = 1;
La méthode applybrakes de la classe Bicycle à été remplacé // ……………
la méthode applybrakes de la classe MountainBike lors du void printStates() {
premier appel  Method Overriding. System.out.println("cadence:" +
Dans le deuxièmme appel  Method OverLoading. cadence + " speed:" +

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 8 -


Programmation orientée objets (GIMIL 507)
speed + " gear:" + gear); java va s’en chargé en utilisant un outil de
} destruction automatique.
}
class BicycleDemo { // classe principale - Polymorphisme de constructeur
public static void main(String[] args) { En java, vous pouvez créer un constructeur avec le
nombre de paramètre voulue (sans paramètre, un
Bicycle bike1 = new Bicycle(); paramètre, plusieurs paramètres). Cependant, il y a une
//Constructeur par défaut
bike1.printStates(); question majeur qui se pose : Lorsque vous créer votre
// cadence:0 speed:0 gear:0 objet quel constructeur va être utilisé ? Donc nous
// tous ce qui n’est pas nombre avons un seul nom de constructeur mais avec plusieurs
// sera initialisé par NULL.
définitions  polymorphisme de constructeur.
}
}
class Bicycle {
 Constructeur paramétré int cadence = 0;
class Bicycle { int speed = 0;
int gear = 1;
int cadence = 0; Bicycle (int c, int s, int g){
int speed = 0; cadence= c ;
int gear = 1; speed= s ;
gear= g ;
Bicycle (int c, int s, int g){ }
cadence= c ; Bicycle (){
speed= s ; cadence= 20 ; // on a définit le
gear= g ; speed= 5 ; // constructeur
} gear= 1 ; // par défaut
void printStates() { }
System.out.println("cadence:" + void printStates() {
cadence + " speed:" + System.out.println("cadence:" +
speed + " gear:" + gear); cadence + " speed:" +
} speed + " gear:" + gear);
}
void Bicycle () { }
// vous avez le droit de créer une méthode class BicycleDemo { // classe principale
// portant le même nom que le constructeur. public static void main(String[] args) {
System.out.println( " ceci n’est pas un
constructeur " ) ; Bicycle bike1 = new Bicycle();
} Bicycle bike2 = new Bicycle(50,10,2);
} bike1.printStates();
// cadence:20 speed:5 gear:1
class BicycleDemo { // classe principale Bike2.printStates();
public static void main(String[] args) { // cadence:50 speed:10 gear:2
}
Bicycle bike1 = new Bicycle(); }
Bicycle bike1 = new Bicycle(50,10,2); Il y a un polymorphisme de constructeur  pour bike1 on a utilisé
Constructeur paramétré le constructeur par défaut et pour bike2 le constructeur paramétré
bike1.printStates(); (constructor overloading).
// cadence:50 speed:10 gear:2
Bike1.Bicycle () ;
// ceci n’est pas un constructeur. Une dernière remarque : on peut avoir plusieurs constructeurs
} paramétrés pour la même classe. Par exemple :
}
Remarque : attention, on ne peut pas appeler le class Bicycle {
int cadence = 0;
constructeur par défaut si on définit un constructeur
int speed = 0;
paramétré (le constructeur par défaut doit être définit int gear = 1;
pour avoir droit à son appel). Bicycle (int c, int s, int g){
cadence= c ;
speed= s ;
- Destructeur : gear= g ;
En langage Java, on n’a pas besoin d’utiliser des }
destructeurs pour détruire (supprimer et libérer Bicycle (){
l’espace mémoire réservé pour l’objet) l’objet car cadence= 20 ;
speed= 5 ;
gear= 1 ; }
Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 9 -
Programmation orientée objets (GIMIL 507)
Bicycle (int c, int s){
cadence= c ;
speed= s ;
}

void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

class BicycleDemo { // classe principale


public static void main(String[] args) {

Bicycle bike1 = new Bicycle();


Bicycle bike2 = new Bicycle(50,10,2);
Bicycle bike3 = new Bicycle(63,12);
bike1.printStates();
// cadence:20 speed:5 gear:1
Bike2.printStates();
// cadence:50 speed:10 gear:2
Bike3.printStates();
// cadence:63 speed:12 gear:0

}
}
Exemples: (oublier le mot clé static pour le momement)
www.youtube.com/watch?v=BTbLO8-Ir6k

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 10 -


Programmation orientée objets (GIMIL 507)

Constructor overloading (polymorphisme de


constructeur).
Références :
- Au coeur de Java™ volume 1 Notions fondamentales
(Cay S. Horstmann et Gary Cornell).
- UML en action De l’analyse des besoins à la
conception en Java (Pascal Roques et Franck Vallée).

Chapitre I : Introduction au langage JAVA ©ESSAT-Tlemcen 2017 Page - 11 -

Vous aimerez peut-être aussi