UML, C++


Daniel Frutiger
Diese Lernkarten bieten eine umfassende Einführung in objektorientierte Softwareentwicklung, geeignet für fortgeschrittene Lernende. Sie behandeln zentrale Konzepte wie Klassen, Methoden, Vererbung und Komposition, sowie die Anwendung von SOLID-Prinzipien und Design Patterns. Praktische Beispiele und Abbildungen veranschaulichen die Syntax und Struktur von C++-Klassen und -Containern. Entwickler und Studierende profitieren von den detaillierten Erklärungen zu Algorithmen, Iteratoren und der Standard Template Library (STL), die effiziente Programmierung ermöglichen. Zudem werden Testmethoden wie Blackbox- und Funktionstests sowie der Unified Process als Projektmanagementansatz behandelt.
Karten
84
Lernende
11
Sprache
Deutsch
Kategorie
Informatik
Stufe
Andere
Erstellt / Aktualisiert
02.07.2013 / 15.01.2025

Lernkarten

Eine Funktion erwartet ein Objekt Tier. Es wird ein abgeleitetes vom Tier abgeleitetes Objekt fruTiger übergeben. Kann die Funktion auf die Methoden zugreifen, welche im Objekt fruTiger zusätzlich definiert wurden?

Nein

Wie erkennt ein Objekt in einer Assoziation mit wem es verbunden ist?

Durch einen, in dem Objekt definierten, Poniter auf das assoziierte Objekt.

Hin und wieder möchte man die Funktionalität eines Objektes erweitern, ohne bestehende Klassen zu ändern, oder die Funktionalität eines Objektes zur Laufzeit erweitern. Welches Desing Pattern empfiehlt sich hier?

Dekorator

Manchmal soll sich ein Objekt je nach seinem Zustand anders verhalten, fast wie wenn es in eine andere Klasse wechseln würde. Welches Desing Pattern empfiehlt sich hier?

Zustand

Es ergibt sich häufig das Problem, dass mehrere Objekte vom Zustand eines anderen Objektes abhängen. Welches Desing Pattern empfiehlt sich hier?

Beobachter/Observer

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.

Was beinhaltet en Statischer Test/Review?

Wird nach festgelegten Richtlinien(Checklisten) durchgeführt; Gefundene Fehler werden nicht behoben, es werden nur Lösungsvorschläge diskutiert;

Was beinhaltet en Funktionstest?

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.

Was ist ein Blackboxtest?

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.

Welche 5 Arbeitsschritte beinhaltet der Unified Process?

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.

Welches bekannte Produkt richtet sich nach dem Unified Process?

RUP Rational Unified Process (IBM)

Wie wird der Projektablauf durch den Unified Process beschrieben?

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;

Welche Methoden werden vom Commpiler automatisch erzeugt, wenn Sie nicht vom Programmierer ergeugt wurden?

Konstruktor, Destruktor, Copy-Konstruktor, Zuweisungs-Operator

Zählen Sie objektorientierte Programmiersprachen auf!

C++, Java, C#, Visual Basic, PHP, JavaScript, Perl, Python, SmallTalk, usw.

Welche 4 Phasen beinhaltet eine Iteration des Unified Software Development Process?

Konzeption, Entwurf, Konstruktion, Übergang

Wann muss eine Variable/Objekt vom Programmierer selbst gelöscht werden?

Wenn die Variable/Objekt mit dynamisch mit dem new Operator erzeugt wurde.

Wie unterscheidet sich die Syntax einer statischen zu einer dyamischen Einbindung eines Objektes in einer Klasse?

Siehe Abblidung

Wie sieht die Syntax der Vererbung in C++ aus?

Siehe Abblidung

Wie werden Exeptions in C++ behandelt?

Es muss für jede Methode, bei der eine Exeption auftreten kann, die Entsprechende Exeption mit throw(XX) geworfen werden.

Welcher Cast wird verwendet um zwischen verwandten Typen zu wandeln?

static_cast<>()

Welcher Cast wird verwendet um Zeiger und Referenzen auf Objekte innerhalb der Vererbungshierarchie umzuwandeln?

dynamic_cast<>()

Welcher Cast wird verwendet um Konstantheit oder Volatilität zu entfernen?

const_cast<>(); Umwandung in andere Typen sind mit diesem Operator nicht möglich

Welcher Cast wird für eine normale Typenumwandlung verwendet?

reinterpret_cast<>(); ist gleich zu setzen mit dem normalen aus dem C bekannten Cast

Was kann beim codieren als zusätzliches Strukturierungselement eingesetzt werden?

Namespaces

Was ist ein Template?

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.

Wie wird ein Template benutzt?

Wie eine gewöhnliche Klasse:

Welche Elemente beinhaltet die STL(Standart Template Library)?

Container, Iterator, Algorithmen

Welche Funktion hat der Container in der STL?

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.

Welche Funktion hat der Iterator in der STL?

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).

Welche Funktion hat der Algorithmus in der STL?

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,

Auf was sollte beim effizienten Programmieren von Embedded Systems geachtet werden?

Inline Funktionen -> Zeitgewinn; Virtuelle Funktionen -> benötigt mehr Speicher; Exeptionhandling -> nicht deterministisch(wenn möglich vermeiden)

Wie sieht die Syntax einer Klasse aus und in welche Files ist sie gegliedert?

Siehe Abbildung

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

Lernen