Häufige Fragen im Fachgespräch – Objektorientierung – Anwendungsentwickler-Podcast #2

This entry is Teil 1 von 15 in the series Häufige Fragen im Fachgespräch

In der zweiten Episode des Anwendungsentwickler-Podcasts geht es um eine der häufigsten – wenn nicht die häufigste – Frage im Fachgespräch: Was ist Objektorientierung? Mit der Antwort auf diese Frage kann man ohne Weiteres 10 Minuten und mehr füllen, daher gebe ich ein paar Tipps, wie man sinnvoll mit dieser Frage umgeht.

TL;DR

Für die Frage "Was ist Objektorientierung?" empfehle ich dir im Fachgespräch einen kurzen Überblick, den du anschließend mit eigenen Beispielen vertiefst. Objektorientierung ist ein Programmierparadigma, bei dem Objekte ihre Attribute und zugehörigen Methoden kapseln. Klassen dienen als Baupläne für Objekte und können Attribute sowie Methoden vererben; durch Polymorphie lassen sich unterschiedliche konkrete Objekte über eine gemeinsame Schnittstelle ansprechen. Wenn du frei formulierst und Fachbegriffe präzise verwendest, können Prüfer:innen dein Wissen anhand deiner Antwort und ihrer Nachfragen beurteilen.

Kapitelmarken

  • [00:00:37] Objektorientierung als häufige Frage im Fachgespräch
  • [00:01:51] Wie Prüfer:innen ihre Fragen auswählen
  • [00:03:06] Frei formulieren und präzise antworten
  • [00:04:47] Antworten strukturieren und mit Beispielen erklären
  • [00:07:22] Die Antwort mit einem Überblick beginnen
  • [00:09:15] Was ist ein Programmierparadigma?
  • [00:09:51] Objekte, Attribute und Methoden
  • [00:11:26] Klassen als Baupläne für Objekte
  • [00:12:48] Kapselung
  • [00:14:10] Den Überblick geben und Details abstimmen
  • [00:15:00] Vererbung mit Basisklassen und Subklassen
  • [00:15:28] Polymorphie am Beispiel von Java-Listen
  • [00:16:55] Gegen eine abstrakte Schnittstelle programmieren
  • [00:18:22] Weitere mögliche Prüfungsfragen zur Objektorientierung
  • [00:20:34] Ausblick und weiterführende Informationen

Probeabo bei Audible (Affiliate)

Allgemeines zu Prüfungsfragen im Fachgespräch

  • Frei sprechen und nicht auswendig lernen.
  • Präzise antworten und nicht rumlabern.
  • Strukturiert antworten und nicht von Thema zu Thema springen.
  • Vom Allgemeinen zum Speziellen vorgehen.
  • Woimmer es geht Beispiele bringen.
  • Fachbegriffe korrekt verwenden.

Objektorientierung

  • Allgemein: Die Objektorientierung ist ein Programmierparadigma, das mit Objekten arbeitet. Es zeichnet sich hauptsächlich durch drei Konzepte aus: Kapselung, Vererbung und Polymorphie.
  • Programmierparadigma: Vorgehensweise bei der Programmierung, z.B. objektorientiert, funktional, strukturiert.
  • Objekt: Ding der realen Welt, z.B. Hund, Tisch, Versicherungsvertrag. Ein Objekt hat Eigenschaften (Attribute) und Funktionen (Methoden), z.B. die Augenfarbe des Hundes oder die Policierung eines Versicherungsvertrags.
  • Klasse: Viele objektorientierte Programmiersprachen verwenden Klassen als Baupläne für Objekte, z.B. Fahrzeug oder Person. Objekte sind dann Instanzen dieser Klassen, z.B. der blaue Mercedes oder Stefan Macke. Klassen definieren, welche Attribute und Methoden jedes Objekt der Klasse hat, aber die konkreten Ausprägungen des Objekts können dann unterschiedlich sein.
  • Kapselung: Objekte kapseln Attribute und die zugehörigen Methoden. Der Zugriff auf die Attribute sollte nur über entsprechende Methoden möglich sein, damit die Manipulation der Werte verhindert wird und das Objekt immer in einem gültigen Zustand ist.
  • Vererbung: Klassen können Attribute und Methoden an andere Klassen vererben. Damit stehen die Attribute und Methoden der vererbenden Klasse der erbenden Klasse direkt zur Verfügung. Die vererbende Klasse nennt man Basisklasse und die erbende Klasse Subklasse.
  • Polymorphie: Heißt Vielgestaltigkeit und bedeutet, dass Variablen Objekte unterschiedlichen Typs zugewiesen werden können, die sich beim Aufruf derselben Methode dann unterschiedlich verhalten. Dies ist bei Vererbung oder Verwendung von Interfaces der Fall. Überall wo eine Basisklasse oder ein Interface erwartet wird, kann auch eine Subklasse oder implementierende Klasse verwendet werden. Methoden können z.B. in Subklassen überschrieben werden und damit eine andere Implementierung enthalten als die Basisklasse. Wird nun die Subklasse übergeben, wo eigentlich die Basisklasse erwartet wird, wird die Methode der Subklasse aufgerufen.

Häufige Anschluss-/Teilfragen

  • Was ist der Unterschied zwischen Objekt und Klasse?
  • Warum verwendete man Getter/Setter anstatt Attribute sichtbar zu machen?
  • Was wird in einem Objekt gekapselt?
  • Was sind die drei wichtigsten Konzepte der Objektorientierung?
  • Welche Programmierparadigmen gibt es?

Literaturempfehlungen

Links

Zusammenfassung

Offene Fragen im Fachgespräch beantworten

