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.
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).
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.
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?
Was programmiert man als Softwareentwickler? Klassen oder Objekte?
Was ist eine Methode?
Wie erstellt man ein Objekt?
Last updated