- Les concepts d’interfaces en Java.
- La lecture et l’interprétation d’un diagramme de classe.
- L’implémentation d’un diagramme de classe simple.
- La refactorisation du code afin d’améliorer sa modularité et sa maintenabilité.
Vous travaillerez sur une application de gestion de véhicules. L’exercice se découpe en trois parties progressives.
- Lire et comprendre un diagramme de classes.
- Implémenter en Java une hiérarchie de classes de base.
Vous disposez du diagramme de classes suivant :
classDiagram
class Vehicule {
<<Abstract>>
# String marque
# String modele
+ demarrer() void
+ arreter() void
}
class Voiture {
- int nbPortes
+ klaxonner() void
}
class Camion {
- double capaciteChargement
+ klaxonner() void
}
Vehicule <|-- Voiture
Vehicule <|-- Camion
Tâches :
- Créez une classe abstraite
Vehicule
qui contient les attributsmarque
etmodele
, ainsi que les méthodesdemarrer()
etarreter()
. - Créez deux classes concrètes,
Voiture
etCamion
, qui étendentVehicule
. Chacune doit implémenter une méthodeklaxonner()
. - Veillez à respecter les conventions de nommage et la bonne organisation du code (constructeurs, getters/setters si nécessaire, commentaires).
- Identifier des comportements communs.
- Extraire ces comportements dans une interface.
- Refactoriser le code pour améliorer la flexibilité.
En observant votre code de la Partie 1, vous remarquez que la méthode klaxonner()
est présente dans les deux classes Voiture
et Camion
.
Tâches :
- Créez une interface nommée
Klaxonnable
qui déclare la méthodeklaxonner()
. - Faites en sorte que les classes
Voiture
etCamion
implémentent cette interface.
classDiagram
class Vehicule {
<<Abstract>>
# String marque
# String modele
+ demarrer() void
+ arreter() void
}
class Voiture {
- int nbPortes
+ klaxonner() void
}
class Camion {
- double capaciteChargement
+ klaxonner() void
}
class Klaxonnable {
<<interface>>
+ klaxonner() void
}
Vehicule <|-- Voiture
Vehicule <|-- Camion
Klaxonnable <|.. Voiture
Klaxonnable <|.. Camion
- Appliquer vos connaissances pour étendre l’application.
- Créer de nouvelles interfaces et classes en suivant un nouveau diagramme de classes.
Vous allez maintenant ajouter de nouvelles fonctionnalités à votre application en suivant le diagramme de classes suivant :
classDiagram
%% Classes de base
class Vehicule {
# String marque
# String modele
+ demarrer() void
+ arreter() void
}
class Voiture {
# int nbPortes
+ klaxonner() void
}
class Camion {
# double capaciteChargement
+ klaxonner() void
}
%% Classes étendues
class VoitureDeCourse {
- boolean turboActive
+ activerTurbo() void
+ desactiverTurbo() void
}
class CamionDeTransport {
- double chargeActuelle
+ charger(poids: double) void
+ decharger(poids: double) void
}
%% Interfaces
class Klaxonnable {
<<interface>>
+ klaxonner() void
}
class Transportable {
<<interface>>
+ charger(poids: double) void
+ decharger(poids: double) void
}
%% Relations d'héritage
Vehicule <|-- Voiture
Vehicule <|-- Camion
Voiture <|-- VoitureDeCourse
Camion <|-- CamionDeTransport
%% Implémentation d'interfaces
Klaxonnable <|.. Voiture
Klaxonnable <|.. Camion
Transportable <|.. CamionDeTransport