An der Frage "Was ist Objektorientierung?" zeige ich dir, wie du eine umfangreiche Frage im Fachgespräch angehst. Als Fachinformatiker:in für Anwendungsentwicklung gehört dieses Thema zu den Kerninhalten deiner Ausbildung.

Je nachdem, welche Leistung Prüfer:innen von dir erwarten und wie deine Präsentation gelaufen ist, stellen sie offene oder konkrete Fragen. Eine offene Frage zur Objektorientierung gibt dir Raum, dein Wissen zu zeigen. Bei einer sehr guten bisherigen Leistung können Prüfer:innen damit prüfen, ob du auch im mündlichen Teil eine Eins verdienst. Bei Schwierigkeiten beginnen sie mit einfacheren Fragen oder unterstützen dich beim Antworten.

Für deine Antworten empfehle ich dir:

  • Formuliere frei und in deinen eigenen Worten. Durch Anschlussfragen können Prüfer:innen erkennen, wie gut du die genannten Begriffe verstanden hast.
  • Verwende Fachbegriffe präzise. Bleibe bei derselben Bezeichnung für denselben Sachverhalt. Objekt und Instanz bezeichnen hier dasselbe; eine Klasse ist ein eigener Begriff.
  • Lege dir eine Struktur zurecht, damit du bei einem umfangreichen Thema einen nachvollziehbaren Weg durch deine Antwort findest.
  • Beginne mit dem Allgemeinen. Einzelheiten wie die Schlüsselwörter abstract oder final folgen, nachdem du das grundlegende Konzept erklärt hast.
  • Baue Beispiele ein. Mit einem Beispiel aus deinem eigenen Projekt zeigst du, dass du ein Konzept bereits angewendet hast.

Mit einem Überblick beginnen

Meine Antwort auf die Frage nach der Objektorientierung beginnt mit ihrer Einordnung als Programmierparadigma, das mit Objekten arbeitet. Anschließend nenne ich die zentralen Konzepte:

  • Kapselung
  • Vererbung
  • Polymorphie

Damit stehen die wichtigsten Inhalte am Anfang deiner Antwort. Falls Prüfer:innen dich unterbrechen oder direkt nach einem Begriff fragen, hast du die zentralen Punkte bereits genannt. Danach erläuterst du die Begriffe schrittweise.

Programmierparadigma

Ein Programmierparadigma beschreibt eine Vorgehensweise beim Programmieren. Du kannst diese Formulierung auch direkt in deiner Antwort verwenden. Neben der objektorientierten Programmierung gibt es beispielsweise funktionale Programmierung. Weitere genannte Paradigmen sind die strukturierte und die logische Programmierung.

Objekte und Klassen

Als anschaulichen Einstieg beschreibe ich ein Objekt als ein Ding der realen Welt. Dazu zählen etwa ein Hund oder ein Auto. Auch etwas Abstraktes wie ein Versicherungsvertrag lässt sich als Objekt abbilden.

Ein Objekt hat Eigenschaften, die Attribute heißen. Seine Funktionen werden als Methoden bezeichnet. Bei einem Hund können Augenfarbe und Alter Attribute sein, während "Gib laut" eine Methode beschreibt. Ein Versicherungsvertrag kann einen Policierungstag als Attribut haben und Methoden zum Policieren oder Beenden bereitstellen.

Eine Klasse ist ein Bauplan für Objekte. Sie legt fest, welche Attribute und Methoden ihre Objekte haben. Aus einer Klasse lassen sich mehrere Objekte erzeugen, die jeweils als Instanz der Klasse bezeichnet werden.

Die konkreten Attributwerte können sich von Objekt zu Objekt unterscheiden. Wenn eine Klasse für Autos ein Attribut Farbe vorgibt, kann ein Objekt einen blauen Mercedes und ein weiteres einen grünen Ford darstellen.

Kapselung

In einem Objekt werden Attribute und die zugehörigen Methoden gemeinsam gekapselt. Beide müssen fachlich zusammenpassen. Zum Auto passt beispielsweise eine Methode zum Bremsen; die Augenfarbe gehört zum Beispiel des Hundes.

Auf Attribute sollte über entsprechende Methoden zugegriffen werden, damit Änderungen kontrolliert erfolgen und das Objekt in einem gültigen Zustand bleibt. Die gemeinsame Abbildung von Eigenschaften und Funktionen folgt dem Gedanken, Dinge aus der Realität als Objekte darzustellen.

Getter und Setter sind mögliche Themen für eine anschließende Vertiefung. Für den ersten Überblick reicht es, das Grundprinzip der Kapselung zu beschreiben.

Vererbung

Klassen können ihre Attribute und Methoden an andere Klassen vererben. Diese stehen dann den erbenden Klassen zur Verfügung.

Die vererbende Klasse heißt Basisklasse. Eine erbende Klasse wird als Subklasse bezeichnet.

Polymorphie

Polymorphie bedeutet Vielgestaltigkeit. Einer Variablen können Objekte unterschiedlicher konkreter Typen zugewiesen werden, deren Methoden unterschiedlich implementiert sind. Beim Aufruf derselben Methode hängt das ausgeführte Verhalten vom konkreten Objekt ab.

Das Java-Beispiel dazu ist eine Variable vom Typ List<String>. Ihr lässt sich eine ArrayList zuweisen, ebenso eine LinkedList. Beide stellen die Methoden der gemeinsamen Schnittstelle bereit, wobei sich deren konkrete Implementierungen unterscheiden.

Wo eine Basisklasse erwartet wird, kannst du eine passende Subklasse übergeben. Bei einem Interface kommt ein Objekt einer Klasse infrage, die dieses Interface implementiert. Das gilt beispielsweise für Parameter einer Methode.

Schnittstellen werden entsprechend mit Basisklassen oder Interfaces beschrieben. Der Algorithmus arbeitet mit dieser abstrakten Schnittstelle, während zur Laufzeit ein konkretes Objekt dahintersteht.

Nach dem Überblick gezielt vertiefen

Wenn du die grundlegenden Begriffe erläutert hast, kannst du mit den Prüfer:innen abstimmen, welchen Bereich du genauer behandeln sollst. Auch ihre Nachfragen geben dir die Richtung vor. Details zu Sichtbarkeitsmodifizierern oder einzelnen Schlüsselwörtern gehören in diese Vertiefung.

Weitere mögliche Prüfungsfragen

Für deine Vorbereitung habe ich folgende Fragen zusammengestellt:

  • Was ist der Unterschied zwischen Objekt und Klasse?
  • Warum verwendet man Getter und Setter, um auf Attribute zuzugreifen?
  • Was wird in einem Objekt gekapselt?
  • Welche zentralen Konzepte gehören zur Objektorientierung?
  • Welche Programmierparadigmen gibt es?

Transkription der gesamten Episode

Automatisch erzeugte Transkription der Episode

[0:01] Hi, hier ist Stefan. In dieser Podcast-Episode geht es ums Fachgespräch.

[0:05] Wenn du noch mehr Informationen zum Fachgespräch von mir haben willst,

[0:08] dann schau doch mal auf meiner Website vorbei, dasperfektefachgespräch.de.

[0:14] Und jetzt wünsche ich dir viel Spaß mit der Podcast-Episode.

[0:19] Herzlich willkommen zum Anwendungsentwickler-Podcast,

[0:22] dem Podcast rund um die Ausbildung zum Fachinformatiker für Anwendungsentwicklung.

[0:26] In dieser Episode geht es um eine der häufigsten Fragen im Fachgespräch.

[0:31] Was ist Objektorientierung? Viel Spaß dabei!

[0:37] Herzlich willkommen zur zweiten Episode meines Anwendungsentwickler-Podcasts.

[0:42] Heute geht es um eine der häufigsten Fragen im Fachgespräch, und zwar, was ist Objektorientierung?

[0:49] Ich habe bewusst diese Frage als erste genommen in einer ganzen Reihe von möglichen Fragen im Fachgespräch,

[0:56] weil sie sehr häufig gestellt wird, weil alle Anwendungsentwickler diese Frage eigentlich sehr gut beantworten können müssten,

[1:04] weil es quasi zum Kerninhalt der Ausbildung gehört, und weil sie sehr gut eine Art von Fragen repräsentiert,

[1:10] wie sie häufig im Fachgespräch gestellt werden.

[1:12] Sie ist nämlich sehr offen, und man kann quasi alles Mögliche darauf antworten.

[1:17] Ich möchte heute einmal an dieser Frage beispielhaft vorstellen, wie man auf solche Fragen am besten reagiert als Prüfling.

[1:24] Dazu vorweg vielleicht einmal etwas Allgemeines zu den Prüfungsfragen,

[1:29] bevor wir dann tatsächlich zu Objektorientierung selber kommen.

[1:33] Im Anschluss würde ich dann noch kurz ein paar mögliche Anschlussfragen oder auch Teilfragen im Bereich der Objektorientierung einfach mal vorstellen.

[1:43] Legt euch doch mal eure Antworten dafür zurecht, denn es ist sehr wahrscheinlich, dass irgendwas davon im Fachgespräch gefragt wird.

[1:51] Grundsätzlich sind die Fragen im Fachgespräch je nach erwartetem Ergebnis des Prüflings mal recht offengestellt, mal sehr konkret.

[2:03] Als Beispiel, wenn bekannt ist, dass es sich um einen sehr guten Prüfling handelt,

[2:07] oder wenn er gerade eine sehr gute Präsentation abgeliefert hat,

[2:10] dann werden die Prüfer natürlich dementsprechend auf den Prüfling eingehen

[2:14] und versuchen, so ein bisschen das Letzte aus ihm rauszukitzeln,

[2:17] um nachzuweisen, dass er auch in der mündlichen Prüfung eine Eins verdient hat.

[2:22] Dementsprechend sind die Fragen natürlich anders, als wenn dort ein Prüfling steht oder sitzt,

[2:27] der nicht ganz so eine tolle Leistung gemacht hat.

[2:30] Da fängt man dann vielleicht eher mit etwas einfacheren Fragen an,

[2:34] oder man versucht, so ein bisschen den Prüfling bei der Beantwortung zu unterstützen.

[2:38] Diese Frage, was ist Objektorientierung, geht so in den Bereich Einserkandidat.

[2:44] Wenn man darauf nämlich eine vernünftige, strukturierte, korrekte und präzise Antwort liefert,

[2:51] dann kann man eigentlich alles das zeigen, was man eigentlich in der Ausbildung gelernt haben sollte.

[2:58] Ein paar Punkte können wir nochmal durchgehen, was so grundsätzliche Tipps sind,

[3:02] wie man auf die Fragen im Fachgespräch antworten sollte.

[3:06] Das Erste ist, dass die Antworten natürlich klingen sollten und nicht auswendig gelernt.

[3:12] Das hinterblicken die Prüfer natürlich sehr schnell.

[3:16] Wenn man dann einfach nur was runterrasselt, was man gerade irgendwo aus dem Lehrbuch auswendig gelernt hat,

[3:21] dann braucht man eigentlich nur ein, zwei Anschlussfragen stellen

[3:24] und dann ist sofort klar, dass der Prüfling eigentlich keine Ahnung hat, wovon er redet.

[3:27] Also, auswendig lernen bringt nichts.

[3:30] Es ist immer besser, es frei zu formulieren, die Antworten,

[3:34] denn es kommt sowieso raus, wenn man eigentlich gar nicht weiß, was man da gerade erzählt hat.

