Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Kapselung | OOP-Prinzipien
C# Jenseits der Grundlagen

bookHerausforderung: Kapselung

Der Ausgangscode enthält zwei Klassen namens Vehicle und Car. Einige Felder müssen verborgen, andere hingegen zugänglich gemacht werden.

  • Passe die Sichtbarkeit der Felder type und modelYear in Vehicle so an, dass sie von außerhalb der Klasse, einschließlich abgeleiteter Klassen, nicht zugänglich sind;
  • Erstelle eine neue Methode namens getModelYear innerhalb der Klasse Vehicle, sodass sie den Wert von modelYear zurückgibt. Diese Methode soll von überall aus zugänglich sein. Sie ermöglicht es Nutzern dieser Klasse, auf modelYear zuzugreifen, ohne es von außen ändern zu können;
  • Die Eigenschaften ownerName und fuel dürfen von nirgendwo aus zugänglich sein;
  • Erstelle eine Methode namens getFuel, die den Wert von fuel zurückgibt;
  • Erstelle eine Methode namens addFuel, die ein Argument vom Typ float mit dem Namen fuel entgegennimmt. Innerhalb der Methode soll der Wert von fuel zur Eigenschaft fuel (this.fuel) addiert werden.
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
using 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()}"); } }
  1. Die Methoden getModelYear und getFuel sind Getter-Methoden. Sie nehmen keine Argumente entgegen, sind public und geben lediglich einen Wert zurück.
  2. Die Methode addFuel ist eine Setter-Methode. Sie ist public und nimmt ein Argument vom Typ float mit dem Namen fuel entgegen. Zum Aktualisieren des Wertes von fuel muss möglicherweise das Schlüsselwort this verwendet werden. (this.fuel += fuel)
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
using 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()}"); } }
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

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

bookHerausforderung: Kapselung

Swipe um das Menü anzuzeigen

Der Ausgangscode enthält zwei Klassen namens Vehicle und Car. Einige Felder müssen verborgen, andere hingegen zugänglich gemacht werden.

  • Passe die Sichtbarkeit der Felder type und modelYear in Vehicle so an, dass sie von außerhalb der Klasse, einschließlich abgeleiteter Klassen, nicht zugänglich sind;
  • Erstelle eine neue Methode namens getModelYear innerhalb der Klasse Vehicle, sodass sie den Wert von modelYear zurückgibt. Diese Methode soll von überall aus zugänglich sein. Sie ermöglicht es Nutzern dieser Klasse, auf modelYear zuzugreifen, ohne es von außen ändern zu können;
  • Die Eigenschaften ownerName und fuel dürfen von nirgendwo aus zugänglich sein;
  • Erstelle eine Methode namens getFuel, die den Wert von fuel zurückgibt;
  • Erstelle eine Methode namens addFuel, die ein Argument vom Typ float mit dem Namen fuel entgegennimmt. Innerhalb der Methode soll der Wert von fuel zur Eigenschaft fuel (this.fuel) addiert werden.
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
using 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()}"); } }
  1. Die Methoden getModelYear und getFuel sind Getter-Methoden. Sie nehmen keine Argumente entgegen, sind public und geben lediglich einen Wert zurück.
  2. Die Methode addFuel ist eine Setter-Methode. Sie ist public und nimmt ein Argument vom Typ float mit dem Namen fuel entgegen. Zum Aktualisieren des Wertes von fuel muss möglicherweise das Schlüsselwort this verwendet werden. (this.fuel += fuel)
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
using 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()}"); } }
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 7
some-alt