Skip to content

Lernhilfe OOP Intermediate

Klassen

Fields

Klassen können nicht nur wie bisher gelernt Konstruktoren, Properties und Methoden enthalten, sondern auch einfache Variablen (ohne { get; set; }). Diese Klassenvariablen werden auch Felder (engl. Fields) genannt.

public class Person {
public string Name { get; set; } // Property
private string _nickName; // Field
}

Meistens werden Properties verwendet, wenn von außerhalb der Klasse auf die Werte zugegriffen werden soll (lesend/schreibend/beides). Felder werden gerne verwendet um Variablen innerhalb der Klasse zu verwalten, auf die von außen kein Zugriff bestehen soll. Private Felder werden meist camelCase geschrieben, meist mit einem Unterstrich davor: _nickName.

Read-Only Fields

Mit dem readonly Modifier kann ausgedrückt werden, dass der Wert eines Fields nur gelesen, aber nicht verändert werden kann. Der Wert muss dann bei der Initialisierung einer Objektinstanz gesetzt werden (direkt beim Field oder über den Konstruktor). Danach kann die Variable nicht mehr ausgetauscht werden.

public class Person {
private readonly string _nickName = "Peter";
public void ChangeNickname() {
_nickName = "Spidey"; // compiler error: value cannot be changed
}
}

Achtung!!

Read-Only bedeutet nur, dass dem Feld kein anderer Wert zugewiesen werden kann. Wenn in der Variable allerdings ein komplexer Wert gespeichert ist (Array, Liste, Objekt, …), dann können einzelne Elemente in diesem Objekt nach wie vor geändert werden, solange es die Zugriffsmodifier des jeweiligen Typs zulassen.

public class Person {
private readonly string[] _nickNames = new[2] { "Peter", "Spidey" };
public void ChangeNames() {
_nickNames = new[1] { "Spidey" }; // compiler error: we cannot assign something new to _nickNames
}
public void ChangeName() {
_nicknames[0] = "Pete"; // ok: values within can be changed
}
}

UML

Zur Darstellung von Klassen und deren Aufbau können UML Klassendiagramme verwendet werden. UML steht für Unified Modelling Language. Eine Klasse wird repräsentiert durch ein Rechteck, das in drei Teile gegliedert ist die durch waagrechte Striche getrennt sind.

  1. Name der Klasse
  2. Properties
  3. Methoden

Ein Plus-Symbol vor einem Property oder einer Methode zeigt an, dass diese public sind, ein Minus-Symbol steht für private Member.

Das Diagramm entspricht dem folgenden Code:

class Fahrzeug {
public string Marke { get; set; }
private int baujahr;
public void Starten(bool hatSchluessel) {
// ...
}
}

Vererbung

siehe Vererbung