29 Fév2016
Les Classes abstraites - Véhicule
Objectif:
- Créer une classe abstraite.
- Dériver une classe abstraite.
- Implémenter une méthode abstraite.
Énonce:
Un parc auto se compose des voitures et des camions qui ont des caractéristiques communes regroupées dans la classe Véhicule.
- 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 véhicule sont supposés privés. ce qui oblige la création des accesseurs (get…) et des mutateurs (set….) ou les propriétés.
- La classe Véhicule possède également deux méthodes abstraites démarrer() et accélérer() qui seront définies dans les classes dérivées et qui afficheront des messages personnalisés.
- La méthode ToString() de la classe Véhicule 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 Voiture et Camion étendent la classe Véhicule en définissant concrètement les méthodes accélérer() et démarrer() en affichant des messages personnalisés.
Travail à faire:
- Créer la classe abstraite Véhicule.
- Créer les classes Camion et Voiture.
- Créer une classe Test qui permet de tester la classe Voiture et la classe Camion
La classe Véhicule:
//Auteur : CHAOULID //Copyright : Exelib.net abstract class Vehicule { private int matricule; private int modele; private double prix; private static int nb_vehicules = 0; public int Matricule { get { return matricule; } } public int Modele { get { return modele; } set { modele = value; } } public double Prix { get { return prix; } set { prix = value; } } public static int Nb_vehicules { get { return nb_vehicules; } } public Vehicule(int modele, double prix) { nb_vehicules++; matricule = nb_vehicules; this.modele = modele; this.prix = prix; } public abstract void Demarrer(); public abstract void Accelerer(); public override string ToString() { return "Matricule: " + matricule + " Modéle: " + modele + " Prix: " + prix; } }
La classe Voiture:
class Voiture : Vehicule { public Voiture(int modele, double prix) : base(modele, prix) { } public override void Demarrer() //Implémentation de la méthode abstraire Démarrer() { Console.Out.WriteLine("La voiture démarre...."); } public override void Accelerer() //Implémentation de la méthode abstraire accélérer() { Console.Out.WriteLine("La voiture Accélére...."); } public override string ToString() { return "Voiture_ "+base.ToString(); } }
La classe Camion:
class Camion : Vehicule { public Camion(int modele, double prix) : base(modele, prix) { } public override void Demarrer() { Console.Out.WriteLine("Le camion démarre...."); } public override void Accelerer() { Console.Out.WriteLine("Le camion Accélére...."); } public override string ToString() { return "Camion_ " + base.ToString(); } }
Le programme de test: (Exemple)
class Program { static void Main(string[] args) { Voiture v = new Voiture(2005,200000); Console.Out.WriteLine(v); v.Demarrer(); v.Accelerer(); Camion c = new Camion(2003, 4560000); Console.Out.WriteLine(c); c.Demarrer(); c.Accelerer(); Console.ReadKey(); } }