Objektorientierter Softwareentwurf
UML, C++
UML, C++
-
- 1 / 84
-
Flashcards
Nein
Durch einen, in dem Objekt definierten, Poniter auf das assoziierte Objekt.
Für welches Problem ist das Proxy Design Pattern vorgesehen?
Ein Proxy-Objekt ist im Prinzip ein Stellvertreter für ein anderes Objekt. Es wird zum Beispiel dann eingesetzt, wenn die Erstellung des eigentlichen Objektes teuer ist (Viel Zeit oder Speicher kostet), es verhält sich dann solange wie möglich wie das echte Objekt, und erst wenn es unumgänglich ist, das echte Objekt zu erzeugen, wird es vom Proxy erzeugt.
Für welches Problem ist das Singleton Design Pattern vorgesehen?
Ein Singleton-Objekt ist ein Objekt, welches in einer Applikation während der gesamten Laufzeit nur einmal existieren soll. Beispiele dazu wären Objekte, welche Systemresourcen verwalten wie Dateisysteme, Fenster auf dem Bildschirm, Schnittstellen und Peripheriegeräte. Alle Konstruktoren werden beim Singelton als private deklariert. Es ist nicht Threadsicher.
Für welches Problem ist das Command Design Pattern vorgesehen?
Mit dem Commandmuster können Befehle innerhalb einer Applikation gekapselt werden. Damit können Logdateien, Undo und Redo Verhalten und Skripts oder Makros innerhalb einer Applikation verwaltet werden. Das Objekt trennt die Benutzerschnittstelle von den Anwendungsobjekten, d.h. die Benutzerschnittstelle sendet Befehlsobjekte an die Anwendungsobjekte, ohne etwas über die Anwendungsobjekte wissen zu müssen. Die GUI-Objekte (Menu und Buttons) werden beim Start der Applikation einfach mit den passenden Befehlsobjekten initialisiert, und diese Befehlsobjekte werden fortan bei der Auswahl der entsprechenden Gui-Elementen von diesen an die Anwendungsobjekte weitergereicht.
Für welches Problem ist das Iterator Design Pattern vorgesehen?
Mit dem Iteratormuster können zusammengesetzte Objekte (Listen, Bäume, Arrays...) durchwandert werden, ohne dass der Anwender Kenntnis der internen Struktur des zusammengesetzten Objektes haben muss. Für jedes zusammengesetzte Objekt gibt es einen eigenen Iterator, aber alle Iteratoren besitzen dieselbe Schnittstelle. Damit kann die Art der Iteration vom zusammengesetzten Objekt und von der Anwendung getrennt werden.
Wird nach festgelegten Richtlinien(Checklisten) durchgeführt; Gefundene Fehler werden nicht behoben, es werden nur Lösungsvorschläge diskutiert;
Beim Funktionstest wird geprüft, ob ein System oder Teilsystem korrekt funktioniert und seinen Spezifikationen entspricht, also das tut was von ihm gefordert wird. Das Ziel des Tests ist es Fehler zu finden.
Beim Blackboxtest sind die Interna des Systems unbekannt, das System wird als Blackbox angesehen, und die Tests werden aus den Anforderungen (Use Cases) an das System gewonnen. Blackbox Tests werden meistens gegen Ende des Projektes zum Test von Teilsystemen und des Gesamtsystems eingesetzt.
Anforderungen erfassen, Analyse, Desing, Implementation und Test; Es wird nicht die ganze Projektzeit in diese Arbeitsschritte unterteilt, sondern jede Iteration beinhaltet grundsätzlich diese 5 Arbeitsschritte.
RUP Rational Unified Process (IBM)
Der Unified Process ist ein Use-Case gesteuerter, Architektur-zentrierter iterativer und inkremen-teller Prozess.
Wie lautet die Syntax der Vererbung in C++?
class erbendeKlasse : public My Class{}
/* erbendeKlasse erbt von MyClass */
Wie erzeugen Sie ein Objekt in C++?
<typ> <objektname> z.B:
Student s;
Wie vernichten sie ein Objekt, welches Dynamisch erzeugt wurde?
Über den Befehl delete. z.B:
Memory = new int[200];
um das Objekt Memory wieder zu löschen:
delete Memory;
Konstruktor, Destruktor, Copy-Konstruktor, Zuweisungs-Operator
C++, Java, C#, Visual Basic, PHP, JavaScript, Perl, Python, SmallTalk, usw.
Wenn die Variable/Objekt mit dynamisch mit dem new Operator erzeugt wurde.
static_cast<>()
dynamic_cast<>()
const_cast<>(); Umwandung in andere Typen sind mit diesem Operator nicht möglich
reinterpret_cast<>(); ist gleich zu setzen mit dem normalen aus dem C bekannten Cast
Eine Schablone für eine Funkton oder Klasse mit unbekannten Parametern. Mit Templates kann parametrisierbarer Code geschrieben werden, das heisst Code, der unabhängig von Datentypen ist. Der Benutzer eines Templates kann selbst angeben, für welchen Datentyp das Template Code erzeugen soll, er kann dabei auch Datentypen angeben, die bei der Erstellung eines Templates nicht bekannt waren.
Container, Iterator, Algorithmen
Container sind eine Art universelle Behälter für Daten. Dazu gehören Listen, Vektoren und Men- gen. Bei den Containern ist nicht vorgeschrieben wie sie implementiert sind, sondern nur welche Eigenschaften sie besitzen müssen. Ein Vektor muss z.B. efizienten wahlfreien (direkten) Zugriff auf seine Elemente erlauben, eine Liste hingegen muss efizientes Einfügen und Entfernen von Objekten ermöglichen. Eine Map wiederum ordnet zwei Elemente einander zu. Dabei dient eines als Schlüssel und das andere als Wert. Eine Map ist somit ein assoziativer Container und kann als kleine Datenbank betrachtet werden.
Iteratoren sind eine Art universelle Zeiger, mit denen durch Container iteriert werden kann. Sie können unabhängig vom Container benutzt werden, wobei aber jeder Container seine eigenen Ite- ratoren besitzt. Mit Iteratoren können auch Bereiche von Sequenzen definiert werden. (Einer zeigt auf den Beginn und ein anderer auf das Ende einer Sequenz). Iteratoren haben je nach Container zusätzliche Eigenschaften (Wie Pointerarithmetik und Direktzugriff).
lgorithmen wiederum können auf Sequenzen und Container angewendet werden. Es gibt unter anderem folgende Algorithmen: Suchen, Sortieren, Doppelte oder mehrfache Einträge entfernen, Zufällig Mischen, Suchen und entfernen, Eine Operation auf alle Elemente anwenden, Alle Elemente zählen die eine Bedingung erfüllen,
Inline Funktionen -> Zeitgewinn; Virtuelle Funktionen -> benötigt mehr Speicher; Exeptionhandling -> nicht deterministisch(wenn möglich vermeiden)
Warum muss der Destruktor einer Basis Klasse immer 'virtual' sein?
Das Löschen eines Objekts durch einen Pointer auf die Basis ruft ein undefiniertes Verhalten hervor, es sei denn, der Destruktor in der Basisklasse ist virtuell.
Die allgemeine Richtlinie besagt, dass ein Destruktor für eine Basisklasse entweder 'public' und 'virtual' oder 'protected' und nicht 'virtual' sein muss.
Für welches Prinzip steht das S in SOLID?
Single-Responsibility-Prinzip