Kata Lösung | Klassenvererbung


Möchtest du dir die Angabe nochmals ansehen? Hier lang.

Da die Basisklasse abstrakt ist, werden Funktionen und Properties lediglich deklariert - sie können nicht implementiert werden.

abstract public class Shape { protected string color; protected string name; protected string Color // nur getter und setter. keine values { get; set; } protected string Name { get; set; } abstract protected void WhatShapeIsThis(); // nur dekleration }
text/x-csharp

Es gilt dasselbe wie bei der Basisklasse "Shape", mit dem Unterschied, dass man jetzt noch genauere und spezifischere Properties oder Funktionen deklariert, die nur in dieser Dimension vorhanden sind (z.B. Fläche). Deshalb ist diese Schicht auch notwendig, um die Grundstruktur der Dimensionen zu beschreiben.

Eine Linie hat nur eine Eigenschaft: Die Länge

abstract public class Shape1D : Shape { abstract protected void getLength(); }
text/x-csharp

Jede Form in der 2. Dimension hat eine Fläche und einen Umfang.

abstract public class Shape2D : Shape { protected double Area { get; set; } protected double Circumference { get; set; } abstract protected double getArea(); // Methoden der 2 Dimensionalen Formen abstract protected double getCircumference(); }
text/x-csharp

Die dreidimensionalen Formen haben ebenfalls eine Fläche, aber anstatt dem Umfang das Volumen.

abstract public class Shape3D : Shape { protected double Area { get; set; } protected double Volume { get; set; } abstract protected double getArea(); abstract protected double getVolume(); }
text/x-csharp

In den jeweiligen Formen, z.B. Rechteck, wird nun jedem Element, wie Properties und Funktionen, ein Wert zugewiesen. Die Formeln und weiteres sind aber selbst herauszufinden!

Es müssen die Inhalte der Klasse implementiert werden, die in den vorherigen abstrakten Klassen deklariert wurden. 
In der Klasse "StraightLine" wäre dies die Funktion "WhatShapeIsThis()" aus der Funktion "Shape", und die Funktion "getLength()" aus der Basisklasse "Shape1D".

class StraightLine : Shape1D { private double length; StraightLine(double length) { this.length = length; } protected override void getLength() { Console.WriteLine("Die Linie ist " + length.ToString() + " lang."); } protected override void WhatShapeIsThis() { Console.WriteLine("Es handelt sich um eine Linie"); } }
text/x-csharp

In der Klasse "Rectangle" fehlen nun die Funktoinen "WhatShapeIsThis()", "getArea()" und "getCircumference()".

class Rectangle : Shape2D { private double length, width; public Rectangle (double a, double b) { this.length = a; this.width = b; } protected override double getArea() { return length * width; } protected override double getCircumference() { return (length + width) * 2; } protected override void WhatShapeIsThis() { Console.WriteLine("Es handelt sich um ein Rechteck"); } }
text/x-csharp

In der Klasse "Cube" müssen die Funktionen "WhatShapeIsThis()", "getArea()" und "getVolume()" vorhanden sein.

class Cube : Shape3D { private double sidelength; public Cube (double s) { this.sidelength = s; } protected override double getVolume() { return sidelength * sidelength * sidelength; } protected override double getArea() { return sidelength * sidelength * 6; } protected override void WhatShapeIsThis() { Console.WriteLine("Es handelt sich um einen Würfel"); } }
text/x-csharp
Übersicht der Katas

Hier findest du die Erklärung zum Begriff "Katas" und eine Übersicht aller Programmierübungen.

C# Kata | Zahlen sortieren

Mit dieser Kata übst du, anhand verschiedener Lösungen, zu sortieren.

C# Kata | Unit Testing

Mit Unit Tests findest du heraus, ob die Funktion wie gewünscht funktioniert. Lerne, wie das geht!

Übersicht der C# Dojos

Hast du die Katas perfektioniert? Dann versuche, die C# Aufgaben zu lösen und dein Wissen zu vertiefen.

Übersicht der SQL Dojos

Wenn du neben C# auch Interesse an SQL hast, dann findest du hier interessante Übungen, um dein Wissen auf die Probe zu stellen.

Übung bewältigt? Dann ab ins Dojo!

Löse die Aufgaben und werde Programmier-Profi!

Dojos
Ultimative Coding-Roadmap

Unsere Roadmap weist dir den Weg zum Coding-Profi!

Programmier-Challenge

Stell dich der Programmier-Challenge und miss dich mit deinen Klassenkolleg*innen.

Bewerbung bei COUNT IT

Starte deine Karriere als Softwareentwickler*in bei COUNT IT.

Über Digital Dojo

Das Digital Dojo ist der virtuelle Übungsraum von COUNT IT.

Angehende Programmierer*innen, Code-Neulinge, Wiedereinsteiger*innen und Fortgeschrittene finden hier das nötige Rüstzeug für ihre Karriere.

Du möchtest deine Lehre bei COUNT IT starten? Dann bist du hier richtig - besiege deine Gegner im Dojo Game und sichere dir deine Lehrstelle!

Inspire your career.

Newsletter abonnieren

Der COUNT IT Newsletter liefert viermal jährlich interessante Neuigkeiten über das Unternehmen. Gleich anfordern!