Files
tp-java-vehicules/com/humanbooster/exercices/VehiculeManager.java
2025-04-28 18:29:11 +02:00

300 lines
11 KiB
Java

package com.humanbooster.exercices;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class VehiculeManager {
private final List<Vehicule> listeVehicules;
private final List<Voiture> listeVoitures;
private final List<Moto> listeMotos;
private final List<Camion> listeCamions;
/**
* Constructeur de la classe VehiculeManager
* Initialise les listes de véhicules
*/
public VehiculeManager () {
listeVehicules = new ArrayList<>();
listeVoitures = new ArrayList<>();
listeMotos = new ArrayList<>();
listeCamions = new ArrayList<>();
listeVehicules.addAll(listeVoitures);
listeVehicules.addAll(listeMotos);
listeVehicules.addAll(listeCamions);
}
/**
* Méthode pour obtenir la liste des véhicules
* @return La liste des véhicules
*/
public List<Vehicule> getListeVehicules() {
return listeVehicules;
}
/**
* Méthode pour obtenir la liste des voitures
* @return La liste des voitures
*/
public List<Voiture> getListeVoitures() {
return listeVoitures;
}
/**
* Méthode pour obtenir la liste des motos
* @return La liste des motos
*/
public List<Moto> getListeMotos() {
return listeMotos;
}
/**
* Méthode pour obtenir la liste des camions
* @return La liste des camions
*/
public List<Camion> getListeCamions() {
return listeCamions;
}
/**
* Méthode pour créer une voiture
* @param marque La marque de la voiture
* @param modele Le modèle de la voiture
* @param vitesseMax La vitesse maximale de la voiture
* @param nombrePortes Le nombre de portes de la voiture
*/
public void creerVoiture(String marque, String modele, int vitesseMax, int nombrePortes) {
new Voiture(marque, modele, vitesseMax, nombrePortes);
}
/**
* Méthode pour créer une moto
* @param marque La marque de la moto
* @param modele Le modèle de la moto
* @param vitesseMax La vitesse maximale de la moto
* @param cylindree La cylindrée de la moto
*/
public void creerMoto(String marque, String modele, int vitesseMax, int cylindree) {
new Moto(marque, modele, vitesseMax, cylindree);
}
/**
* Méthode pour créer un camion
* @param marque La marque du camion
* @param modele Le modèle du camion
* @param vitesseMax La vitesse maximale du camion
* @param remorque La remorque du camion
*/
public void creerCamion(String marque, String modele, int vitesseMax, Remorque remorque) {
new Camion(marque, modele, vitesseMax, remorque);
}
/**
* Méthode pour supprimer une voiture
* @param voiture La voiture à supprimer
*/
public void supprimerVoiture(Voiture voiture) {
listeVoitures.remove(voiture);
}
/**
* Méthode pour supprimer une moto
* @param moto La moto à supprimer
*/
public void supprimerMoto(Moto moto) {
listeMotos.remove(moto);
}
/**
* Méthode pour supprimer un camion
* @param camion Le camion à supprimer
*/
public void supprimerCamion(Camion camion) {
listeCamions.remove(camion);
}
/**
* Méthode pour démarrer un véhicule
* @param vehicule Le véhicule à démarrer
*/
public void demarrerVehicule(Vehicule vehicule) {
vehicule.demarrer();
}
/**
* Méthode pour accélérer un véhicule
* @param vehicule Le véhicule à accélérer
*/
public void accelererVehicule(Vehicule vehicule) {
vehicule.accelerer();
}
/**
* Méthode pour freiner un véhicule
* @param vehicule Le véhicule à freiner
*/
public void freinerVehicule(Vehicule vehicule) {
vehicule.freiner();
}
/**
* Méthode pour mettre à jour la liste des véhicules
*/
public void updateList() {
listeVehicules.addAll(listeVoitures);
listeVehicules.addAll(listeMotos);
listeVehicules.addAll(listeCamions);
}
/**
* Méthode pour afficher le menu de gestion des véhicules
*/
public void afficherMenu() {
// Initialisation du menu
System.out.println("\nBienvenue dans le menu de gestion des véhicules !");
Scanner scanner = new Scanner(System.in);
// Boucle principale du menu
int choix;
do {
System.out.println("\nVeuillez choisir une option :");
System.out.println("1. Afficher les véhicules");
System.out.println("2. Ajouter un véhicule");
System.out.println("3. Supprimer un véhicule");
System.out.println("0. Quitter");
System.out.print("\nVotre choix : ");
choix = scanner.nextInt();
scanner.nextLine();
switch (choix) {
case 1:
if (this.getListeVehicules().isEmpty()) {
System.out.println("Aucun véhicule trouvé.");
} else {
System.out.println("\nListe des véhicules :");
for (Vehicule vehicule : this.getListeVehicules()) {
System.out.println("\n----------------------------------");
System.out.println(vehicule.getTypeVehicule() + " :");
vehicule.afficherInfos();
}
}
break;
case 2:
System.out.println("\nQuel type de véhicule voulez-vous ajouter ?");
System.out.println("1. Voiture");
System.out.println("2. Moto");
System.out.println("3. Camion");
System.out.print("\nVotre choix : ");
int typeVehicule = scanner.nextInt();
scanner.nextLine();
switch (typeVehicule) {
case 1:
System.out.println("\n---Ajout d'une voiture---");
System.out.print("Marque : ");
String marqueVoiture = scanner.nextLine();
System.out.print("Modèle : ");
String modeleVoiture = scanner.nextLine();
System.out.print("Vitesse max : ");
int vitesseMaxVoiture = scanner.nextInt();
System.out.print("Nombre de portes : ");
int nombrePortes = scanner.nextInt();
this.getListeVoitures().add(new Voiture(marqueVoiture, modeleVoiture, vitesseMaxVoiture, nombrePortes));
this.updateList();
break;
case 2:
System.out.println("\n---Ajout d'une moto---");
System.out.print("Marque : ");
String marqueMoto = scanner.nextLine();
System.out.print("Modèle : ");
String modeleMoto = scanner.nextLine();
System.out.print("Vitesse max : ");
int vitesseMaxMoto = scanner.nextInt();
System.out.print("Cylindrée : ");
int cylindree = scanner.nextInt();
this.getListeMotos().add(new Moto(marqueMoto, modeleMoto, vitesseMaxMoto, cylindree));
this.updateList();
break;
case 3:
System.out.println("\n---Ajout d'un camion---");
System.out.print("Marque : ");
String marqueCamion = scanner.nextLine();
System.out.print("Modèle : ");
String modeleCamion = scanner.nextLine();
System.out.print("Vitesse max : ");
int vitesseMaxCamion = scanner.nextInt();
this.getListeCamions().add(new Camion(marqueCamion, modeleCamion, vitesseMaxCamion, new Remorque()));
this.updateList();
break;
}
break;
case 3:
System.out.println("\nQuel type de véhicule voulez-vous supprimer ?");
System.out.println("1. Voiture");
System.out.println("2. Moto");
System.out.println("3. Camion");
System.out.print("\nVotre choix : ");
int typeVehiculeSupprimer = scanner.nextInt();
scanner.nextLine();
switch (typeVehiculeSupprimer) {
case 1:
System.out.print("Marque : ");
String marqueVoitureSupprimer = scanner.nextLine();
System.out.print("Modèle : ");
String modeleVoitureSupprimer = scanner.nextLine();
for (Voiture voiture : this.getListeVoitures()) {
if (voiture.getMarque().equals(marqueVoitureSupprimer) && voiture.getModele().equals(modeleVoitureSupprimer)) {
this.supprimerVoiture(voiture);
break;
}
}
break;
case 2:
System.out.print("Marque : ");
String marqueMotoSupprimer = scanner.nextLine();
System.out.print("Modèle : ");
String modeleMotoSupprimer = scanner.nextLine();
for (Moto moto : this.getListeMotos()) {
if (moto.getMarque().equals(marqueMotoSupprimer) && moto.getModele().equals(modeleMotoSupprimer)) {
this.supprimerMoto(moto);
break;
}
}
break;
case 3:
System.out.print("Marque : ");
String marqueCamionSupprimer = scanner.nextLine();
System.out.print("Modèle : ");
String modeleCamionSupprimer = scanner.nextLine();
for (Camion camion : this.getListeCamions()) {
if (camion.getMarque().equals(marqueCamionSupprimer) && camion.getModele().equals(modeleCamionSupprimer)) {
this.supprimerCamion(camion);
break;
}
}
break;
}
break;
case 0:
System.out.println("Au revoir !");
break;
default:
System.out.println("Choix invalide.");
}
} while (choix != 0);
}
}