Die OOP ist ein Programmierparadigma, das auf dem Konzept von "Objekten" basiert. Das Programm ist in Segmente von Objekten unterteilt, die miteinander kommunizieren. Jedes Objekt ist definiert durch: seine Funktionen (Methoden) und seine Daten (Eigenschaften). Um eine OOP-Sprache zu sein, muss die Programmiersprache eine Liste von OOP-Bedingungen, -Prinzipien und -Eigenschaften erfüllen.
Inheritance (Keyword: extends):
Wenn mehrere Klassen gemeinsame Attribute (variables) und Verhalten (methods) haben, werden diese gemeinsamen Teile extrahiert und in einer öffentlichen Klasse definiert. Andere Klassen können mit dieser öffentlichen Klasse eine Vererbungsbeziehung eingehen, so dass der öffentliche Teil nicht in mehreren Klassen neu definiert werden muss! Diese gemeinsame Klasse ist die übergeordnete Klasse, die auch als Parent/Base/Superclass bezeichnet wird, und die anderen Klassen sind die Unterklassen(Childs/Subclasses). Unterklassen können direkt auf nicht-private Variablen des Parents zugreifen.
Polymorphism:
Polymorphismus ("viele Formen") ist die Implementierung eines Objekts mit verschiedenen Manifestationen. Ein Beispiel für Polymorphismus: Dieselbe Taste (z.B. "ENTER") kann in verschiedenen Applikationen, unterschiedliche Aktionen auslösen ("Zeilenvorschub", "Senden", "Öffnen"). Das Drücken der "ENTER"-Taste spielt in verschiedenen Anwendungen eine andere Rolle. Polymorphism hilft bei der Skalierbarkeit, Flexibilität und Vereinfachung von Applikationen.
Polymorphism kann als Schnittstelle arbeiten und unterstützt darin, die
Kopplung zwischen Klassen aufzuheben.
Encapsulation:
Wir fassen die Objekte zusammen, die die gleichen Eigenschaften haben oder zur gleichen Klasse gehören, und versuchen dadurch Coupling zu vermeiden.
Loose Coupling:
Unter Coupling versteht man den Grad der gegenseitigen Abhängigkeit zwischen Klassen/Modulen. Die Kopplung ist ein Maß dafür, wie zwei oder mehr Komponenten voneinander abhängen. Wenn eine Ihrer Komponenten nicht mehr funktioniert, wenn die andere Komponente ausgefallen ist, sind sie fest gekoppelt. Rückblickend gilt: Je weniger diese Komponenten voneinander abhängig sind, desto lockerer sind sie gekoppelt. Ein starkes Coupling sollte im Sinne der objektorientierten Programmierung vermieden werden. Idealerweise möchten wir, dass unsere Komponenten zu 100 % unabhängig sind.
Die Design-Patterns sind Techniken aus der objektorientierten Programmierung und folgen dementsprechend folgenden Prinzipien.