Atelier 1.2 exercice E: constructeur et super
#
Objectifs #
-
Je crée la classe
MonAtelier1_2_Equi hérite de la classeAtelier1_2_E -
Je recopie les classes suivantes de l’
atelier1_2_D:VehiculeAutoCamionMobiletteMoto
-
Je recopie les interfaces suivantes de l’
atelier1_2_D:RouleurFormateur
-
J’ajoute un constructeur
Vehicule(double totalKilometres) -
J’ajoute un constructeur
Camion(double totalKilometres, double chargementEnKilos) -
Dans
Auto, je redéfinis la méthodeformaterpour retourner:- la même chose que
Vehicule.formater, mais en ajoutant" J'adore mon XXX!"- où:
XXXsera remplacé par le nom du véhicule (iciauto)
- où:
- la même chose que
-
Dans
Mobilette, je redéfinis la méthoderoulerpour:- faire d’abord la même chose que
Vehicule.rouler, puis- afficher
"La mobilette devrait déjà être remisée!"- si la date actuelle est plus grande que le 1er octobre 2020
- sinon afficher
"ATTENTION: il reste JOURS avant de remiser la mobilette"- où
JOURSest le nombre de jours qu’il reste avant le 1er octobre 2020
- où
- afficher
- faire d’abord la même chose que
-
Je corrige les erreurs de compilation
-
J’ajoute une méthode
mainà la classeMonAtelier1_2_E:public static void main(String[] args) { new MonAtelier1_2_E().valider(); } -
J’implante les méthodes pour remplir le contrat du
Atelier1_2_E, p.ex:@Override public Object creerMoto(double kilometrage) { return new Moto(kilometrage); } @Override public Object creerMobilette(double kilometrage) { return new Mobilette(kilometrage); } @Override public Object creerAuto(double kilometrage) { return new Auto(kilometrage); } @Override public Object creerCamion(double kilometrage, double chargementEnKilos) { return new Camion(kilometrage, chargementEnKilos); }- NOTE: il y a maintenant des paramètres à passer au constructeur
-
J’exécute mon projet et je valide mes classes et mes méthodes
-
J’ajoute les fichiers du projet dans Git
-
Je fais un
commitet unpush
Réalisation #
Étape 01: créer la classe MonAtelier1_2_E
#
- Je crée une nouvelle classe nommée
MonAtelier1_2_E- Clique-droit sur le projet => New => Class
- Name:
MonAtelier1_2_E
- Name:
- Clique-droit sur le projet => New => Class
Étape 02: hériter de Atelier1_2_E #
-
J’ouvre
MonAtelier1_2_Eet j’ajouteextends Atelier1_2_E -
J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter le
importdeAtelier1_2_E -
J’utilise Ctrl+.Eclipse: Ctrl+1 pour générer les méthodes manquantes
- option
add unimplemented methods
- option
Étape 03: copier les classes et les interfaces à partir de atelier1_2_D
#
-
Pour les classes
Auto,Camion,Mobilette,MotoetVehicule- je fais un copier-coller:
- à partir de la classe située dans le paquet
atelier1_2_D - vers le paquet
atelier1_2_E
- à partir de la classe située dans le paquet
- je fais un copier-coller:
-
Pour les interfaces
RouleuretFormateur- je fais un copier-coller:
- à partir de l’interface située dans le paquet
atelier1_2_D - vers le paquet
atelier1_2_E
- à partir de l’interface située dans le paquet
- je fais un copier-coller:
Étape 04: ajouter les constructeurs #
-
Dans
Vehicule, j’ajoute le constructeur suivant:public Vehicule(double totalKilometres) { this.totalKilometres = totalKilometres; } -
Dans
Camion, j’ajoute le constructeur suivant:public Camion(double totalKilometres, double chargementEnKilos) { super(totalKilometres); this.chargementEnKilos = chargementEnKilos; } -
J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter les constructeurs de
Auto,MotoetMobilette
Étape 05: redéfinir formater dans Auto
#
-
Dans
Auto, je redéfinisformater:@Override public String formater(){ return super.formater() + " J'adore mon " + nomVehicule() + "!"; }
Étape 06: redéfinir rouler dans Mobilette
#
- Dans
Mobilette, j’ajoute un attribut pour la date limite:
public class Mobilette extends Vehicule {
private LocalDate dateLimite = LocalDate.of(2020, 10, 1);
- Dans
Mobilette, je redéfinis la méthoderouler
@Override
public void rouler(double kilometres) {
super.rouler(kilometres);
LocalDate aujourd_hui = LocalDate.now();
if(aujourd_hui.compareTo(dateLimite) >= 0) {
throw new RuntimeException("La mobilette devrait déjà être remisée!");
}else {
Period difference = Period.between(aujourd_hui, dateLimite);
System.out.println("ATTENTION: il reste " + difference.getDays() + " jours avant de remiser la mobilette");
}
}
Étape 07: ajouter la méthode main
#
- J’ouvre
MonAtelier1_2_Eet j’ajoute la méthodemain
public class MonAtelier1_2_E extends Atelier1_2_E {
public static void main(String[] args) {
new MonAtelier1_2_E().valider();
}
Étape 08: exécuter pour valider #
-
J’exécute mon programme
-
Je vérifie que la validation est réussie: