📖OOP Grundlagen
Grundlagen der Objektorientierten Programmierung
💬 Was ist Objektorientierte Programmierung?
Wo liegt der Unterschied zur prozeduralen Programmierung?
Was ist der Unterschied zwischen einer Klasse und einem Objekt?
Was bewirkt das Schlüsselwort
new?Was sind Eigenschaften?
Was sind Methoden?
Geschichte der Objektorientierung
Smalltalk
1970 hat Alan Key im XEROX Forschungszentrum die erste OO Sprache "Smalltalk" entwickelt. Sie beeinflusste die Entwicklung vieler späterer Programmiersprachen (auch Java und C#).
Prinzipien von Smalltalk (und Objektorientierung):
Alles ist ein Objekt
Objekte kommunizieren durch das Senden und Empfangen von Nachrichten
Objekte haben ihren eigenen Speicherbereich
Jedes Objekt ist die Instanz einer Klasse.
ISO Standard
Bereits 1985 wurde die erste Version des ISO/IEC 2382-15 Standards beschrieben. Die aktuellste Version wurde 2015 veröffentlicht.
Objektorientierung bezieht sich auf eine Technik oder Programmiersprache, welche Objekte, Klassen und Vererbung unterstützt.
Die komplette ISO kann hier gefunden werden: ISO/IEC 2382-15
Bernd Oestereich (Fachbuchautor):
«Die Objektorientierung heisst Objektorientierung, weil diese Methode die in der realen Welt vorkommenden Gegenstände als Objekte ansieht. Ein Telefon ist genauso ein Objekt wie ein Fahrrad, ein Mensch oder eine Versicherungspolice. Und diese Objekte setzen sich wiederum aus anderen Objekten zusammen, nämlich aus Schrauben, Rädern, Ohren, Tarifen und so weiter.»
Grundlagen & Begriffe
Objekte und Klassen
Name
Objekt
Klasse
Beschreibung
Objekte repräsentieren "Dinge" der realen Welt oder eines Problembereichs. Beispiel "der rote Wagen da unten im Parkhaus".
Klassen sind Baupläne für Objekte. Beispiel "Bauplan für einen Wagen".
Bild


C# Code
Auto auto = new Auto();
public class Auto {
// ...
}
Synonyme
Instanz
Typ, Klassentyp
Zwei Autos werden einem Bauplan erstellt, können dann aber unterschiedliche Eigenschaften haben (z.B. Farbe, Geschwindigkeit, usw.). Genauso können zwei Objekte einer bestimmten Klasse erstellt werden, aber unterschiedliche Eigenschaften haben.
Analogie "Kuchen backen": Ausgehend von einem bestimmten Kuchenrezept (vgl. Klasse) lassen sich beliebig viele gleichartige Kuchen (vgl. Objekte) backen (vgl. erzeugen).

Wir programmieren Klassen
Objekte werden ausgehend von Klassen erzeugt und zwar automatisch und erst zur Laufzeit.
Zur Laufzeit hat man es mit Objekten zu tun, die miteinander interagieren.
Klassendefinition in C#
Grundaufbau einer Klasse:

Konstruktor
Ein Konstruktor ist eine spezielle Methode. Sie wird immer bei der Erzeugung eines Objektes mit dem new Keyword aufgerufen.
Dieses Beispiel hat einen Konstruktor ohne Parameter:
Mithilfe des new Keywords wird hier ein neues Objekt der Klasse Person erzeugt.
Dieses Beispiel hat einen Konstruktor mit einem Parameter:
Hier wird mithilfe des new Keywords ein neues Objekt der Klasse Baum erzeugt. Dabei wird ein Parameter übergeben.
Attribute
Attribute, auch "Felder" oder "Membervariabeln" genannt, sind Variabeln, welche nur innerhalb des Objektes bekannt sind und auch nur von da verwendet werden sollten. Daher sollten Sie immer mit private gekennzeichnet sein.
Eigenschaften / Properties
Eigenschaften sind (in der Regel) nach aussen verfügbar. Im Grunde machen sie Felder nach aussen verfügbar:
Eigenschaften bestehen immer aus einem getter und einem setter (oder nur einem getter, falls es eine readonly-Eigenschaft ist).
Die getter und setter sind quasi eigene Methoden.
In Java beispielsweise gibt es keine Eigenschaften. Da wird jeweils eine Getter-Methode GetAlter() und eine Setter-Methode SetAlter(int alter)programmiert.
Auto-Property
C# bietet die Möglichkeit sogenannter Auto-Properties. Dies wird dann verwendet, wie im Beispiel oben, wo eine Eigenschaft lediglich als Wrapper eines Feldes dient.
Der Wert eines Read only Auto-Properties kann nur im Konstruktor gesetzt werden.
Objektinteraktion
Wenn eine Klasse existiert, erstellen wir mittels des new Keywords eine Instanz (also ein Objekt) dieser Klasse:
Die Eigenschaften und Methoden werden dann mit einem . aufgerufen.
Vorteile der Objektorientierten Programmierung
Wiederverwendbarkeit
Klassen modularisieren eine Anwendung in unabhängige Einheiten. Sie verwalten zusammengehörende Daten und gruppieren ähnliche Methoden. Klassen können bausteinähnlich in verschiedenen Programmen – in der .NET-Laufzeitumgebung sogar vollkommen unabhängig von der verwendeten Programmiersprache – gleichwertig eingesetzt werden. Als Konsequenz dessen ändert sich auch der Arbeitsablauf der Programmierung: Programme müssen nicht mehr in allen Einzelheiten neu geschrieben werden, sie werden zu einem großen Teil aus fertigen Komponenten zusammengesetzt – vergleichbar mit der Entwicklung und dem Zusammenbau eines Motors, bei dem im Wesentlichen genormte Maschinenteile (Schrauben, Bolzen etc.) zum Einsatz kommen.
Wartungsaufwand
Eine Klasse kapselt ihre Daten sowie die interne Implementierung ihrer Methoden gegenüber der Aussenwelt und kann daher problemlos an neue Anforderungen angepasst werden. Anwendungsprogramme, welche die Dienste einer Klasse nutzen, bemerken davon nichts. Eine Klasse kann als eigene, separate und unabhängige Einheit getestet werden. Damit ist es auch vollkommen ausreichend, die Klassenimplementierung nur einmal ausgiebig zu testen. Verläuft der Test positiv, wird die Klasse mit jeder Anwendung zufrieden stellend zusammenarbeiten. Das Testen im Umfeld mehrerer Anwendungsprogramme entfällt und stellt damit die Effizienz der Programmierung sicher.
Fehleranfälligkeit
Die Kapselung bewirkt, dass Objekte den Zugriff auf die Daten selbst kontrollieren und eine fehlerhafte Datenmanipulation und die daraus resultierende Inkonsistenz abwehren können.
💡 Kontrollfragen
Versucht zu zweit die Antworten auf die folgenden Fragen zu finden, ohne hoch zu scrollen. Diskutiert eure Antworten und vergleicht sie mit der Antwort, die sich hinter dem Antwort Tab versteckt.
Was ist der Unterschied zwischen einer Klasse und einem Objekt?
In der Analogie in der Architektur und dem Häuserbau, was wäre da eine Klasse bzw. ein Objekt?
Die Klasse ist der Bauplan, das Objekt eine einzelne Instanz dieser Klasse.
Die Klasse wäre der Bauplan eines Hauses, das Objekt wäre ein fertig erbautes Haus.
Was programmiert man als Softwareentwickler? Klassen oder Objekte?
Klassen.
Was ist eine Methode?
Eine Methode ist eine Aktion, welche ein Objekt durchführen kann.
Wie erstellt man ein Objekt?
Mit dem new Keyword.
Last updated