diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 09be1d7..23bb511 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -37,7 +37,7 @@ "state": { "type": "markdown", "state": { - "file": "ISEN/JAVA/CIPA4/Exercice Gestion d'une bibliothèque en Java.md", + "file": "ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.md", "mode": "source", "source": false, "backlinks": true, @@ -52,7 +52,7 @@ } }, "icon": "lucide-file", - "title": "Exercice Gestion d'une bibliothèque en Java" + "title": "Exercice Gestion d'un parc automobile en Java" } }, { @@ -243,9 +243,11 @@ }, "active": "cbcc85c28ced408b", "lastOpenFiles": [ + "ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.pdf", + "ISEN/JAVA/CIPA4/Exercice Gestion d'une bibliothèque en Java.md", + "ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.md", "ISEN/JAVA/CIPA4/Exercice Gestion d'une bibliothèque en Java.pdf", "ISEN/JAVA/CIPA4/CM/05-swing.pdf", - "ISEN/JAVA/CIPA4/Exercice Gestion d'une bibliothèque en Java.md", "ISEN/JAVA/CIPA4/CM/04-classes-abstraites-interfaces.pdf", "ISEN/JAVA/CIPA4/Java Cours 1.md", "ISEN/BDD/CIPA4/Cas modélisation alternatifs.md", @@ -259,7 +261,6 @@ "ISEN/BDD/CIR2/Td1.pdf", "ISEN/English/CIPA4/My CIPA3 year Reflexive feedback.md", "ISEN/English/CIPA4/~$ CIPA3 year Reflexive feedback.docx", - "ISEN/English/CIPA4/My CIPA3 year Reflexive feedback.docx", "ISEN/BDD/CIPA4/BDD Cours 1.md", "Pasted image 20250905143950.png", "Pasted image 20240505210657.png", @@ -289,7 +290,6 @@ "ISEN/Developpement durable/CIPA3/Developpement durable Cours 1.md", "ISEN/Developpement durable/CIPA3/Figure Félix Marquet.md", "ISEN/STM32/CIPA3/STM32 Cours 3.md", - "ISEN/STM32/CIPA3/STM32 Cours 2.md", "ISEN/Modelec/NB point.canvas", "ISEN/Réseau/A2/TP Ansible et docker.canvas", "Untitled.canvas", diff --git a/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.md b/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.md new file mode 100644 index 0000000..ceccb26 --- /dev/null +++ b/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.md @@ -0,0 +1,144 @@ +# Exercice : Gestion d'un parc automobile en Java + +## Contexte +Vous êtes chargé·e de modéliser un parc automobile pour une entreprise de location. Le parc contient des **voitures thermiques**, des **voitures électriques** et des **camions**. Chaque type de véhicule a des caractéristiques et des comportements spécifiques. Vous utiliserez des **classes abstraites** et des **interfaces** pour structurer votre code. + +--- + +## Partie 1 : Classe abstraite et héritage + +### 1. Classe abstraite `Vehicule` +Créez une classe abstraite `Vehicule` qui représente un véhicule générique. + +**Attributs :** +- `marque` (String) +- `modele` (String) +- `annee` (int) +- `kilometrage` (double) + +**Méthodes :** +- Un constructeur pour initialiser les attributs. +- Les accesseurs (getters) et mutateurs (setters) pour chaque attribut. +- Une méthode abstraite `afficherCaracteristiques()` : chaque sous-classe devra implémenter cette méthode pour afficher ses caractéristiques spécifiques. +- Une méthode concrète `rouler(double km)` : ajoute les kilomètres parcourus au kilométrage total. + +--- + +### 2. Classe `VoitureThermique` (héritage de `Vehicule`) +Créez une classe `VoitureThermique` qui hérite de `Vehicule`. + +**Attributs supplémentaires :** +- `typeCarburant` (String, ex: "Essence", "Diesel") +- `reservoir` (double, en litres) + +**Méthodes :** +- Un constructeur pour initialiser les attributs. +- Implémentez la méthode `afficherCaracteristiques()` pour afficher les détails de la voiture thermique. +- Ajoutez une méthode `fairePlein(double litres)` : ajoute des litres au réservoir et affiche un message. + +--- + +### 3. Classe `VoitureElectrique` (héritage de `Vehicule`) +Créez une classe `VoitureElectrique` qui hérite de `Vehicule`. + +**Attributs supplémentaires :** +- `autonomie` (double, en km) +- `niveauBatterie` (int, en %) + +**Méthodes :** +- Un constructeur pour initialiser les attributs. +- Implémentez la méthode `afficherCaracteristiques()` pour afficher les détails de la voiture électrique. +- Ajoutez une méthode `recharger()` : met le niveau de batterie à 100% et affiche un message. + +--- + +### 4. Classe `Camion` (héritage de `Vehicule`) +Créez une classe `Camion` qui hérite de `Vehicule`. + +**Attributs supplémentaires :** +- `chargeMax` (double, en tonnes) +- `chargeActuelle` (double, en tonnes) + +**Méthodes :** +- Un constructeur pour initialiser les attributs. +- Implémentez la méthode `afficherCaracteristiques()` pour afficher les détails du camion. +- Ajoutez une méthode `charger(double poids)` : ajoute une charge au camion si la charge maximale n'est pas dépassée. + +--- + +## Partie 2 : Interfaces et comportements spécifiques + +### 5. Interface `Revisable` +Créez une interface `Revisable` qui définit les comportements suivants : +- `faireRevision()` : affiche un message indiquant que le véhicule est en révision. +- `terminerRevision()` : affiche un message indiquant que la révision est terminée. + +**Faites implémenter cette interface par toutes les sous-classes de `Vehicule`.** + +--- + +### 6. Interface `Locable` +Créez une interface `Locable` qui définit les comportements suivants : +- `louer()` : affiche un message indiquant que le véhicule est loué. +- `retourner()` : affiche un message indiquant que le véhicule est retourné. + +**Faites implémenter cette interface uniquement par les classes `VoitureThermique` et `VoitureElectrique`.** + +--- + +## Partie 3 : Gestion du parc automobile + +### 7. Classe `ParcAutomobile` +Créez une classe `ParcAutomobile` avec les attributs et méthodes suivants : + +**Attributs :** +- `listeVehicules` (ArrayList de Vehicules) + +**Méthodes :** +- Un constructeur pour initialiser la liste de véhicules. +- `ajouterVehicule(Vehicule v)` : ajoute un véhicule au parc. +- `afficherParc()` : affiche les caractéristiques de tous les véhicules du parc. +- `faireReviserTout()` : appelle la méthode `faireRevision()` sur tous les véhicules du parc. + +--- + +## Partie 4 : Test et interaction + +### 8. Classe `Main` +Créez une classe `Main` avec une méthode `main()` pour tester votre implémentation. + +**Dans la méthode `main()` :** +- Créez au moins une voiture thermique, une voiture électrique et un camion. +- Ajoutez-les au parc automobile. +- Faites rouler chaque véhicule sur une distance donnée. +- Faites le plein ou rechargez les voitures, et chargez le camion. +- Louez une voiture thermique et une voiture électrique. +- Affichez les caractéristiques de tous les véhicules du parc. +- Lancez une révision pour tous les véhicules. + +--- + +## Exemple d'exécution attendu + +Caractéristiques de la voiture thermique : +Marque : Renault +Modèle : Mégane +Année : 2019 +Kilométrage : 85000.0 km +Carburant : Essence +Réservoir : 47.0 litres + +Voiture thermique louée. +Camion en révision. + + +--- + +## Consignes supplémentaires +- Respectez l'encapsulation (attributs privés, getters/setters publics). +- Utilisez le mot-clé `super` dans les constructeurs des classes filles. +- Gérez les cas où la charge du camion dépasse sa capacité maximale. + +--- + +© Félix MARQUET \ No newline at end of file diff --git a/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.pdf b/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.pdf new file mode 100644 index 0000000..6236ee7 Binary files /dev/null and b/ISEN/JAVA/CIPA4/Exercice Gestion d'un parc automobile en Java.pdf differ