[3:39] Das Zweite ist, was ich auch immer meinen Azubis immer wieder sage,

[3:43] wir brauchen präzise Antworten.

[3:45] Wir sind ja in der Informatik und auch in der Programmierung

[3:49] und da ist es halt nicht so egal, ob ich int mit großem i oder mit kleinem i schreibe.

[3:53] Ich muss das mit kleinem schreiben, zumindest in Java, sonst funktioniert es nicht.

[3:57] Und genau so will ich eigentlich auch die Antworten hören.

[3:59] Ich will präzise und auf den Punkt wissen, was los ist.

[4:03] Ich will Fachbegriffe korrekt verwendet wissen

[4:06] und nicht dasselbe Ding immer mit verschiedenen Wörtern beschreiben.

[4:12] Beispiel, wir haben Objekt und Instanz, das ist letztlich das Gleiche.

[4:17] Wenn ich jetzt aber in einem Satz mal Objekt, mal Instanz sage,

[4:20] dann ist immer schwer zu unterscheiden, weiß der Prüfling, wovon er redet

[4:23] oder umschreibt er einfach nur etwas, was er gar nicht präzise formulieren kann.

[4:28] Und deswegen würde ich dazu raten,

[4:30] immer ein und dasselbe Wort für den gleichen Sachverhalt zu benutzen,

[4:34] damit da gar nicht erst der Gedanke aufkommt,

[4:38] dass man da vielleicht was durcheinandergebracht hat.

[4:40] Also, ich fasse das mal kurz zusammen.

[4:42] Präzise Antworten und nicht rumlabern, so würde ich das mal nennen.

[4:47] Das nächste, was wir gleich auch schön an der Frage nach der Objektorientierung uns anschauen können,

[4:52] ist, strukturiert zu antworten und nicht von Thema zu Thema springen.

[4:57] Objektorientierung, darüber kann man ganze Bücher füllen

[5:00] und ihr sollt jetzt in ein paar Minuten darauf eine Antwort geben.

[5:04] Das ist schwierig.

[5:05] Ich kann jetzt von bis, ich kann erklären, was ein Getter ist,

[5:08] was Polymorphie ist, wie Vererbung funktioniert,

[5:11] was eine abstrakte Klasse ist und so weiter.

[5:13] Ich kann von bis alles mögliche erzählen

[5:16] und ich muss aber in der Prüfung auf den Punkt strukturiert antworten.

[5:21] Also, ich muss mir meine Antwort vorher zurechtlegen

[5:23] und den Prüfern ein Bild davon geben, dass ich meine Gedanken,

[5:27] auch wenn sie einen sehr, sehr großen Wissensumfang darstellen,

[5:33] dass ich das strukturieren kann, das Wichtigste zuerst nennen

[5:37] und dann mich schrittweise vorarbeiten,

[5:40] bis die Prüfer irgendwann sagen, so, jetzt reicht es mir auch,

[5:42] jetzt haben wir verstanden, du weißt, wovon du redest.

[5:45] Deswegen würde ich auch bei der Beantwortung,

[5:47] das wäre der nächste Punkt, vom Allgemeinen zum Speziellen vorgehen.

[5:51] Wenn ich also zum Beispiel den Begriff der Vererbung erkläre,

[5:55] dann fange ich nicht erst mit dem Schlüsselwort Abstract oder Final an,

[6:00] sondern ich sage erstmal, was heißt denn Vererbung überhaupt grundsätzlich,

[6:04] versuche das mit allgemeinen Begriffen zu erklären

[6:06] und komme dann immer weiter runter zum Speziellen,

[6:09] bis ich irgendwann später dann mal erkläre,

[6:11] ach ja, ich kann auch Methoden als Final kennzeichnen zum Beispiel.

[6:15] Dann würde ich persönlich in alle meine Antworten irgendwie Beispiele einbauen.

[6:21] Mit Beispielen kann man immer sehr schön klar machen,

[6:24] wie Sachverhalte, die ja bei der Objektorientierung durchaus sehr komplex sind

[6:28] und sehr schwierig auf einem abstrakten Niveau zu erklären,

[6:33] das kann man mit Beispielen schön unterlegen

[6:37] und auch zeigen, dass man es verstanden hat.

[6:39] Gerade wenn man auch Beispiele wählt,

[6:41] die jetzt nicht auf der ersten Seite jedes Lehrbuchs stehen,

[6:44] wie zum Beispiel das altbekannte Auto und Fahrzeug,

[6:46] wenn man dann zum Beispiel Beispiele aus seinem eigenen Projekt nimmt,

[6:50] wird das Ganze auch nochmal ein bisschen glaubhafter,

[6:53] dass der Prüfling also wirklich weiß, wovon er da spricht

[6:55] und dass er es schon umgesetzt hat.

[6:57] Und der letzte Punkt hatte ich eben schon erwähnt,

[7:00] teilweise Fachbegriffe bitte dann auch korrekt verwenden

[7:03] und nicht die Schlüsselwörter, die wir aus der Programmierung kennen

[7:08] oder die Begrifflichkeiten Objekte, Klasse usw.

[7:11] wild durcheinander würfeln,

[7:13] im gleichen Satz mal die Klasse, mal das Objekt benutzen,

[7:16] obwohl eigentlich deutlich ist, dass es einen Unterschied gibt dabei.

[7:20] Das darf also nicht passieren.

[7:22] Gut, dann kommen wir doch jetzt mal zu der zentralen Frage,

[7:27] die Objektorientierung, was ist das?

[7:29] Also ich würde jetzt als Prüfling diese Frage hingeworfen bekommen

[7:33] und darf jetzt voll vom Leder ziehen,

[7:35] darf jetzt alles erzählen, was ich dazu weiß.

