Exercices sur l'héritage
Ces exercices vous aideront à maîtriser les concepts d'héritage, de constructeurs de base, de membres protégés et de polymorphisme.
🔵 Section 1 : Bases de l'héritage
Exercice 1 : La relation "Est un"
Créez une classe de base Vehicule avec une propriété Marque (string) et une méthode Klaxonner() qui affiche "Bip Bip !". Créez ensuite une classe Voiture qui hérite de Vehicule. Testez en instanciant une Voiture et en appelant Klaxonner().
Exercice 2 : Extension de propriétés
En utilisant les classes de l'exercice 1, ajoutez à la classe Voiture une propriété NombreDePortes (int). Vérifiez qu'un objet Voiture possède bien à la fois une Marque et un NombreDePortes.
Exercice 3 : L'héritage est unidirectionnel
Créez une classe Velo qui hérite de Vehicule. Si vous ajoutez une propriété TypeDeGuidon à Velo, est-ce qu'une Voiture y a accès ? Pourquoi ?
🟣 Section 2 : Constructeurs et mot-clé base
Exercice 4 : Passage de paramètres simple
Créez une classe Animal avec un constructeur qui prend un nom. Créez une classe Chien qui hérite de Animal et dont le constructeur passe le nom à la classe de base en utilisant : base(nom).
Exercice 5 : Plusieurs paramètres
Créez une classe Personne avec les propriétés Nom et Prenom initialisées par un constructeur. Créez une classe Employe qui hérite de Personne et ajoute une propriété Salaire. Le constructeur d'Employe doit recevoir les 3 informations et en passer 2 à la classe de base.
Exercice 6 : Constructeur par défaut vs Paramétré
Si la classe de base n'a qu'un constructeur avec paramètres, que se passe-t-il si la classe dérivée ne définit pas de constructeur ? Essayez et expliquez l'erreur de compilation.
Exercice 7 : Appeler une méthode de la classe de base
Dans une classe Robot, créez une méthode Allumer(). Dans une sous-classe RobotNettoyeur, créez une méthode Initialiser() qui appelle base.Allumer() avant d'afficher "Nettoyage en cours...".
🟤 Section 3 : Le modificateur protected
Exercice 8 : Accès restreint
Créez une classe CompteBancaire avec un champ protected decimal _solde. Créez une classe CompteEpargne qui hérite de CompteBancaire. Ajoutez une méthode AjouterInteret() dans CompteEpargne qui modifie directement _solde. Est-ce que _solde est accessible depuis le Main ?
Exercice 9 : Calcul protégé
Dans une classe Forme, créez une propriété protected double Multiplicateur = 1.0. Créez une classe Carre qui utilise ce multiplicateur pour ajuster son calcul d'aire.
⚫ Section 4 : virtual et override
Exercice 10 : Le polymorphisme simple
Créez une classe Oiseau avec une méthode virtual void Chanter() qui affiche "Cui cui". Créez une classe Corbeau qui override cette méthode pour afficher "Croa croa".
Exercice 11 : Redéfinition de ToString()
Toutes les classes en C# héritent de la classe Object. Redéfinissez (override) la méthode ToString() dans une classe Produit (avec Nom et Prix) pour qu'elle retourne une chaîne formatée comme : "Produit: [Nom] - [Prix]$".
Exercice 12 : Utilisation de base dans un override
Créez une classe Message. Sa méthode virtual void Afficher() écrit "Début du message :". Créez une classe MessageUrgent. Son override de Afficher() doit appeler base.Afficher() PUIS écrire "C'EST URGENT !".
Exercice 13 : Hiérarchie à 3 niveaux
Créez Animal -> Mammifere -> Humain. Ajoutez une méthode virtual void Respirer() dans Animal qui affiche "L'animal respire...". Redéfinissez-la à chaque niveau pour ajouter des précisions (ex: "Le mammifère respire avec des poumons", "L'humain respire profondément").
🔘 Section 5 : Défis et synthèse
Exercice 14 : Système de paie
Créez une classe Employe avec une méthode virtual decimal CalculerPaie(). Par défaut, cette méthode doit retourner 0.
- EmployeSalarie : paie fixe mensuelle (redéfinit la méthode).
- EmployeHoraire : taux horaire * heures travaillées (redéfinit la méthode).
Créez une liste List<Employe> contenant les deux types et affichez la paie de chacun via une boucle.
Exercice 15 : Le mini-jeu RPG
Créez une classe Hero avec :
- Propriétés Nom, PointsDeVie.
- Méthode virtual void Attaquer(). Par défaut, elle affiche "[Nom] donne un coup de poing !".
Créez Guerrier et Mage.
- Le Guerrier override la méthode pour attaquer avec une épée.
- Le Mage override la méthode pour attaquer avec un sort ET consomme du mana (une propriété propre au mage).
Gérez les points de vie via une propriété protected pour que seul le Hero et ses classes dérivées puissent les modifier lors d'un soin par exemple.