Klassen Flashcards
(25 cards)
Was versteht man unter objektorienterte Programmierung?
Reale Objekte und Sachverhalte mittels Software abstrakt zu modellieren bzw darzustellen
Was versteht man unter Computational Thinking?
Das Herangehen an Problemstellungen in einer Denkweise eines Computers. Probleme identifizieren > Probleme abstrakt modellieren > Teilprobleme zerlegen > Lösungsstrategien finden > formalisiert darstellen, sodass man als Mensch sie verstehen und ausführen kann
Was bedeutet Abstraktion? Was versteht man in der objektorientierten Programmierung darunter?
Eine vereinfachte Modellierung durch Weglassen von Details. Reale Sachverhalte und ihre Eigenschaften werden in vereinfachter Weise abgebildet
Was ist das Ziel in der objektorientierten Programmierung?
Lösungen von Problemstellungen, sowie Modelle möglichst einfach und realitätsnah zu modellieren
Was versteht man unter Kapselung?
Konzepte (z.B. Form, Kreis, Polygon) zu separieren; Datenkapselung verhindert den Missbrauch und die falsche Benutzung der Daten; Zugriffsrechte für Variablen, Methoden und Klassen werden definiert; erlaubt einfache Modellierung
Was sind Klassen?
Baupläne mit verschiedenen Eigenschaften und Methoden für eine Reihe von Objekten. Sie enthalten Eigenschaften (Membervariablen) und Operationen/Methoden (Memberfunktionen) mit denen man Objekte erzeugen kann. Sie dienen der Abstraktion und der Repräsentation von realen Objekten und Sachverhalten
Was sind Instanzen einer Klasse?
Objekte einer Klasse, welches Exemplare aus den Eigenschaften und Methoden einer Klasse sind. Durch Konstruktoren werden sie aus Klassen gebildet und haben ihren eigenen Datentyp, Eigenschaften und Methoden
Was ist eine Instanzierung?
Das Erzeugen eines konkreten Objekts einer Klasse. Während der Instanzierung wird ein Konstruktor ausgeführt.
Ein Beispiel für ein konkretes Objekt wäre ein Objekt, welches die Eigenschaften z.B. eines konkreten Autos z.B. einem Porsche beschreibt und in die Klasse “Auto” gehört, die Eigenschaften und Methoden für die Modellierung von Autos enthält
Welche Zugriffsebenen in der Kapselung gibt es?
private, protected und public
Was versteht man unter private?
Das Objekt ist durch Memberfunktionen zugreifbar; Zugriff nur innerhalb der Klasse; Standardeinstellung
Was versteht man unter protected?
Das Objekt ist nur durch die Klasse selbst oder durch abgeleiteten Klassen/Kindklassen (Vererbungen) zugreifbar
Was versteht man unter public?
Das Objekt ist öffentlich und ist immer von jedem außerhalb, als auch innerhalb der Klasse zugreifbar
Wie ist die Implementierung einer Klasse in C++ typischerweise aufgeteilt?
In zwei Dateien aufgeteilt. Die Deklaration der Klasse hat in der Datei die Endung “.h” und definiert die Struktur bzw. Schnittstelle für Nutzer. Die Implementierung hat in der Datei die Endung “.cpp” und implementiert die Memberfunktionen
Was ist ein Konstruktor?
Ein Konstruktor ist eine spezielle Methode bzw. Memberfunktion, die Objekte erzeugt, Ressourcen allokiert und Membervariablen initialisiert. Die Funktion hat keinen Rückgabetyp; der Name ist identisch zu dem der Klasse; Konstruktoren können mit Parametern versehen werden; Compiler definiert automatisch einen Konstruktor, falls noch keiner vordefiniert wurde
Was ist ein Destruktor?
Ein Destruktor ist verantwortlich für das Freigeben der vom Objekt genutzten allokierten Ressourcen; besitzt keinen Rückgabetyp; Name ist identisch zu dem der Klasse mit Tilde ~ davor; hat keine Parameter; niemals vom Nutzer aufgerufen; wird immer bei dynamischer Speicherallokation benötigt
Was versteht man unter einer Objekt-Zusammensetzung?
Dass in Membervariablen ein Objekt mehrere Objekte enthalten kann z.B. automatisch allokierte Objekte oder dynamisch allokierte Objekte in Pointern. Der Konstruktor muss diese Objekte immer initialisieren
Was versteht man unter Kopieren und Zuweisen?
Das Kopieren des Inhalts eines Objekts in ein anderes Objekt hinein. Explizit bei Zuweisungen; Implizit bei Call by-Value oder Rückgabe. Der Compiler erzeugt Funktionen für Zuweisungen (assignments) und Copy Construction automatisch: erstellt shallow copy; Inhalt jeder Membervariable wird kopiert; Problem bei Pointern: nur die Adresse wird kopiert und nicht das Objekt auf das der Pointer zeigt
Was macht der Copy Konstruktor?
Er definiert, wie das Objekt kopiert wird; Operationen: Speicher allokieren > Daten kopieren
Was macht der Zuweisungs-Operator?
Zuweisung analog zum Copy Konstruktor, aber Zielobjekt existiert bereits. Operationen bei Zuweisung: prüfen, ob Quell- und Zielobjekt identisch sind > dynamisch allokierten Speicher im Zielobjekt freigeben > Speicher für neue Daten allokieren > Daten kopieren > Referenz auf das Objekt zurückgeben
Wie lautet die Regel der Drei?
Falls eine Klasse einer der drei Methoden Copy Konstruktor, Zuweisungsoperator; Destruktor besitzt, dann müssen alle drei implementiert werden; falls eine Methode fehlt, dann ist die Implementierung vom Compiler meist falsch
Was versteht man unter einer Vererbung?
Das erben der selben Eigenschaften, Methoden und Verhalten einer Klasse/Elternklasse an ihre abgeleitete Klasse bzw. Kindklasse; Verwandte Konzepte führen zu Klassen mit ähnlichen Charakteristika; führt zu ähnlichem Code; erlaubt Gemeinsamkeiten zwischen Klassen zu modellieren; erbt nur public oder protected deklarierte Memberfunktionen; abgeleitete Klasse kann Memberfunktion durch neue Implementierung überschreiben
Was versteht man unter Polymorphismus?
Wenn ein Pointer einer Elternklasse auf das Objekt der abgeleiteten Klasse zeigt; Pointer erlaubt nur Zugriff auf öffentliche Membervariablen und Memberfunktionen der Elternklasse
Was macht das Schlüsselwort “virtual”?
Es ermöglicht ein polymorphes Verhalten und sorgt dafür, dass auch beim Pointer auf Elternklasse, die Funktionen der entsprechenden Kindklasse des Objektes aufgerufen werden; “virtual” muss in der Elternklasse genannt werden
Gib ein Beispiel für eine Eltern- und Kindklasse
Tiere (Elternklasse) > Säugetiere, Fische (erste Kindklasse) > Kuh, Pferd, Lachs (zweite Kindklasse)