2. Mod - 2.5 OOD: Klassendiagramme im Detail Flashcards

1
Q

Was beschreiben Klassendiagramme?

A

Beschreiben Struktur eines objektorientierten Systems

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

Warum sollte man sich auf die für den Anwender wesentlichen Klassen beschränken?

A

da Klassendiagramme der Diskussion mit dem Anwender dienen

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

Warum müssen Klassendiagramme alle Details enthalten?

A

Beschreiben vor allem auch die interne Struktur eines Systems als Vorlage für Entwicklung

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

Klassendiagramme bestehen u.a. aus folgenden Elementen:

Beschreibe diese

A

Klassen: entstehen indem ähnliche Objekte zusammengefasst werden. Enthalten Attribute und Methoden

Generalisierungspfeile: zeigen von der speziellen auf die allgemeine Klasse (zB Girokonto und Sparkonto auf KONTO)

Assoziationen: stellen eine Beziehung zwischen zwei Klassen dar

Kardinalität: gibt an, wie viele Objekte an einer Assoziation beteiligt sein können

Aggregation: Form der Assoziation, bei der sich ein Objekt der einen Klasse u.a. aus einem Objekt der anderen zusammensetzt (Couch und Tisch zu WOHNZIMMER) - leere Raute

Komposition: Aggregation, bei der ein Objekt untrennbar mit einem Ganzen verbunden ist. Wenn das Ganze aufhört zu existieren, endet auch die Existenz der Teile (Stamm und Ast zu BAUM) - ausgefüllte Raute

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

Wie wird in der Klassenhierarchie nach einer passenden Methode gesucht?

A

Unten nach oben

Da geerbte Attribute und Methoden überschrieben werden können

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

Klassendiagramme bestehen u.a. aus folgenden Elementen:

A
Klassen
Generalisierungspfeilen
Assoziationen
Kardinalität
Aggregation
Komposition
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Mögliche Fragen zu Erstellung von Klassendiagrammen

A

Welche Informationen muss das System bereitstellen können?

Klassen: Welche Objekte und Akteure gibt es?

Assoziationen: Welche statischen Regeln gelten für die Beziehungen zwischen Objekten?

Assoziationen: Welche Beziehungen zwischen Klassen bestehen direkt(nicht über eine dritte Klasse)?

Attribute: Wodurch werden Objekte beschrieben?

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

In welcher Grammatik Form stehen Klassen meistens in Use-Case-Dokumenten?

A

Im Nomen

Side Info: Nicht jedes Substantive repräsentiert eine Klasse

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

In welcher Grammatik Form stehen Methoden meistens in Use-Case-Dokumenten?

A

als Verben

Side Info: Nicht jedes Verb repräsentiert eine Methode

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

Wie zeigt man in UML Beziehungen zwischen Klassen?

A

durch Pfeile

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

In Java nennt man es “Abstract Class”. Wie in UML?

Und wie wird es in UML gezeigt?

A
Abstract Class (UML)
Cursive Class Name (showed in UML)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

In Java nennt man es “Relationship”. Wie in UML?

Und wie wird es in UML gezeigt?

A

Association (UML)

Pfeil mit

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

In Java nennt man es “Inheritance”. Wie in UML?

Und wie wird es in UML gezeigt?

A

Generalization (UML)

Pfeil mit Rechteck- (showed in UML)

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

In Java nennt man es “Aggregation”. Wie in UML?

Und wie wird es in UML gezeigt?

A

