Object Oriented Programming Flashcards

1
Q

Was ist eine Klasse?

A

Die Klasse dient als Bauplan für Objekte und beschreibt Eigenschaften (Daten) und Methoden (Verhaltensweisen) der Objekte. In anderen Worten, wie das Objekt gebaut wird und wie es sich verhält. Formal gesehen belegt eine Klasse somit zur Laufzeit keinen Arbeitsspeicher, sondern nur die Objekte, die von ihr instanziiert wurden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist ein Objekt?

A

Ein Objekt(auch Instanz genannt) bezeichnet ein Exemplar eines bestimmten Datentyps oder einer bestimmten Klasse (auch “Objekttyp” genannt). Objekte sind konkrete Ausprägungen (Instanzen) eines Objekttyps und werden während der Laufzeit erzeugt (Instanziierung). Sie sind nicht nur zu Ihren eigenen Klassen, sondern auch zu den entsprechenden Basisklassen zuweisungskompatibel.

Jedes Objekt hat einen Zustand, ein Verhalten und eine Identität.

Der Zustand des Objektes setzt sich aus seinen Eigenschaften (Daten) und Verbindungen zu anderen Objekten zusammen.

Das Verhalten des Objektes wird durch die Menge seiner Methoden beschrieben.

Die Identität unterscheidet ein Objekt von anderen Objekten, auch wenn diese anderen Objekte den gleichen Zustand und das gleiche Verhalten haben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie können Objekte erzeugt werden?

A

Durch Konstruktion wird aus einer Klasse ein Objekt oder Exemplar(Instanz) erzeugt. Die Instanz besitzt dann zur Laufzeit seinen eigenen Datentyp, Eigenschaften und Methoden.

Konstruktor kann nicht explizit aufgerufen werden (new).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was passiert bei der Vererbung?

A
  • Vererbung schafft neue Klassen, die von ihrer Elternklasse alle Elemente und die Schnittstelle erben.
  • Eine abgeleitete Klasse erbt alle Eigenschaften der Basisklasse und kann zusätzliche Eigenschaften definieren.
  • Es kann nur von einer Basisklasse geerbt werden.
  • Beim Erzeugen eines Objekts einer abgeleiteten Klasse wird immer
    • zuerst der Konstruktor der Basisklasse aufgerufen,
    • dann der Konstruktor der abgeleiteten Klasse
    • falls der Konstruktor der Basisklasse Parameter hat muss die Initialisierungsliste verwendet werden.
  • Referenz einer abgeleiteten Klasse kann einer Referenz der Basisklasse zugewiesen werden –> umgekehrte Zuweisung ist implizit nicht möglich
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was bezeichnet man als Container-Klassen?

A

Container-Klassen beschreiben Objekte, die eine statisch unbestimmte Zahl anderer Objekte aufnehmen können und dafür eine bestimmte Organisationsform verwenden.

  • Dictionary,
  • Stack
  • List
  • „Arrays“
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist eine Methode?

A
  • Methoden enthalten das gesamte dynamische Verhalten eines Objekts oder einer Klasse.
  • Methoden sind Code-Blöcke die eine Serie von Statements enthalten.
  • Methoden definieren die Aktionen oder Operationen, die von einer Klasse unterstützt werden.
  • Methoden können Input über Argumente erhalten und einen Ergebniswert an den Aufrufer zurückgeben.
  • Methoden werden definiert über
    • Zugriffsberechtigung
    • Rückgabewert
    • Name
    • optional Parameterliste

Methoden sind

  • nur als Member von Klassen oder Strukturen erlaubt (keine globalen Methoden)
  • Parameter
    • Referenzparameter: mit ref gekennzeichnet
    • Ergebnisparameter: mit out gekennzeichnet
    • Wertpaparameter: alle übrigen Parameter

Method overloading

ermöglicht mehrere gleichnamige Methoden in einer Klasse oder Struktur

  • müssen sich in der Parameterliste unterscheiden:
    • nach der Anzahl der Parameter oder
    • nach dem Typ des Parameters an einer Parameterposition
    • bei der Kompilierung wird aufgrund der aktuellen Parameter die passende Methode ermittelt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind statische Methoden?

