Atelier 1.2 exercice E: constructeur et super
#
Objectifs #
-
Je crée la classe
MonAtelier1_2_E
qui hérite de la classeAtelier1_2_E
-
Je recopie les classes suivantes de l'
atelier1_2_D
:Vehicule
Auto
Camion
Mobilette
Moto
-
Je recopie les interfaces suivantes de l'
atelier1_2_D
:Rouleur
Formateur
-
J’ajoute un constructeur
Vehicule(double totalKilometres)
-
J’ajoute un constructeur
Camion(double totalKilometres, double chargementEnKilos)
-
Dans
Auto
, je redéfinis la méthodeformater
pour retourner:- la même chose que
Vehicule.formater
, mais en ajoutant" J'adore mon XXX!"
- où:
XXX
sera remplacé par le nom du véhicule (iciauto
)
- où:
- la même chose que
-
Dans
Mobilette
, je redéfinis la méthoderouler
pour:- 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ù
JOURS
est 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
commit
et 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_E
et j’ajouteextends Atelier1_2_E
-
J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter le
import
deAtelier1_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
,Moto
etVehicule
- 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
Rouleur
etFormateur
- 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
,Moto
etMobilette
É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_E
et 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: