SoftEngFragen2.txt

Card Set Information

Author:
Anonymous
ID:
160731
Filename:
SoftEngFragen2.txt
Updated:
2012-07-02 06:41:27
Tags:
SoftEng
Folders:

Description:
SoftEngFragen2
Show Answers:

Home > Flashcards > Print Preview

The flashcards below were created by user Anonymous on FreezingBlue Flashcards. What would you like to do?


  1. Erklären Sie kurz was eine Instanz ist.
    Objekt einer Klasse
  2. Wer darf bei der Geheimhaltung nicht auf wen oder was zugreifen?
    • Auf private darf nicht von außen und nicht von abgeleiteter Klasse zugegriffen werden.
    • Auf protected darf nur von abgeleiteter Klasse zugegriffen werden, nicht von außen.
  3. Warum ist eine Klassenmethode besonders für das Arbeiten mit Klassenvariablen geeignet?
    Weil sie uneingeschränkten Zugriff auf alle Variablen der Klasse hat.
  4. Wie wird in C++ die Eigenschaft des Polymorphismus aktiviert?
    Durch das Schlüsselwort "virtual"
  5. Wann wird das Schlüsselwort „virtual“ eingesetzt?
    • Der Polymorphismus wird damit aktiviert.
    • Polymorphismus:
    • Es gibt in einer Basisklasse und in einer von ihr abgeleiteten Klasse Methoden mit gleichem Namen, aber unterschiedlichen Parametern. Da erst zur Laufzeit entschieden werden kann, welche Methode aufgerufen wird, muss die Methode in der Basisklasse als "virtual" bezeichnet werden.
  6. Worin liegt der Unterschied ob in der Parameterliste einer Methode eine Variable odereine Referenz auf eine Variable übergeben wird.
    • Normale Übergabe erstellt eine temporäre Kopie der übergebenen Variable. Dies verbraucht Rechenzeit und Speicher.
    • Referenzen bilden einen Alias Name für die übergebene Variable. Es wird direkt an der Speicherstelle der übergebenen Variable gearbeitet, es wird keine Rechenzeit oder Speicher verbraucht.
  7. Mit welcher Technik erreicht man beim objektorientierten Design einer größeren Applikation die Einführung einer Hierarchie von Abstraktionsebenen zur Abbildung der Wirklichkeit?
    Mit Vererbung / Ableitung von Basisklassen
  8. Was für einen wesentlichen Vorteil hat es, wenn man Objekte verwendet?
    Sie beinhalten alle Varaiblen und Methoden der Klasse.
  9. Beschreiben Sie den Unterschied zwischen Klassenvariablen und Klassenmethoden.
    Beide sind pro Klasse nur einmal vorhanden. Klassenmethoden benötigt man, um Klassenvariablen zu lesen oder zu verändern.
  10. Warum soll man friend-Deklarationen nur sparsam verwenden?
    Weil befreundete Klassen und methoden vollen Zugriff auf alle Datenelemente und Methoden einer Klasse haben.
  11. Warum schreibt man eine Klassendeklaration gern als Header-Datei?
    Weil das Programm dadurch gut strukturiert und übersichtlich gestaltet werden kann.
  12. Welche Elemente der Basisklasse werden nicht vererbt?
    Konstruktor, Destruktor und Freundschaft zu anderen Klassen.
  13. Wie kann man erreichen, dass von einer Klasse keine Objekte erzeugt werden können?
    Es muss eine abstrakte Klasse sein. Das ist eine Klasse mit einer oder mehreren rein virtuellen Methoden.
  14. Welche Aufgaben hat ein Konstruktor?
    Wird automatisch aufgerufen wenn eine Instanz angelegt wird. Dient der Initialisierung von Elementen einer Instanz. Es kann mehrere Konstruktoren mit verschiedenen Parameterlisten geben.
  15. Was bedeutet Überladen einer Funktion?
    Es existieren mehrere Funktionen mit selbem Namen, aber unterschiedlicher Parameterliste. Die Parameterliste muss sich eindeutig unterscheiden. Der Compiler entscheidet zur Laufzeit anhand der übergebenen Parameter, welche Funktion aufgerufen wird.
  16. Was ist der Vorteil des Polymorphismus aus Sicht des Anwenders?
    Man kann Objekte verschiedenen Typs formal einheitlich behandeln. Ein und dieselbe Botschaft (z.B. berechneFlaeche) löst unterschiedliche Aktionen aus, je nach Objekt. Der Anwender muss sich nicht viele Methoden merken, er braucht sich nur eine Methode für alle Objekte merken.
  17. Was ist eine abstrakte Klasse?
    Eine Klasse, die mindestens eine reine virtuelle Methode enthält. Es können keine Objekte von abstrakten Klassen erzeugt werden. Dient als Basisklasse bei der Vererbung.
  18. Warum wird bei der Vererbung in der abgeleiteten Klasse nur das neu hinzugekommene hineingeschrieben?
    Public und Protected Methoden und Variablen aus der Basisklasse werden mit vererbt und müssen deshalb nicht zusätzlich aufgeführt werden.
  19. Wozu benutzt man Referenzvariablen?
    Leicht verständlicher Ersatz für Zeiger auf eine Variable im Speicher. Sicherer als globaleVariablen. Referenzvariable ist nur lokal verfügbar. Z.B. bei Funktionen mit Referenzvariablen: Parameterliste nur innerhalb dieser Funktion.
  20. Wird der Konstruktor einer Klasse bei einer Vererbung mit vererbt?
    Nein. Da in der abgeleiteten Klasse eventuell Datenelemente hinzugefügt werden. Daher braucht jede Klasse einen eigenen Konstruktor, weil sich die Anzahl der Parameter unterscheiden können.
  21. Nenne Sie einen Anwendungsfall, bei welchem der Programmierer unbedingt einen Destruktor selbst schreiben sollte.
    z.B. beim Zugriff auf Daten. Bevor die Instanz gelöscht wird muss man einen Destruktor schreiben, der die Datei frei gibt, da der Standarddestruktor nur den reservierten Speicher freigibt, nicht die Datei auf die zugegriffen wurde.
  22. Was versteht man unter Faktorierung?
    Ist der Prozess, allgemeine Eigenschaften aus ähnlichen Klassen herauszuziehen und sie in einer neuen Basisklasse zusammenzufassen. Der Zweck ist der Aufbau einer hierarchischen Struktur der Klassen.
  23. Welche Vorteile hat eine allgemeine Schnittstelle für den Programmierer?
    Eine Schnittstelle entspricht einer vollständig abstrakten Klasse. Methodendefinitionen die für verschiedene, abgeleitete Klassen gleich sind, können in eine Definition zusammengefasst werden und müssen so nicht mehrfach geschrieben werden.
  24. Was wird bei Vererbung vererbt, was nicht?
    • Nicht vererbt wird: Destruktor, Konstruktor, befreundete Klassen und Variablen oderMethoden mit Schlüsselwort private
    • Vererbt werden: public, protected Methoden und Variablen.
  25. Was bedeutet der Begriff Basisklasse?
    Eine Klasse, von der man Unterklassen ableitet (Vererbung), wird als Basisklasse bezeichnet.Von ihr geht die Vererbungshierarchie aus.
  26. Was bedeutet der Begriff „Überladen“?
    Überladen bedeutet, dass manche Methoden den selben Namen tragen aber unterschiedliche Parameterlisten besitzen. Der Compiler sucht sich aufgrund der Parameter die passende Methode aus.
  27. Wozu wird die Initialisierungsliste benutzt?
    Wird benutzt um Felder zu initialisieren. Jede Listenzeile ruft den Konstruktor der zugehörigen Klasse auf.
  28. Was versteht man unter einer rein virtuellen Methode?
    Virtuelle Methoden sind Methoden, die in der Basisklasse nur deklariert, nicht definiert werden (abstrakte Klasse). Daher kann es keine Objekte einer abstrakten Klasse geben.
  29. Wann wird das Schlüsselwort „virtual“ eingesetzt?
    Damit wird der Polymorphismus aktiviert.
  30. Was passiert bei der Vererbung, wenn die Basisklasse mit dem Schlüsselwort protectedvererbt wird?
    Wird mit protected vererbt, wird der public Teil der Basisklasse in protected umgewandelt. Protected bleibt protected.
  31. Nennen Sie ein Anwendungsbeispiel für eine Klassenmethode.
    Um Klassenvariablen auszulesen oder zu beschreiben. Klassenvariablen werden z.B. zum Zählen aller Objekte verwendet.
  32. Eine Software soll nur in Details von für einen anderen Kunden verändert werden. WelchenVorteil bietet in diesem Fall die Vererbung im Gegensatz zu einer Kopie?
    Hauptvorteil besteht darin, dass Anpassungen in der Basisklasse, direkte Auswirkungen auf das Verhalten der abgeleiteten Klassen haben (Anpassungen werden automatisch übernommen). Wird nur eine Kopie erstellt, muss viel mehr Aufwand betrieben werden um die Software anzupassen.
  33. Was genau bewirkt eine friend-deklaration?
    Die friend-Deklaration bewirkt, dass die Methode vollen Zugriff auf alle Datenelemente und alle Methoden der Klasse hat, in der die friend-Deklaration gemacht wurde.
  34. Warum verwendet man gern Felder, wenn man mit vielen Instanzen einer Klasse arbeitet?
    Werden einzelne Instanzen verwendet, müssen sie unterschiedliche Namen besitzen. Dies zieht einen hohen Programmieraufwand nach sich um z.B. Objekte zu durchsuchen. Ein Feld aus Objekten, kann einfach mit einer Schleife durchlaufen und durchsucht werden.
  35. Warum ist Polymorphismus nicht nur eine nette Ergänzung der OOP, sondern ein wesentlicher Bestandteil?
    Es ermöglicht den Einsatz von allgemeinen Schnittstellen, damit steigt die Flexibilität des Programms. Es ist somit einfach verschiedene Varianten zu schreiben ohne ein neues Programm zu erstellen.

What would you like to do?

Home > Flashcards > Print Preview