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 Vehicle possède également deux méthodes abstraites start() et accelerate() qui seront définies dans les classes dérivées et qui afficheront des messages personnalisés.
  • La méthode toString() de la classe Vehicle retourne une chaîne de caractères qui contient les valeurs du matricule, de l’année du modèle et du prix.
  • Les classes Car et Truck étendent la classe Vehicle en définissant concrètement les méthodes start() et accelerate() en affichant des messages personnalisés.

Travail à faire

  • Créer la classe abstraite Vehicle
  • Créer les classes Truck et Car
  • Créer une classe Test pour tester toutes les fonctionnalités des classes Car et Truck
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);
	}

}