Objectif
- Créer une classe enfant abstraite
- Dériver une classe abstraite
- Implémenter des méthodes abstraites
Enoncé du problème
Un parc auto se compose de voitures et de camions qui ont des caractéristiques communes regroupées dans une classe Vehicle.
- Chaque véhicule est caractérisé par son matricule, l’année de son modèle, son prix.
- Lors de la création d’un véhicule, son matricule est incrémenté selon le nombre de véhicules créés.
- Tous les attributs de la classe
Vehiclesont privés, ce qui oblige la création des accesseurs (get…) et des mutateurs (set….). - La classe
Vehiclepossède également deux méthodes abstraitesstart()etaccelerate()qui seront définies dans les classes dérivées et qui afficheront des messages personnalisés. - La méthode
toString()de la classeVehicleretourne une chaîne de caractères qui contient les valeurs du matricule, de l’année du modèle et du prix. - Les classes
CaretTruckétendent la classeVehicleen définissant concrètement les méthodesstart()etaccelerate()en affichant des messages personnalisés.
Travail à faire
- Créer la classe abstraite
Vehicle - Créer les classes
TrucketCar - Créer une classe
Testpour tester toutes les fonctionnalités des classesCaretTruck
Solution du problème
public abstract class Vehicle {
private static int nVehicles;
private int id;
protected int year;
protected int price;
Vehicle(int year, int price){
this.year = year;
this.price = price;
nVehicles++;
id = nVehicles;
}
abstract void start();
abstract void accelerate();
@Override
public String toString() {
return "Vehicle " + id + ". Built in " + year + ", price : "
+ price; }
}
public class Truck extends Vehicle{
Truck(int year, int price){
super(year, price);
}
@Override
void accelerate() {
System.out.println("The truck accelerates");
}
@Override
void start() {
System.out.println("Starting the truck");
}
}
package course.inheritance.online_exercises.vehicle;
public class Car extends Vehicle{
Car(int year, int price){
super(year, price);
}
@Override
void accelerate() {
System.out.println("The car goes faster");
}
@Override
void start() {
System.out.println("Let's start the car");
}
@Override
public String toString() {
return super.toString() + ". Is a car";
}
}
package course.inheritance.online_exercises.vehicle;
public class Test {
public static void main(String[] args) {
Truck t1 = new Truck(2022, 65000);
Car c1 = new Car(2014, 23000);
Truck t2 = new Truck(2022, 48000);
System.out.println(t1);
System.out.println(c1);
System.out.println(t2);
}
}