Aggregation (UML

Pfeil mit Rauten-Spitze (showed in UML)

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

Wodurch zeichnet sich ein gutes Klassendesign aus?

A

Jede Klasse hat so wenig wie mögliche Gründe sich zu ändern (im besten Fall nur einen einzigen, dass ist aber nicht immer möglich)

wenn von einer potentiellen Änderung sollten so wenig wie möglich Klassen betroffen sein (Im Besten Fall nur eine einzige, aber das ist nicht immer möglich)

Auf Änderungen vorbereitet

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

Wie kann man Design flexibler machen?

A

indem Anzahl der Klassen reduziert werden … oder hinzufügt

kommt immer ganz darauf an

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

Welche zwei Dinge sollte ein guter Entwickler können?

A

gutes, flexibles Klassendesign finden, das Prinzipien der Objektorientierung folgt

dieses Design mit korrekter UML-Syntax modellieren

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

Wovon hängt der Detailierungsgrad des Diagramms ab

A

Vom Zweck

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

Was sollte man machen, bevor man die Details ausarbeitet?

A

ein gutes Klassendesign

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

Was sollten Klassendiagramme enthalten, welche als Vorlage für Entwickler dienen?

A

Alle relevanten Klassen, Attribute und Methoden

nicht alle Notationselemente müssen enthalten sein

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

Was ist das einzige was nicht optional ist bei einem Klassendiagramm?

A

Namen des Attributes

ob Symbole verwendet werden, hängt also wieder vom Einsatzzweck ab

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

Welche Attribute sollten unterstrichen werden?

A

Klassenattribute

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

Was wird nach dem : (Doppelpunkt) angegeben

A

Der Datentyp

Example:
- Durchschnittsnote : float(idl)

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

Was kann als Datentyp nach dem Doppelpunkt angegeben werden?

A
Elementare Datentypen (int, long etc.)
Andere Klassen des Diagramms

Example:
- Durchschnittsnote : float(idl)

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

Was wird nach einem = angegeben?

A

Defaultwerte

Example:
- Note : float(idl) = 5

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

Was wird mit / gekennzeichnet?

A

Attribute, die nicht gespeichert sondern berechnet werden (zB Alter aus dem Geburtsdatum)

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

Wie wird die Sichtbarkeit eines Attributes gekennzeichnet?

A
mit folgenden Symbolen
\+
#
-
~
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Was bedeuten die Symbole des Sichtbarkeit eines Attributes

A

+ public, für alle Klassen sichtbar
# protected, für eigene Erben sichtbar
- private, für andere Klassen unsichtbar
~ package, innerhalb des Paketes sichtbar

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

Was bedeutet es, wenn die Sichtbarkeit nicht angegeben ist?

A

Sichtbarkeit ist undefiniert

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

Wie kann die Attribute angegeben werden?

A

Form von [4] oder [0..6] oder [1..*]

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

Wie wird mit Attributen verfahren die eine Assoziation implementieren?

A

Sie werden meistens weggelassen und die Multiplizität steht dann statt dessen an der Assoziation

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

Welche Attribute sind wiederum selten mengenwertig?

A

Attribute denen keine Assoziation entspricht (mit elementaren Datentypen wie long oder char)

Side Note:
Grund wieso dieses Notationselement eher selten Verwendung findet

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

Was wird geschweiften Klammern wann zugewiesen?

A

Am Ende der Attributszeile im Klassendiagramm kann dem Attribute in geschweiften Klassen eine Eigenschaft zugewiesen werden

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

Welche Eigenschaften können geschweiften Klassen zugewiesen werden? Explain them

A

{readOnly} Attributwert kann nicht verändert werden

{unique} Jeder Attributwert darf bei maximal einem Objekt vorkommen

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

Wie lautet die Reihenfolge aller Notationselemente für Attribute?

A

Sichtbarkeit / Name :Typ Multiplizität =Defaultwert {Eigenschaft}

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

Was ist optional bei Methoden in Klassendiagrammen?

A

Alles außer dem Namen der Methode, gefolgt von () ist optional.
Side Note:
Welche Symbole man verwendet hängt also auch hier vom Einsatzzweck ab.
Als Vorlage für die Entwickler sollte das Diagramm möglichst wenig Interpretation zulassen

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

Wie werden Statische Methoden gekennzeichnet?

A

Sie werden unterstrichen

38
Q

Wie lautet die Reihenfolge aller Notationselemente für Methoden?

A

Sichtbarkeit Name (Parameterliste) :Rückgabetyp {Eigenschaft}

39
Q

Was müssen Parameter enthalten? Und wie sind sie voneinander getrennt?

A

Mind. Name und Typ müssen enthalten sein

Mit Kommata getrennt (Plural für Komma)

40
Q

Wie wird ein Parameter angegeben?

A

Übergabewert Name :Typ Multiplizität =Defaultwert {Eigenschaft}

41
Q

Welche Übergabearten haben Methoden in Klassendiagramme?

A

In (call-by-value), Out, Inout (call-by-references)

42
Q

Kennt Java die explizite Unterscheidung zwischen call-by-value und call-by-references?

A

Nein

43
Q

Wie modelliert man wenn Java die Zielsprache ist und die explizite Unterscheidung zwischen call-by-value und call-by-references nicht bekannt ist?

A

Alle Parameter mit elementaren Datentypen (char, int etc.) werden als IN-Parameter modelliert

Parameter mit Klassen als Typ bekommen Objekte übergeben. Sie werden als INOUT-Parameter modelliert.

OUT-Parameter werden nicht modelliert. Die Methode gibt einen Wert zurück, der mit dem Rückgabetyp spezifiert wird

44
Q

Was definieren die Multiplizitäten in der Parameterliste

A

Aus wie vielen Teilen ein Parameter bestehen darf.

Sie wird wie bei Attributen angegeben

45
Q

Wie funktioniert der Aufruf beim Parameter wenn ein Defaultwert angegeben wird?

A

Wird beim Parameter ein Defaultwert angegeben, so ist er beim Aufruf optional. Fehlt er, wird der Defaultwert verwendet.

46
Q

Können Kursive Klassennamen kursive Methodennamen enthalten?

A

Ja, Abstrakte Klassen können abstrakte Klassen enthalten

Side Info: Jede nicht abstrakt erbende Klasse muss alle geerbten abstrakten Methoden selbst impementieren

47
Q

Welche Eigenschaften der Parameter und des Rückgabetyps sind möglich? ZB

A

{sequence} Tupel: Die Werte sind geordnet

{bag} Menge: Die Werte sind ungeordnet. Eine Reihenfolge ist nicht definiert.

48
Q

Wie oft werden überladene Methoden im Klassendiagramm aufgeführt
Welche Namen haben diese und welche Parameterlisten?

A

MEHRFACH im Klassendiagramm aufgeführt

Einträge haben DENSELBEN Namen
aber UNTERSCHIEDLICHE Parameterlisten

49
Q

Was kann die Leserichtung angeben?

A

Ein (ausgefülltes) Dreieck

50
Q

Wie sind Multiplizitäten zu verstehen?

A

Immer zu einem Zeitpunkt (Ein Mitarbeiter kann im Lauf der Unternehmenszugehörigkeit durchaus zu mehreren Abteilungen gehören, aber nicht gleichzeitig)

51
Q

Was sind bei reflexiven Assoziationen besonders wichtig?

A

Rollen

52
Q

Kann die Sichtbarkeit von Rollen definiert werden?

A

Ja, wie für Attribute

53
Q

Was besagt eine XOR Einschränkung bei Assoziationen in Klassendiagrammen?

A

Dass Objekte der beteiligten Klassen nur an einer der Assoziationen beteiligt sein dürfen

54
Q

Wie können Assoziationen implementiert werden?

A

Indem Objekte einer Klasse ein Attribut bekommen, das auf ein Objekt der anderen Klasse verweist.

55
Q

Was gibt die Navigierbarkeit einer Assoziation an?

A

In welche Richtung die Klassen auf verweise Kenntnisse voneinander haben

56
Q

Was schreiben Assoziationen mit Pfeil von?

A

Navigierbarkeit

Bsp. Auftrag, Pfeil zu, Kunde
Jedes Auftragsobjekt hat Kenntnis des Kunden, der den Auftrag abgegeben hat

57
Q

Was machen Assoziationen mit einem X?

A

verbieten die Navigierbarkeit

58
Q

Erlaubt die UML ein beidseitiges Navigationsverbot?

A

Ja

Side Info: Streng genommen gibt es dann gar keine Assoziation mehr, zumindest ist sie nicht implementierbar.

59
Q

Wie spezifieren Assoziationsenden ohne Pfeil und ohne X?

A

Spezifieren Navigierbarkeit gar nicht

Sie ist dann weder verboten noch vorgeschrieben, die Entscheidung obliegt dem Implementierter.

60
Q

Wie können Anmerkungen in beliebigen Stellen des Diagrammes eingefügt werden?

A

Kasten mit umgeklapptem “Eselsohr”

61
Q

Was geben Qualifizierer an?

A

Anhand welcher Attribute einem Objekt der Klasse ein Objekt der assoziierten Klasse zugeordnet wird

62
Q

Was erlauben Assoziatiosklassen?

A

Modellierung von Eigenschaften einer Assoziation

63
Q

Was wird manchmal auch Assoziationsklassen zugeordnet?

A

Bei m:n Assoziationen gibt es oft Attribute und Methoden, die zu keiner der Klassen, sondern zu Assoziationen gehören. Sie werden dann der Assoziationsklassen zugeordnet

64
Q

Warum ist eine Umwandlung von Assoziationsklassen in normale Klassen nötig?

A

Da gängige Programmiersprachen Assoziationsklassen nicht direkt implementieren können

Side Info:
Dies wird häufig bereits bei der Modellierung berücksichtigt und auf die Verwendung von Assoziationsklassen verzichtet

65
Q

Assoziationen können auch Beziehungen zwischen mehr als zwei Klassen beschreiben.
Wie wird dies gezeichnet?
Und was können sie enthalten?

Nenne die Ausnahmen (2)

A

Werden als Raute gezeichnet
Können fast alle Notationselemente binäre Assoziationen enthalten

Ausnahme:
Navigierbarkeit wird nicht angegeben
Qualifizierer werden nicht verwendet

66
Q

Worauf bezieht sich die Multiplizität einer Klasse?

A

Auf die Kombination von Objekten aller anderen Klassen

Side Info: Deshalb sind Multiplizitäten mit einer anderen Untergrenze als 0 meist nicht sinnvoll

67
Q

Warum werden n-äre Assoziationen eher selten verwendet, obwohl sie in der Realität durchaus vorkommen?

A
  • Komplexität der Realität nicht so sehr reduziert wie binäre Assoziationen (was eigentlicher Sinn von Modellen ist)
  • in gängigen Programmiersprachen nicht direkt umsetzbar
  • in mehrere binäre Assoziationen aufgelöst werden können
68
Q

Was ist der wesentliche Unterschied zwischen Aggregation und Komposition?

A

Aggregation ist eine Verbindung zwischen zwei Objekten, die die Beziehung “hat eine Beziehung” beschreibt, während die Komposition die spezifischste Art der Aggregation ist, die den Besitz impliziert.

69
Q

Was geben Multiplizitäten bei Aggregationen und Kompositionen an?QET S$DR%FTIZVUOBI

A

Anzahl der teile in einem Ganzen

Side Info: Bei Kompositionen ist die Multiplizität auf Seite des Ganzen immer [1] und braucht deshalb nicht angeben werden

70
Q

Wie verläuft Implementierung einer Aggregation?

A

Ganze und seine Teile sind voneinander unabhängig.
Klasse des Ganzen erzeugt ihre Teile nicht selbst.
Sie können auch entfernt werden

Bsp.
Couch und Tisch erben von Wohnzimmer

Programmier Bsp.
public void addCouch (Couch c){…}
public Couch removeCouch(){…}

71
Q

Wie verläuft Implementierung einer Komposition?

A

Ganze und seine Teile sind voneinander abhängig.
Klasse des Ganzen erzeugt ihre Teile selbst

Bsp.
Stamm und Ast erben von Baum

Programmier Bsp.
public void addAst ()
{Ast a = new Ast (…);
…}

72
Q

Es kann viele Gründe geben warum eine Klasse nicht ohne eine andere Klasse implementiert werden kann
Wie wird diese Abhängigkeit beschrieben?

A

mit einem gestrichelten Pfeil und einer einfachen Pfeilspitze >

73
Q

Was bedeutet ein gestrichelter Pfeil und wie wird er beschriftet?

A

Klasse kann nicht ohne eine andere Klasse implementiert werden
Wird mit Stereotyp beschriftet, der den Grund der Anhängigkeit benennt
Wichtigsten sind:
<> Aufruf einer Methode
<> Erzeugung von Instanzen

Bsp
User —–> (<>) Session

Benutzer einer Webapplikation ruft Methode eines Session-Objektes auf

74
Q

Die UML erlaubt Mehrfachvererbung zwischen Klassen

Nenne ein Bsp.

A

Jugendfußballer erbt von Fußballer und Jugendlicher

Side Info:
Ist die Zielsprache Hava, so kann dieses Konzept nicht unmittelbar implementiert werden

75
Q

Wie können Vererbungsbeziehungen zusammengefasst werden?

Nenne auch ein Bsp

A

Durch Generalisierungsgruppen

Kultursender und Unterhaltungssender haben ANSPRUCH auf Radiosender.
Privatsender und ÄR Sender haben EIGENTUM auf Radiosender

76
Q

Welche Eigenschaften können für Generalisierungsgruppen festgelegt werden?

A

Complete - wenn Unterklassen zusammen alle Objekte der Oberklasse umfassen

Incomplete - wenn NICHT alle Unterklassen zusammen alle Objekte der Oberklasse umfassen

UND

Overlapping - wenn Unterklassen sich überlappen

Disjoint - wenn Unterklassen sich nicht überlappen

Side Info:
Entweder Complete or incomplete UND overlapping or disjoint muss verwendet werden

77
Q

Wie allen UML-Notationselemente kann man auch Klassen mit Stereotypen beschreiben. Stereotypen modellieren nicht wie andere Notationselemente die Realität, sondern … (Beende den Satz)

A

…, sondern beschreiben die anderen Notationselemente

78
Q

Was sind die zwei am häufigst benutzten Stereotypen?

A

<> Aufzählungstypen

<>-Klassen stellen statische Attribute und Methoden für andere Klassen bereit. Sie sind üblicherweise abstrakt

79
Q

Was ist ein Template?

A

Vorlage für eine Klasse

80
Q

Wie wird die Klasse realisiert?

A

In Abhängigkeit von einem Parameter

81
Q

Der Typ des Parameters ist beliebig. Wird kein Typ angegeben, so… (Beende Satz)

A

…, so kann eine beliebige Klasse als Parameter übergeben werden

82
Q

Für was werden Templates verwendet?

A

Um Datenstrukturen für beliebige Klassen zu definieren zB. Stapel, Listen, Mengen

83
Q

Wann wird aus einem Template eine Klasse?

A

erst beim Binden wird mit der Übergabe des Parameters eine Klasse aus dem Template

84
Q

Wie modelliert man das Binden des Parameters einer Klasse?

A

mit gestricheltem Strich und einfachem Pfeil

85
Q

Was ist eine Schnittstelle?

A

Eine Vorschrift, welche Attribute und Methoden einer Klasse zu implementieren hat

86
Q

Mit welchem Klassensymbol wird es gekennzeichnet?

A

<>

87
Q

Schnittstellen ähneln abstrakten Klassen, implementieren …. (Beende Satz)

A

…, implementieren aber keinerlei Methoden

88
Q

Was schreiben Schnittstellen vor?

A

Welche Methoden von jeder Klasse zu implementieren sind, die von sich behauptet, diese Schnittstelle zu implementieren

89
Q

Wer kann eine Schnittstelle aufrufen?

A

Jede andere Klasse

90
Q

Wie wird eine realisierte Schnittstelle modelliert?

A

Als Ball-End

Bsp.
Hase___(Kreis) Haustier

91
Q

Wie wird eine benötigte Schnittstelle modelliert?

A

Als Socket-Symbol

Bsp.
Streichelzoo_____(Halbkreis . offen zu …) Haustier