Travail Pratique 2 : Voiture, Véhicule et Camion en POO
Objectif :
Ce travail pratique a pour objectif de vous faire appliquer les concepts fondamentaux de la
Programmation Orientée Objet (POO) à travers la création de classes en Java, en mettant
l'accent sur les mots-clés final, static, et l'héritage. Vous devrez modéliser une
hiérarchie d'objets représentant des véhicules, des voitures et des camions.
Description du problème :
Vous allez créer un projet qui implémente les éléments suivants :
1. Classe Vehicule :
○ Cette classe représente un véhicule générique.
○ Elle doit contenir :
■ Un attribut marque (de type String) pour représenter la marque du
véhicule.
■ Un attribut vitesseMax (de type int) pour la vitesse maximale du
véhicule.
■ Une constante VITESSE_MAX_GEN qui représente la vitesse
maximale générale pour tous les véhicules. Cette constante doit être
définie avec le mot-clé final et ne doit pas pouvoir être modifiée.
■ Un attribut totalVehicules (de type static) pour compter le
nombre total de véhicules créés. Ce champ doit être accessible via
une méthode static pour obtenir ce nombre.
Une méthode demarrer() qui affiche un message indiquant que le
■
véhicule démarre. Cette méthode doit être définie avec le mot-clé
final, ce qui signifie qu'elle ne pourra pas être modifiée ou redéfinie
dans les classes filles.
■ Un constructeur pour initialiser les valeurs des attributs.
2. Classe Voiture :
○ La classe Voiture hérite de la classe Vehicule et représente un véhicule
spécifique (une voiture).
○ Elle doit contenir :
■ Un attribut nbPortes (de type int) représentant le nombre de portes
de la voiture.
■ Un constructeur qui initialise les attributs marque, vitesseMax, et
nbPortes en appelant le constructeur de la classe parente
(Vehicule).
■ Une méthode afficherInfos() qui affiche les informations
spécifiques à la voiture, en appelant d'abord la méthode
afficherInfos() de la classe Vehicule puis en ajoutant des
informations supplémentaires sur le nombre de portes.
○ Vous ne pouvez pas redéfinir la méthode demarrer() dans cette classe, car
elle est marquée comme final dans la classe parente.
3. Classe Camion :
○ La classe Camion hérite également de la classe Vehicule et représente un
type spécifique de véhicule.
○ Elle doit contenir :
■ Un attribut capacitéCharge (de type double) représentant la
capacité de charge du camion en tonnes.
■ Un constructeur qui initialise les attributs marque, vitesseMax, et
capacitéCharge en appelant le constructeur de la classe parente
(Vehicule).
■ Une méthode afficherInfos() qui affiche les informations
spécifiques au camion, en appelant d'abord la méthode
afficherInfos() de la classe Vehicule puis en ajoutant des
informations supplémentaires sur la capacité de charge.
○ Vous ne pouvez pas redéfinir la méthode demarrer() dans cette classe, car
elle est marquée comme final dans la classe parente.
4. Classe Main :
○ Dans la classe Main, vous allez :
■ Créer plusieurs instances des classes Vehicule, Voiture, et
Camion.
■ Appeler les méthodes afficherInfos() et demarrer() sur ces
objets.
■ Afficher le nombre total de véhicules créés à l'aide de la méthode
getTotalVehicules() de la classe Vehicule.
Exigences :
1. Utiliser l'héritage pour créer la relation entre Vehicule, Voiture et Camion.
2. Utiliser le mot-clé final pour la constante VITESSE_MAX_GEN et pour la méthode
demarrer().
3. Utiliser le mot-clé static pour le champ totalVehicules et la méthode
getTotalVehicules().
4. Assurez-vous que la méthode demarrer() de la classe Vehicule ne peut pas être
redéfinie dans les classes filles.
5. Implémentez les méthodes correctement et affichez les informations comme
demandé dans le programme principal.
Exemple de sortie attendue :
Marque: Peugeot
Vitesse maximale: 180 km/h
Le véhicule démarre.
Nombre total de véhicules: 1
Marque: Toyota
Vitesse maximale: 220 km/h
Nombre de portes: 5
Le véhicule démarre.
Nombre total de véhicules: 2
Marque: Volvo
Vitesse maximale: 120 km/h
Capacité de charge: 10.0 tonnes
Le véhicule démarre.
Nombre total de véhicules: 3
Critères d'évaluation :
● Bonne utilisation de l'héritage.
● Bonne utilisation des mots-clés final et static.
● Respect de la logique métier (affichage des informations, gestion du nombre de
véhicules, etc.).
● Code bien structuré et clair.