Klassenstrukturen

Klassenstrukturen


Inhaltszusammenfassung

Was ist eine Klasse?

Eine Klasse ist wie ein Bauplan und enthält Operationen, welche mit der Klasse ausgeführt werden können. Eine Klasse hat nicht immer dieselben Variablenwerte, sie werden erst beim eigentlichen Erstellen der Klasse erstellt. Man kann es vergleichen mit einem Bauplan für zum Beispiel ein Auto. Jedes Auto hat ein Gewicht, eine Größe, einen Motor und eine Farbe. Der Bauplan ist immer gleich, aber je nachdem welche Werte ( Farbe, ...) man nimmt, kommt ein anderes Ergebnis mit derselben Struktur heraus.



Was ist eine Funktion?

Eine Funktion ist eine Gruppierung von Programmierbefehlen, die zusammen eine ganze Aufgabe bilden. Eine Aufgabe kann zum Beispiel sein: die größte Zahl in einer Zahlenmenge zu finden. Funktionen können übergebene Variablen haben oder auch keine. Diese Funktionen können einen Rückgabewert haben, müssen aber keinen haben. Für Funktionen, die keinen Rückgabewert haben, wird das Schlüsselword "void" verwendet.

<Zugriffsberechtigung> <Rückgabewert> <Methodenname>( Liste der Übergabevariablen )
{
Zu ausführender Code
}
Zugriffsberechtigung private (nur der Programmcode in der eigenen Klasse hat Erlaubnis) oder public (jeder der das Klassenobjekt besitzt darf diese Funktion benutzen)
Rückgabewert Datentyp (int, double, ...) oder void (keinen Rückgabewert)
Methodenname Über welchen Namen man die Funktion/Methode aufrufen kann




Durchführung

Erstelle in deinem Konsolenprojekt eine neue Klasse:
Klicke mit der rechten Maustaste auf dein Projekt und klicke auf "Hinzufügen" -> "Klasse..." oder "Neues Element".

Erstellen einer neuen Klasse auswählen

Danach öffnet sich ein neues Fenster. Gehe sicher, dass eine "Klasse" ausgewählt wurde und gib der Klasse den Namen "Vehicle" und drücke auf "Hinzufügen".

Erstellen einer neuen Klasse bestätigen

Aufbau einer Klasse (Bauplan):

Zuerst definiert man die Variablen, die die Klasse benötigt (wie z.B. Anzahl der Reifen). Danach kommt der Konstruktor. Damit wird ein neues Objekt aus dem Bauplan erschaffen. Nach dem Konstruktor kommen die Funktionen. Sie interagieren mit den Variablen in der Klasse und dem Benutzer bzw. anderem Code. Erstelle die Variablen der Klasse. Siehe Erklärung oben.

class Vehicle
{
// Member - Variablen
private int reifen;
private bool motor;
private double gewicht;
private String farbe;

// Constructor Erstellt ein leeres Vehicle.
public Vehicle()
{

}

// Constructor 2 Erstellt ein neues Vehicle mit diesen Optionen
public Vehicle(int reifen, bool motor, double gewicht, String farbe)
{
SetReifen(reifen);
SetMotor(motor);
SetGewicht(gewicht);
this.farbe = farbe;
}

// Methoden, Felder
public void SetReifen(int reifen)
{
// Aufruf: vehicle.SetReifen(4);
this.reifen = reifen;
}

public int GetReifen()
{
// Aufruf: int reifen = vehicle.GetReifen();
return this.reifen;
}

public void SetMotor(bool motor)
{
this.motor = motor;
}

public void SetGewicht(double gewicht)
{
this.gewicht = gewicht;
}

public double GetGewicht()
{
return this.gewicht;
}
}

In dieser Klasse wurde der Constructor überladen. Überladen bedeutet, dass man zwei Funktionen mit demselben Namen aber anderen Übergangsparametern erstellt und dann auch verwenden kann.



Aufruf einer Klasse im Programm

