- 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
Vehiculequi contient les attributsmarqueetmodele, ainsi que les méthodesdemarrer()etarreter(). - Créez deux classes concrètes,
VoitureetCamion, 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
Klaxonnablequi déclare la méthodeklaxonner(). - Faites en sorte que les classes
VoitureetCamionimplé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
