Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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.
La classe bicyclette
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).
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)
// 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) {
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
}
}
Exemples: (oublier le mot clé static pour le momement)
www.youtube.com/watch?v=BTbLO8-Ir6k