Défi : Encapsulation
Le code de base comporte deux classes appelées Vehicle
et Car
. Certains champs doivent être cachés tandis que d'autres doivent être exposés.
- Ajuster la visibilité des champs
type
etmodelYear
dansVehicle
afin qu'ils ne soient pas accessibles depuis l'extérieur de la classe, y compris les classes dérivées ; - Créer une nouvelle méthode appelée
getModelYear
à l'intérieur de la classeVehicle
afin qu'elle retourne la valeur demodelYear
. Cette méthode doit être accessible depuis n'importe où. Cette méthode permettra aux utilisateurs de cette classe d'accéder àmodelYear
sans pouvoir le modifier depuis l'extérieur ; - Les propriétés
ownerName
etfuel
ne doivent être accessibles depuis aucun endroit ; - Créer une méthode appelée
getFuel
qui retourne la valeur defuel
; - Créer une méthode appelée
addFuel
qui prend en argument unfloat
nomméfuel
. À l'intérieur de la méthode, ajouter la valeur defuel
à la propriétéfuel
(this.fuel
).
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364using System; class Vehicle { // Edit code below this line public string type; public int modelYear; // Edit code above this line // Create a method below this line // Create a method above this line public Vehicle(string type, int modelYear) { this.type = type; this.modelYear = modelYear; } } class Car : Vehicle { // Edit code below this line public string brandName; public string numberPlate; public string ownerName; public float fuel; // Edit code above this line // Create a method below this line // Create a method above this line public Car(int modelYear, string brandName, string numberPlate, string ownerName, float fuel) : base("Car", modelYear) { this.brandName = brandName; this.numberPlate = numberPlate; this.ownerName = ownerName; this.fuel = fuel; } } class Program { static void Main() { // Create an instance of Car Car myCar = new Car(2022, "Toyota", "ABC123", "John Doe", 50.0f); // Accessing properties and methods from Car class Console.WriteLine($"Brand: {myCar.brandName}"); Console.WriteLine($"Number Plate: {myCar.numberPlate}"); // Accessing getModelYear method from Vehicle class Console.WriteLine($"Model Year: {myCar.getModelYear()}"); // Accessing getFuel method from Car class Console.WriteLine($"Fuel: {myCar.getFuel()}"); // Adding fuel using addFuel method myCar.addFuel(10.0f); Console.WriteLine($"After adding fuel, new Fuel: {myCar.getFuel()}"); } }
- Les méthodes
getModelYear
etgetFuel
sont des accesseurs (getters). Elles ne prennent aucun argument, sontpublic
et retournent uniquement une valeur. - La méthode
addFuel
est un mutateur (setter). Elle estpublic
et prend un argumentfloat
nomméfuel
. Pour mettre à jour la valeur de fuel, il peut être nécessaire d'utiliser le mot-cléthis
. (this.fuel += fuel
)
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576using System; class Vehicle { // Edit code below this line private string type; private int modelYear; // Edit code above this line // Create a method below this line public int getModelYear() { return modelYear; } // Create a method above this line public Vehicle(string type, int modelYear) { this.type = type; this.modelYear = modelYear; } } class Car : Vehicle { // Edit code below this line public string brandName; public string numberPlate; private string ownerName; private float fuel; // Edit code above this line // Create a method below this line public float getFuel() { return fuel; } public void addFuel(float fuel) { this.fuel += fuel; } // Create a method above this line public Car(int modelYear, string brandName, string numberPlate, string ownerName, float fuel) : base("Car", modelYear) { this.brandName = brandName; this.numberPlate = numberPlate; this.ownerName = ownerName; this.fuel = fuel; } } class Program { static void Main() { // Create an instance of Car Car myCar = new Car(2022, "Toyota", "ABC123", "John Doe", 50.0f); // Accessing properties and methods from Car class Console.WriteLine($"Brand: {myCar.brandName}"); Console.WriteLine($"Number Plate: {myCar.numberPlate}"); // Accessing getModelYear method from Vehicle class Console.WriteLine($"Model Year: {myCar.getModelYear()}"); // Accessing getFuel method from Car class Console.WriteLine($"Fuel: {myCar.getFuel()}"); // Adding fuel using addFuel method myCar.addFuel(10.0f); Console.WriteLine($"After adding fuel, new Fuel: {myCar.getFuel()}"); } }
Tout était clair ?
Merci pour vos commentaires !
Section 5. Chapitre 7
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Suggested prompts:
Can you show me the base code for the `Vehicle` and `Car` classes?
Could you clarify which programming language this is for?
Do you need an explanation of how to implement field visibility in classes?
Awesome!
Completion rate improved to 2.04
Défi : Encapsulation
Glissez pour afficher le menu
Le code de base comporte deux classes appelées Vehicle
et Car
. Certains champs doivent être cachés tandis que d'autres doivent être exposés.
- Ajuster la visibilité des champs
type
etmodelYear
dansVehicle
afin qu'ils ne soient pas accessibles depuis l'extérieur de la classe, y compris les classes dérivées ; - Créer une nouvelle méthode appelée
getModelYear
à l'intérieur de la classeVehicle
afin qu'elle retourne la valeur demodelYear
. Cette méthode doit être accessible depuis n'importe où. Cette méthode permettra aux utilisateurs de cette classe d'accéder àmodelYear
sans pouvoir le modifier depuis l'extérieur ; - Les propriétés
ownerName
etfuel
ne doivent être accessibles depuis aucun endroit ; - Créer une méthode appelée
getFuel
qui retourne la valeur defuel
; - Créer une méthode appelée
addFuel
qui prend en argument unfloat
nomméfuel
. À l'intérieur de la méthode, ajouter la valeur defuel
à la propriétéfuel
(this.fuel
).
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364using System; class Vehicle { // Edit code below this line public string type; public int modelYear; // Edit code above this line // Create a method below this line // Create a method above this line public Vehicle(string type, int modelYear) { this.type = type; this.modelYear = modelYear; } } class Car : Vehicle { // Edit code below this line public string brandName; public string numberPlate; public string ownerName; public float fuel; // Edit code above this line // Create a method below this line // Create a method above this line public Car(int modelYear, string brandName, string numberPlate, string ownerName, float fuel) : base("Car", modelYear) { this.brandName = brandName; this.numberPlate = numberPlate; this.ownerName = ownerName; this.fuel = fuel; } } class Program { static void Main() { // Create an instance of Car Car myCar = new Car(2022, "Toyota", "ABC123", "John Doe", 50.0f); // Accessing properties and methods from Car class Console.WriteLine($"Brand: {myCar.brandName}"); Console.WriteLine($"Number Plate: {myCar.numberPlate}"); // Accessing getModelYear method from Vehicle class Console.WriteLine($"Model Year: {myCar.getModelYear()}"); // Accessing getFuel method from Car class Console.WriteLine($"Fuel: {myCar.getFuel()}"); // Adding fuel using addFuel method myCar.addFuel(10.0f); Console.WriteLine($"After adding fuel, new Fuel: {myCar.getFuel()}"); } }
- Les méthodes
getModelYear
etgetFuel
sont des accesseurs (getters). Elles ne prennent aucun argument, sontpublic
et retournent uniquement une valeur. - La méthode
addFuel
est un mutateur (setter). Elle estpublic
et prend un argumentfloat
nomméfuel
. Pour mettre à jour la valeur de fuel, il peut être nécessaire d'utiliser le mot-cléthis
. (this.fuel += fuel
)
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576using System; class Vehicle { // Edit code below this line private string type; private int modelYear; // Edit code above this line // Create a method below this line public int getModelYear() { return modelYear; } // Create a method above this line public Vehicle(string type, int modelYear) { this.type = type; this.modelYear = modelYear; } } class Car : Vehicle { // Edit code below this line public string brandName; public string numberPlate; private string ownerName; private float fuel; // Edit code above this line // Create a method below this line public float getFuel() { return fuel; } public void addFuel(float fuel) { this.fuel += fuel; } // Create a method above this line public Car(int modelYear, string brandName, string numberPlate, string ownerName, float fuel) : base("Car", modelYear) { this.brandName = brandName; this.numberPlate = numberPlate; this.ownerName = ownerName; this.fuel = fuel; } } class Program { static void Main() { // Create an instance of Car Car myCar = new Car(2022, "Toyota", "ABC123", "John Doe", 50.0f); // Accessing properties and methods from Car class Console.WriteLine($"Brand: {myCar.brandName}"); Console.WriteLine($"Number Plate: {myCar.numberPlate}"); // Accessing getModelYear method from Vehicle class Console.WriteLine($"Model Year: {myCar.getModelYear()}"); // Accessing getFuel method from Car class Console.WriteLine($"Fuel: {myCar.getFuel()}"); // Adding fuel using addFuel method myCar.addFuel(10.0f); Console.WriteLine($"After adding fuel, new Fuel: {myCar.getFuel()}"); } }
Tout était clair ?
Merci pour vos commentaires !
Section 5. Chapitre 7