[7:37] Ich darf die Prüfer mit meinem Wissen quasi totschlagen,

[7:41] nur ich muss wissen, wie ich es am besten anstelle.

[7:43] Wie gesagt, ich kann jetzt alles Mögliche von vorn bis hinten erzählen,

[7:47] aber wie stelle ich es an?

[7:49] Ich würde jetzt den Punkten folgen, die ich gerade vorgestellt habe,

[7:53] so anfangen.

[7:55] Die Objektorientierung ist ein Programmierparadigma,

[7:57] das mit Objekten arbeitet.

[7:59] Es zeichnet sich hauptsächlich durch drei Konzepte aus,

[8:02] Kapselung, Vererbung und Polymorphie.

[8:05] Das wäre jetzt mein erster Satz, den ich antworten würde,

[8:08] oder meine ersten beiden Sätze,

[8:10] auf die Frage, was ist Objektorientierung?

[8:12] Ich habe hier schon einige Schlüsselwörter benutzt,

[8:15] die ich jetzt im Anschluss an diese Sätze weiter erläutern würde.

[8:19] Ich würde jetzt also das Paradigma, die Objekte, Kapselung, Vererbung,

[8:23] Polymorphie alle noch erläutern,

[8:25] aber ich gebe erstmal einen High-Level-Überblick

[8:28] über den Begriff der Objektorientierung.

[8:31] Man muss sich das so vorstellen,

[8:32] man kennt das vielleicht aus den Nachrichten,

[8:34] Bottom-Line-Up-Front.

[8:36] Ich sage das Wichtigste zuerst,

[8:38] und wenn ich dann unterbrochen werde,

[8:40] dann weiß ich als Prüfling,

[8:42] dass ich wenigstens die interessantesten und zentralen Inhalte

[8:46] schon genannt habe.

[8:48] Das wollen auch die Prüfer sehen.

[8:51] Wenn bestimmte Begrifflichkeiten fallen,

[8:53] dann fragen die Prüfer natürlich auch gerne nach,

[8:55] zum Beispiel jetzt hier haben sie gehört, Polymorphie.

[8:57] Ah, was ist denn das?

[8:58] Da kann man dann gleich drauf einsteigen.

[9:00] Normalerweise werden die Prüflinge aber erstmal

[9:03] alleine gelassen und dürfen einfach erstmal reden.

[9:06] Ich würde jetzt dementsprechend von vorn bis hinten

[9:09] diese Begriffe weiter definieren

[9:12] und immer tiefer einsteigen in die Materie.

[9:15] Fangen wir mit dem ersten an, Programmierparadigma.

[9:17] Was ist das?

[9:18] Ein Paradigma ist nichts anderes als eine Vorgehensweise

[9:21] bei der Programmierung.

[9:22] Davon gibt es verschiedene.

[9:24] Wir sind jetzt hier bei der Objektorientierung.

[9:26] Es gibt auch noch die funktionale Programmierung,

[9:28] die strukturierte Programmierung,

[9:30] die logische Programmierung,

[9:31] verschiedene andere Dinge.

[9:33] Ich übersetze dieses Wort einfach nur mit Vorgehensweise.

[9:37] Das reicht eigentlich schon.

[9:38] Wem dieses Wort nicht so geläufig ist

[9:40] oder wer das nicht so mag,

[9:41] kann auch von Anfang an sagen,

[9:42] dass die Objektorientierung eine Vorgehensweise

[9:45] bei der Programmierung ist.

[9:46] Also dieses Paradigma,

[9:47] das ist ein Begriff,

[9:48] den ich jetzt nicht verwenden muss, würde ich sagen.

[9:51] Aber das nächste ist natürlich sehr wichtig,

[9:53] denn das Objekt.

[9:55] Objekt steckt schon in Objektorientierung drin.

[9:58] Jetzt haben wir die Objektorientierung

[9:59] quasi mit sich selbst definiert,

[10:01] mit dem Begriff Objekt.

[10:02] Da wird es natürlich Zeit,

[10:04] das Objekt selbst erstmal zu erläutern.

[10:06] Und ich sage immer so,

[10:08] das Objekt ist ein Ding der realen Welt.

[10:11] Das wäre jetzt erstmal so der eine Satz,

[10:13] den ich dazu sagen würde.

[10:14] Und dann schließe ich direkt ein Beispiel an.

[10:17] Ich könnte mir vorstellen,

[10:19] dass ein Objekt ein Hund ist

[10:20] oder ein Tisch

[10:21] oder das altbekannte Auto

[10:23] oder auch etwas Abstraktes,

[10:24] wie zum Beispiel ein Versicherungsvertrag.

[10:28] Alle Objekte haben gemeinsam,

[10:30] dass sie Eigenschaften haben und Funktionen.

[10:33] Diese Eigenschaften heißen in der Objektorientierung Attribute

[10:36] und die Funktionen heißen Methoden.

[10:39] Beispiele für Eigenschaften wären

[10:41] die Augenfarbe des Hundes oder das Alter

[10:44] oder der Polizierungstag des Versicherungsvertrages.

[10:49] Und Methoden wären beim Hund zum Beispiel,

[10:52] na klar, gib laut!

[10:55] Oder beim Versicherungsvertrag so etwas wie polisiere oder beende.

[11:01] Damit haben wir jetzt schon mal das Objekt beschrieben.

[11:04] Ich denke, das ist einfach eine schöne, verständliche Erklärung.

[11:08] Wichtig sind die Schlüsselwörter Attribut und Methode.

[11:12] Die wollen die Prüfer auf jeden Fall hören.

[11:14] Daraus setzt sich ein Objekt zusammen.

[11:16] Und das ist ja auch das Besondere bei der Objektorientierung,

[11:18] dass nämlich genau diese beiden Dinge