A
  • Statische Methoden gehören nicht zu einem einzelnen Objekt, sondern zur Klasse an sich.
  • Sie werden ohne ein bestimmtes Objekt ausgeführt.
  • In static Methoden kann nur auf static Elemente zugegriffen werden.
  • Es kann nicht über eine Instanz zugegriffen werden. Der Zugriff von außen erfolgt über den Klassennamen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wofür steht „this“?

A
  • this ist eine Referenz auf das aktuelle Objekt
  • Es kann damit auf alle Member des aktuellen Objekts zugegriffen werden.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was versteht man unter Polymorphismus?

A

Abgeleitete Klassen haben bestimmte Funktionalitäten mit der Basisklasse gemeinsam, können jedoch auch eigene Verhaltensweisen definieren. Diese Fähigkeit nennt man Polymorphismus.

Das Objekt kann zur Laufzeit wie ein Objekt der Basisklasse behandelt werden. Wenn eine Methode aufgerufen wird, wird erst der genaue Typ festgestellt und die entsprechende Methode der abgeleiteten Klasse aufgerufen.

Virtuelle Methoden und Properties

  • Zur Laufzeit wird die zum aktuellen Objekt gehörende Methode/Property aufgerufen.
  • dynamisches Binding („late binding“)
  • Konstruktoren dürfen NICHT virtuell sein!
  • Das Objekt kann in mehreren Gestalten auftreten (polymorph)

Virtuelle Methoden und Properties müssen gekennzeichnet werden:

  • in der Basisklasse mit dem Schlüsselwort virtual
  • in der abgeleiteten Klasse mit override
  • Implementierung der Basisklasse kann über base aufgerufen werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was sind abstrakte/virtuelle Klassen?

A

Abstrakte Klassen

  • Die abstrakten Klassen sind meistens nicht vollständig implementiert.
  • können nicht direkt initialisiert werden. Um eine Instanz zu erzeugen, muss eine abgeleitete Klasse erstellt werden, die alles vollständig implementiert.
  • Abstrakte Methoden und Properties
    • haben keine Implementierung
    • werden mit dem Schlüsselwort abstract gekennzeichnet
    • dürfen nur in abstrakten Klassen stehen
    • müssen in abgeleiteten Klassen überschrieben werden

Virtuelle Klassen

  • haben virtuelle Member
  • oder: alle Klassen die nicht sealed sind
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein Konstruktor?

A

Ein Konstruktor

  • ist eine Methode, die beim Erzeugen des Objekts automatisch aufgerufen wird
  • heißt so wie die Klasse
  • hat keinen Rückgabetyp (auch nicht void)
  • kann nicht explizit aufgerufen werden (new)
  • kann überladen werden
  • Über die Initialisierungsliste kann ein anderer Konstruktor aufgerufen werden (: this, : base)

Defaultkonstruktor

  • wird automatisch erzeugt, wenn die Klasse keinen Konstruktor enthält
  • hat keine Parameter
  • enthält keine Anweisungen
  • initialisiert alle Felder
    • mit 0, null oder false
    • bzw. mit den Werten der Feldinitialisierung
  • wird nicht erzeugt, wenn die Klasse irgend einen Konstruktor enthält
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was sind Exceptions?

A
  • Ist ein Fehler der während der Ausführung des Programms auftritt.
  • Wenn ein solcher Fehler passiert, dann erzeugt die Runtime ein Exception-Objekt und wirft (throws) es.
  • Wenn die Exception nicht gefangen wird (catch), dann wird das Programm beendet.
  • Exceptions leiten von System.Exception ab (z.B. DivideByZeroException, FileNotFoundException)
  • Man kann auch Exception-Klassen selbst definieren
  • Exceptions werden mit einem try-catch-finally-Blöcken behandelt
    • zumindest try-catch oder try-finally (der Fehler gilt dadurch nicht als behandelt)
    • Der Code, der den Fehler auslösen kann kommt in den try-Block und die Fehlerbehandlung in den catch-Block. Es kann mehrere catch-Blöcke für unterschiedliche Fehler geben.
    • Der finally-Block wird immer ausgeführt, auch wenn der Fehler nicht aufgetreten ist und wird oft für clean-up Code verwendet.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly