Lernhilfe OOP Basics
Begriffe
Wir unterscheiden in der objektorientierten Programmierung zwischen Klassen und Objekten. Objekte werden oft auch Instanzen oder Objektinstanzen genannt, meinen aber dasselbe.
Klassen
sind unsere Baupläne oder Blaupausen. Wir schreiben eine Klasse um zu definieren was denn enthalten ist, wenn eine neue Objektinstanz erstellt wird.
Klassen können Konstruktoren, Properties und Methoden enthalten.
Properties
Das sind die Eigenschaften die ein Objekt hat, wenn später von der Klasse eine Instanz erstellt wird. Sie sind sehr ähnlich zu Variablen, jedoch unterscheidet sich die Syntax, also die Schreibweise mit der Properties definiert werden zu denen von Variablen. Außerdem ist der Speicherbereich ein anderer. Variablen existieren in dem Block bzw. Scope in dem sie erstellt wurden. Properties sind mit einer Objektinstanz verbunden und existieren solange, solange auch das Objekt existiert zu dem sie gehören.
Konstruktoren
Diese sind ähnlich wie Methoden. Sie enthalten Anweisungen (Statements) die ausgeführt werden immer wenn eine neue Objektinstanz erstellt wird um genau diese Instanz zu initialisieren. Initialisieren meint, dass das Objekt für die Verwendung vorbereitet wird. Meistens werden dabei Werte von Properties gesetzt.
Im Unterschied zu Methoden, haben Konstruktoren keinen Rückgabewert. Wenn kein Konstruktor angegeben wird, wird automatisch ein Konstruktor ohne Parameter generiert. Sobald mindestens ein Konstruktor selbst angegeben wurde, wird dieser parameterlose Konstruktor nicht mehr automatisch generiert.
Konstruktoren müssen immer genauso wie die Klasse heißen.
Konstruktorenverkettung
Es können auch mehrere Konstruktoren definiert werden, die aufeinander aufbauen. So kann ein Konstruktor zu einem anderen Konstruktor weiterleiten und Parameter übergeben. Dieser könnte dann wieder an einen anderen Konstruktor weiterleiten usw.
Methoden
Methoden bilden das Verhalten von Objekten ab. Es sind Aktionen, die das Objekt ausführen kann.
Objekterstellung
Um eine Klasse verwenden zu Können muss zuerst ein Objekt erstellt werden. Dazu benötigen wir 2 Dinge. Zuerst brauchen wir eine Variable in der wir das neu erstellte Objekt abspeichern können. Klassennamen können wie Namen von anderen Datentypen verwendet werden. Das heißt als Datentyp für das Objekt wird der Name der Klasse verwendet.
Als nächstes müssen wir ein Objekt erzeugen. Das erzeugte Objekt kann dann der Variable zugewiesen werden.
Zum Erzeugen verwenden wir das Schlüsselwort new
. Danach kommt der Name der Klasse gefolgt von runden Klammern.
Bei der Erstellung eines neuen Objekts muss darauf geachtet werden, dass die richtigen Parameter für den Konstruktor übergeben werden.
Objektverwendung
Wenn ein Objekt erstellt wurde kann es verwendet werden. Zum Beispiel können Werte von Properties ausgelesen und verändert werden, oder Methoden aufgerufen werden.
ToString
Die Methode ToString()
ist eine besondere Methode. Wenn sie aufgerufen wird wird eine Repräsentation des Objekts als Zeichenkette (String) ausgegeben. Die Methode ToString()
ist in jedem Objekt vorhanden.
Wenn die Methode nicht selbst implementiert wird, wird Standardmäßig der Name der Klasse ausgegeben.
Die Methode ToString()
kann selbst implementiert werden um eine andere Repräsentation zu erstellen. Dabei muss das Schlüsselwort override
verwendet werden.
Es ist außerdem nicht immer nötig die Methode ToString()
aufzurufen wenn ein Objekt mit Console.WriteLine
ausgegeben werden soll.
Man kann bei Console.WriteLine
auch direkt das auszugebene Objekt angaben. Dann wird im Hintergrund automatisch die ToString()
Methode ausgeführt.
Klassen sind Datentypen
Wie bereits erklärt sind Klassen wie Datentypen zu verwenden. Wir können Variablen definieren und wir können sie natürlich auch als Rückgabewerte von Methoden verwenden.