Um ein Vehicle zu erstellen, wechseln wir wieder in die Main-Klasse. Die Syntax, um ein neues Objekt zu erstellen, sieht folgendermaßen aus:   <Klassenname> <Variablenname> = new <Klassenname>( <optionale Parameter> ); Hierbei wird der Konstruktor der angegebenen Klasse aufgerufen. Da wir in unserem Programm zwei Konstruktoren haben ( einen mit Parameter und einen ohne Parameter ), sehen wir uns an wie man sie in einem praktischen Beispiel verwendet.

class Program
{
static void Main(string[] args)
{
// Variante 1
Vehicle auto = new Vehicle();
auto.SetReifen(4);
auto.SetMotor(true);
auto.SetGewicht(1000.0);

Console.WriteLine("Gewicht: " + auto.GetGewicht());

// Variante 2
Vehicle fahrrad = new Vehicle(2, false, 50.0, "blau");

Console.WriteLine("Gewicht: " + fahrrad.GetGewicht());

Console.ReadLine();
}
}

Wie man in dem obigen Code sehen kann, können die Funktionen einer Klasse so aufgerufen werden, indem man <Variablenname> . <Funktionname>( <optionale Parameter> ); schreibt.
Für die Ausgabe der Variablenwerte der Klasse kann man eine eigene Funktion erstellen, die diese Aufgabe übernimmt. Alles was man dafür tun muss, ist eine neue Funktion in der Vehicle-Klasse zu erstellen, in welcher der Code für die Konsolenausgabe enthalten ist.

public void GetVehicle()
{
Console.WriteLine("Unser Vehicle ist " + GetGewicht() + "kg schwer.");
Console.WriteLine("Es hat " + GetReifen() + " Reifen und die Farbe " + this.farbe);
if (this.motor == true)
{
Console.WriteLine("Es besitzt einen Motor");
}
else
{
Console.WriteLine("Es besitzt keinen einen Motor");
}
}

Nachdem man die Funktion erstellt hat, ruft man diese von der Main-Klasse auf.

Funktionen, die innerhalb von Klassen implementiert sind, werden in der objektorientierten Programmierung meistens als Methoden bezeichnet.


Vollständiger Programmcode

class Program
{
static void Main(string[] args)
{
// Variante 1
Vehicle auto = new Vehicle();
auto.SetReifen(4);
auto.SetMotor(true);
auto.SetGewicht(1000.0);

Console.WriteLine("Gewicht: " + auto.GetGewicht());

// Variante 2
Vehicle fahrrad = new Vehicle(2, false, 50.0, "blau");
fahrrad.GetVehicle();

Console.ReadLine();
}
}
class Vehicle
{
// Member - Variablen
private int reifen;
private bool motor;
private double gewicht;
private String farbe;

// Constructor Erstellt ein leeres Vehicle.
public Vehicle()
{

}

// Constructor 2 Erstellt ein neues Vehicle mit diesen Optionen
public Vehicle(int reifen, bool motor, double gewicht, String farbe)
{
SetReifen(reifen);
SetMotor(motor);
SetGewicht(gewicht);
this.farbe = farbe;
}

// Methoden, Felder
public void SetReifen(int reifen)
{
// Aufruf: vehicle.SetReifen(4);
this.reifen = reifen;
}

public int GetReifen()
{
// Aufruf: int reifen = vehicle.GetReifen();
return this.reifen;
}

public void SetMotor(bool motor)
{
this.motor = motor;
}

public void SetGewicht(double gewicht)
{
this.gewicht = gewicht;
}

public double GetGewicht()
{
return this.gewicht;
}


public void GetVehicle()
{
Console.WriteLine("Unser Vehicle ist " + GetGewicht() + "kg schwer.");
Console.WriteLine("Es hat " + GetReifen() + " Reifen und die Farbe " + this.farbe);
if (this.motor == true)
{
Console.WriteLine("Es besitzt einen Motor");
}
else
{
Console.WriteLine("Es besitzt keinen Motor");
}
}
}