[11:20] zusammen in einem Objekt gekapselt sind.

[11:23] Dazu kommen wir ja gleich noch.

[11:26] Jetzt würde ich nach der Erklärung des Objekts

[11:28] auch noch zur Erklärung der Klasse übergehen,

[11:31] obwohl das jetzt noch nicht genannt wurde bislang.

[11:34] Aber die meisten objektorientierten Sprachen

[11:36] arbeiten ja nun mal mit Klassen,

[11:38] um Baupläne für Objekte zu definieren.

[11:42] Und genauso würde ich die Klasse auch beschreiben,

[11:44] als Bauplan für Objekte.

[11:46] Es gibt so ein paar Schlüsselwörter.

[11:48] Wenn ich die höre, dann weiß ich,

[11:50] dass der Prüfling verstanden hat,

[11:51] was ein Objekt und eine Klasse auszeichnet.

[11:53] Eine Klasse, wie gesagt, könnte man Bauplan nennen

[11:56] oder Blaupause oder Vorlage oder wie auch immer.

[12:00] Und dann würde ich im Anschluss erklären,

[12:02] dass ich aus dieser Klasse mehrere Objekte erzeugen kann.

[12:06] Hier wäre dann das Schlüsselwort Instanz interessant.

[12:09] Also ein Objekt ist eine Instanz der Klasse.

[12:13] Und als Beispiel könnte ich noch abgrenzen.

[12:15] In einer Klasse würde ich vielleicht festlegen,

[12:17] bei einem Auto die Farbe oder bei einer Person den Namen.

[12:22] Bei den konkreten Objekten der Klasse

[12:25] ist jetzt also sichergestellt,

[12:27] dass sie alle die Attribute und Methoden definiert haben,

[12:31] die in der Klasse vorgegeben sind.

[12:33] Aber die Werte dieser Attribute sind dann unterschiedlich.

[12:37] Zum Beispiel gibt es einen blauen Mercedes

[12:39] oder einen grünen Ford.

[12:41] Oder es gibt Herrn Stephan Mackel oder Frau, wie auch immer.

[12:48] Dann haben wir eigentlich Objekt und Paradigma erklärt.

[12:52] Dann kommen wir jetzt zu den drei zentralen Eigenschaften,

[12:56] Besonderheiten, Prinzipien der Objektorientierung.

[13:03] Und die wollen eigentlich die Prüfer immer gerne hören.

[13:05] Das ist nämlich die Kapselung, die Vererbung und die Polymorphie.

[13:09] Kapselung, wenn ich das erklären müsste, würde ich sagen,

[13:12] Objekte kapseln Attribute und die zugehörigen Methoden.

[13:16] Der Zugriff auf die Attribute sollte nur über entsprechende Methoden möglich sein,

[13:20] damit die Manipulation der Werte verhindert wird.

[13:24] Und das Objekt dadurch auch immer in einem gültigen Zustand ist.

[13:29] Das ist das Besondere bei der Objektorientierung ja,

[13:32] dass die Funktionen und die Eigenschaften gemeinsam in einem Ding,

[13:36] nämlich genau in diesem Objekt bzw. in der Klasse dann definiert werden.

[13:40] In anderen Programmiervorgehensweisen, z.B. bei der strukturierten Programmierung

[13:45] oder auch der funktionalen Programmierung, sind eben die Funktionen

[13:49] und die Daten, auf denen diese Funktionen arbeiten,

[13:52] nicht gemeinsam irgendwo abgelegt, sondern getrennt.

[13:55] Und das zeichnet eben die Objektorientierung aus.

[13:58] Es war ja der Ansatz damals zu sagen, wir versuchen die Realität abzubilden.

[14:02] Und da haben diese Objekte eben Funktionen und Eigenschaften,

[14:06] und zwar gemeinsam, und ich trenne die nicht.

[14:10] Ich könnte jetzt bei der Kapselung noch tiefer einsteigen,

[14:13] getter, setter usw. erläutern. Ich würde das nicht machen.

[14:16] Ich würde die Kapselung erst mal so grob erklären wie jetzt,

[14:19] dann die Vererbung und Polymorphie nachschieben,

[14:22] und dann kann man immer noch, vielleicht auch mit Nachfrage bei den Prüfern,

[14:26] dann in den einen Bereich tiefer einsteigen.

[14:29] Man könnte dann z.B. sagen, Kapselung, Vererbung ist abgehakt,

[14:32] und dann frage ich die Prüfer einfach, was soll ich denn jetzt vertiefen?

[14:35] Soll ich alles von vorn bis hinten machen?

[14:37] Soll ich Kapselung, Vererbung, wie auch immer?

[14:39] Oder vielleicht fragen die Prüfer mich ja auch was.

[14:42] Ich muss also nicht unbedingt jetzt 15 Minuten lang wie ein Wasserfall reden.

[14:46] Wenn ich so einen groben Überblick gegeben habe,

[14:49] kann ich ja auch mit den Prüfern in Interaktion treten.

[14:52] Ich kann sie auch fragen, was wollen sie denn jetzt gerne hören?

[14:55] Oder soll ich dies und das und jenes noch vertiefen?

[14:58] Also, das wäre es dann zur Kapselung.

[15:00] Kommen wir zur Vererbung.

[15:02] Die Vererbung würde ich so erklären,

[15:04] dass Klassen ihre Attribute und Methoden an andere Klassen vererben können.

[15:09] Damit würden dann diese Attribute und Methoden

[15:11] diesen erbenden Klassen zur Verfügung stehen.

[15:14] Die vererbende Klasse nennt man Basisklasse,

[15:17] die erbende Klasse nennt man Subklasse.

[15:20] Das wäre es erstmal zur Vererbung.

[15:22] Ich würde da jetzt gar nicht weiter darauf eingehen,

