Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Objektorientierung – wie bekommen Objekte Funktionalität?

Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Objektorientierung – wie bekommen Objekte Funktionalität?

Wie Sie im letzten Video erfahren haben, kann es Klassen geben, die keinerlei Funktionalität mitliefern. Diese Klassen schreiben lediglich vor, dass es eine Funktionalität geben muss. Wie bekommen die Objekte dann ihre Funktionalität? Halten Sie das Video an und denken Sie mal darüber nach. Durch Ableitung bzw. Vererbung. Es wird einfach eine Klasse angelegt, die die abstrakte Klasse um die geforderte Funktionalität erweitert und sie für den spezifischen Fall umsetzt. Im Beispiel habe ich dafür die abstrakte Klasse Angestellter definiert, die bereits die Attribute Name und Basisgehalt mitliefert. Sie schreibt außerdem vor, dass es eine Methode getVerdienst() gibt, mit der ich den Verdienst der Person ermitteln kann. Dieser Verdienst kann aber sehr unterschiedlich sein, je nachdem, ob es sich um eine Kellnerin, Koch oder Restaurantleiterin handelt. Aus diesem Grund werden für die verschiedenen Berufsgruppen jeweils eigene Kindklassen erzeugt, die die Elternklasse Angestellter um die Berechnungsmethoden für den Verdienst erweitern. Diese Vielgestaltigkeit eines Angestellten bezeichnet man weiterhin auch als Polymophie und sie sorgt neben der Spezialisierung der Kindklasse auch dafür, dass alle Kindklassen wie Angestellte behandelt werden können. Dies macht ja bspw. bei der Lohnabrechnung durchaus Sinn und vereinfacht dort den aufgerufenen Code sehr stark, da er nicht entscheiden muss, um welche Lohngruppe es sich handelt. Damit kommen wir zu einem Feature, das ich bisher noch nicht erläutert habe: die Kapselung. Sie beschreibt, wie sichtbar die einzelnen Bestandteile einer Klasse bzw. eines Objektes sind und bestimmt damit, wer auf sie zugreifen kann. Im Beispiel hat die Kellnerklasse ein weiteres Attribut, Trinkgeld. In diesem steht, wie viel Trinkgeld der Kellner bekommen hat. Vor diesem Attribut steht ein Minus, um anzuzeigen, dass nur diese Klasse das Trinkgeld schreiben darf. Damit ist es aus Sicht der Klasse privat. Alle anderen Eigenschaften und Methoden können auch von anderen Objekten aufgerufen werden. Sie gelten also als öffentlich und werden mit einem Plus dargestellt. Die Klasse Angestellter hat eine dritte Art von Sichtbarkeit. Dort ist das Basisgehalt mit einer Raute versehen. Diese Eigenschaft kann außerhalb des Angestellten weder gelesen noch geschrieben werden. Ausgenommen sind hier Klassen, die von der Angestelltenklasse abgeleitet sind. Das letzte Feature objektorientierter Sprachen ist der Lebenszyklus von Objekten. Damit ist gemeint, dass ein Objekt verschiedene Status durchläuft, welche mit der Instanziierung und damit dem Reservieren des Speichers für ein Objekt beginnen. Je nachdem, welche Programmiersprache Sie nutzen, kann es neben der Instanziierung noch eine gesonderte Phase für die Initialisierung geben. Bei der Initialisierung erhalten die Attribute des Objektes ihre Initialdaten. In vielen Sprachen geschieht diese Initialisierung jedoch automatisch zusammen mit der Instanziierung. Der Arbeitszustand ist der wohl längste Zeitraum im Leben eines Objektes. In diesem Zeitraum tut das Objekt einfach das, wofür es da ist. Spätestens dann, wenn das Programm geschlossen wird, beginnt die letzte Phase, in der das Objekt zerstört und der Speicher wieder freigegeben wird. Wie Sie sehen, ist die Objektorientierung sehr mächtig und kann im ersten Moment überwältigend wirken. Gerade bei der Umsetzung komplexer Szenarien helfen diese Konzepte aber dabei, den Code angemessen zu strukturieren. Die objektorientierte Programmierung erleichtert auch das Arbeiten im Team und kann verhindern, dass sich verschiedene Programmierer und Programmiererinnen bei ihrer Arbeit gegenseitig behindern. Dafür einigen Sie sich zunächst auf Schnittstellenspezifikationen und füllen diese unabhängig voneinander mit Leben. Wenn Sie tiefer an das Thema einsteigen möchten, sehen Sie sich den Kurs "Grundlagen der Programmierung – objektorientiertes Design" an.

Inhalt