[15:24] was es dann alles Tolles gibt und was das für Vorteile hat,

[15:26] sondern direkt zur Polymorphie weitergehen.

[15:28] Polymorphie ist erfahrungsgemäß immer das,

[15:31] was die Prüflinge nicht so gut erklären können.

[15:35] Ist zugegebenermaßen ja auch ein bisschen schwierig.

[15:38] Ich würde erstmal anfangen bei der Polymorphie mit der Übersetzung.

[15:42] Vielgestaltigkeit bedeutet das ja.

[15:44] Das ist erstmal schon mal der eine Punkt, den ich abhaken kann.

[15:47] Und dann versuche ich das mal so zu erklären.

[15:50] Polymorphie bedeutet, dass Variablen Objekte

[15:53] unterschiedlichen Typs zugewiesen werden können.

[15:55] Die sich beim Aufruf derselben Methode dann unterschiedlich verhalten.

[15:59] Beispiel, altbekannt aus Java wahrscheinlich, die List.

[16:03] Ich habe eine List und definiere eine Variable,

[16:06] zum Beispiel vom Typ List of String.

[16:08] Ich kann dann dieser Variablen sowohl eine ArrayList zuordnen,

[16:13] aber auch eine LinkedList.

[16:15] Die haben dann zwar dieselben Funktionen, also Methoden,

[16:18] aber wenn ich diese Methoden dann aufrufe

[16:20] und ich habe zur Laufzeit eine ArrayList oder eine LinkedList,

[16:23] dann verhalten sich diese Methoden eben unterschiedlich,

[16:26] weil die Implementierung unterschiedlich ist.

[16:29] Bei der Objektorientierung haben wir diese Polymorphie

[16:32] immer bei der Vererbung oder wenn wir Interfaces benutzen.

[16:36] Und überall dort, wo ich eben eine Basisklasse oder ein Interface erwarte,

[16:40] zum Beispiel als Parameter bei einer Methode,

[16:43] dort kann ich auch eine Subklasse hereingeben

[16:47] oder eine Klasse, die das Interface implementiert.

[16:50] Das ist quasi Polymorphie, wie wir sie häufig in der Objektorientierung haben.

[16:55] Da gibt es ja auch diesen schönen Spruch,

[16:58] wir implementieren immer gegen ein Interface

[17:00] und niemals gegen eine Implementierung.

[17:03] Das heißt, wir verwenden entweder Basisklassen oder Interfaces

[17:06] in unseren Schnittstellen und können dann zur Laufzeit

[17:10] irgendwelche abgeleiteten Subklassen, was auch immer, da reingeben,

[17:14] also eine konkrete Implementierung.

[17:16] Der Algorithmus verlässt sich aber nur auf die abstrakte Schnittstelle.

[17:23] Gut, damit haben wir jetzt die wichtigsten Punkte zur Objektorientierung abgehakt.

[17:28] Das wäre jetzt so mein erster Überblick, um in dieses Thema einzusteigen.

[17:33] Man merkt vielleicht schon, dass die einzelnen Teilbereiche

[17:36] noch deutlich tiefer beleuchtet werden können.

[17:39] Die ganzen Schlüsselwörter, die es da so gibt,

[17:41] und die Sichtbarkeitsmodifizierer und, und, und, haben wir alles ausgelassen.

[17:45] Das verteile ich mal auf die nächsten Episoden.

[17:49] Heute ging es hauptsächlich darum, mal zu zeigen,

[17:51] wie man an solche Fragen rangeht und was die Prüfer dort gerne hören wollen.

[17:55] Ich fasse es nochmal zusammen.

[17:57] Wir wollen unser gesamtes Wissen als Prüfling gerne darstellen,

[18:01] aber bitte strukturiert und präzise.

[18:04] Vom Allgemeinen zum Speziellen, gerne auch mit Beispielen.

[18:10] Und wenn die Prüfer dann mal nachfragen, kann man gerne ins Detail auch einsteigen

[18:16] oder genau zu einem Schlüsselwort was sagen, wenn die das denn hören wollen.

[18:22] Zum Bereich der Objektorientierung,

[18:24] muss es ja nicht immer über die Frage, was ist Objektorientierung kommen,

[18:29] sondern es gibt auch verschiedene andere Fragen,

[18:31] die natürlich in die gleiche Richtung gehen.

[18:33] Ich hatte es schon erwähnt, je nachdem, wie der Prüfling so eingeschätzt wird,

[18:36] steigt man entweder mit einer High-Level-Frage ein

[18:38] oder man geht ganz detailliert rein.

[18:40] Ich habe jetzt einfach mal nur ein paar Fragen aufgeschrieben,

[18:43] die im Umfeld der Objektorientierung sonst eventuell auch mal gestellt werden könnten.

[18:48] Ich liste die einfach mal auf, geht alles in die gleiche Richtung,

[18:52] rund um die Objektorientierung.

[18:55] Klassiker ist sowas wie, was ist der Unterschied zwischen Objekt und Klasse.

[18:59] Ist etwas, was jeder Anwendungsentwickler wissen müsste,

[19:03] was erstaunlich viele aber nicht vernünftig erklären können.

[19:07] Warum verwendet man Getter und Setter, anstatt Attribute sichtbar zu machen?

[19:12] Das zielt ab auf die Kapselung.

[19:15] Werden wir in einer späteren Episode noch mal vertiefen.

[19:20] Was wird in einem Objekt gekapselt?

[19:23] Das haben wir eben schon gehört.

[19:25] Methoden und Attribute.

[19:27] Und wichtig ist, dass die Methoden zu diesen Attributen passen.

[19:30] Ich nenne dann immer gerne zugehörige Methoden.

[19:33] Denn es wäre blöd, wie z.B. in einem Auto,

[19:36] wenn ich eine Funktion, eine Methode bremse,

[19:40] und ich habe dann so etwas wie ein Attribut Augenfarbe.

[19:44] Augenfarbe passt nicht zu einem Auto.

[19:47] Die Methoden und die Attribute müssen auch zusammenpassen.

[19:53] Was sind die drei wichtigsten Konzepte der Objektorientierung?

[19:56] Das haben wir eben gehört.

[19:58] Das wären dann die Kapselung, Vererbung, Polymorphie.

[20:00] Das ist also nur ein anderer Einstieg in das ganze Geleier,

[20:04] was wir eben schon gehört haben.

[20:07] Und dann könnte man noch ganz locker einsteigen,

[20:09] mit welchen Programmierparadigmen gibt es.

[20:11] Dann würde man natürlich sagen,

[20:13] man könnte die Historie jetzt aufzählen,

[20:16] von strukturiert über objektorientiert, funktional usw.

[20:19] Meistens wollen die Prüfer aber dann irgendwann

[20:22] was zur Objektorientierung hören,

[20:24] denn das ist nun mal einfach der verbreitetste Weg

[20:27] zu entwickeln heutzutage

[20:29] und natürlich auch definitiv Bestandteil der Abschlussprüfung.

[20:34] Gut, das war es für heute.

[20:36] Ich werde die einzelnen Säulen der Objektorientierung

[20:39] in den nächsten Episoden dann noch mal vertiefen

[20:42] und dann auch auf Schlüsselwörter und wirklich die Details eingehen,

[20:46] die man da in der Prüfung auch von einem Prüfling erwartet.

[20:49] Für heute soll dann erst mal Schluss sein.

[20:52] Ich sage danke fürs Zuhören.

[20:55] Wenn euch die Episode gefallen hat,

[20:57] dann empfehlt mich gerne weiter.

[20:59] Ansonsten gebt mir gerne Feedback auf der Website

[21:02] oder schickt mir eine Mail.

[21:04] Die Shownotes und Literaturempfehlung und Links

[21:07] findet ihr wie immer auf der Website

[21:09] unter anwendungsentwicklerpodcast.de

[21:12] slash 2

[21:14] Vielen Dank fürs Zuhören und bis zum nächsten Mal.

[21:17] Tschüss!

[21:25] Untertitel im Auftrag des ZDF für funk, 2017

Häufige Fragen im Fachgespräch

Häufige Fragen im Fachgespräch – Kapselung – Anwendungsentwickler-Podcast #6
Polyglot Clean Code Developer
About the Author
Ausbildungsleiter für Fachinformatiker:innen Anwendungsentwicklung, IHK-Prüfer und ehemaliger Hochschuldozent für Programmierung und Software-Engineering.

6 comments on “Häufige Fragen im Fachgespräch – Objektorientierung – Anwendungsentwickler-Podcast #2”

  1. Dennis Benz sagt:

    Hi Stefan,

    ich wollte dir für deine Podcasts und Vorlagen danken, die du veröffentlicht hast. Die Sachen haben mir für die Vorbereitung auf die Abschlussprüfung sehr geholfen und mich im Endeffekt auch erfolgreich durchgebracht :). Ich hoffe, dass noch viele neue Azubis von deiner Arbeit profitieren können.

    Vielen Dank und Viele Grüße
    Dennis

  2. Stefan Macke sagt:

    Hallo Dennis,

    freut mich, dass ich helfen konnte. 🙂

    Herzlichen Glückwunsch zur bestandenen Prüfung!

    Ich wünsche dir einen guten Start in den Beruf.

    Viele Grüße!
    Stefan

  3. Arela sagt:

    Hallo Stefan,

    ich muss mich auch mal bedanken. Und mache das einfach mal unter diesem Podcast.
    Die Podcasts sind genial, genau wie der Rest deiner Informationen die du uns zur Verfügung stellst.
    Nicht nur hat mir deine Latex Vorlage das Leben gerettet nachdem ich 6 Wochen im Krankenhaus lag und in zwei Tagen alles fertig schreiben musste. Auch konnte ich die Podcasts hören während ich durch Medikamente halb blind geworden bin und so doch noch lernen. Ich kann so manche Teile schon Wort für Wort mitsprechen 😉

    Jetzt grade steht nur noch mein Fachgespräch aus und der Rest ist bestanden. Ich verdanke dir so viel, am liebsten würde ich dir einen Strauß Blumen schicken.

    Long story short: VIELEN DANK für deine ganze Mühe!

    Liebe Grüße
    Arela

  4. Stefan Macke sagt:

    Hallo Arela, danke für das Feedback. Freut mich, dass ich helfen konnte und kann! 😀

  5. Gülcan sagt:

    Hallo Stefan,
    lieben herzlichen Dank für diese wertvollen Inhalte. Jeder Prüfling, bevor et an der Prüfung teilnimmt, sollte diese hier lernen und den gesamten Stoff hiermit wiederholen.
    Denn, ich denke, dass diese Inhalte von großer Bedeutung sind, da die Informationen schön verständlich, sowie auf das Wesentlichste zusammengefasst sind.
    Super finde ich auch, dass Du sie als AUDIO-Podcast gemacht hast. Denn als zukünftige IT´ler sollte auch ein geschärfter Blick für die Umwelt und Green-IT vorhanden sein. Schließlich hat jedes Video ein sehr hohes Übertragungsvolumen, was die Server zusätzlich belastet. Mit Audio ist die Transferrate erheblich günstiger und somit umweltfreundlicher.
    Wirklich toll, danke.
    Gülcan

  6. Stefan Macke sagt:

    Hallo Gülcan, vielen Dank für dein Feedback. Das freut mich sehr.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert