F17 - Generalisering Flashcards

1
Q

När kan man använda generalisering?

A

När två klasser är lika i de flesta detaljerna, men skiljer sig åt lite

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

På vilka sätt kan klasser skilja sig åt?

A
  • Beteende (metoder)
  • Data (attribut)
  • Associationer till andra klasser
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vilket är det vanligaste sättet att implementera generalisering?

A

genom arv

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

Vad skiljer generalisering från arv?

A

Generalisering är konceptet och arv är implementationen

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

Vad innebär generalisering?

A

att generella delar abstraheras från specialiserade klasserna (arv är när klasser ärver en genrell klass och specialiserar sig, den generella klassen är superklass och de specialiserade klasserna subklasser)

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

Vilket syfte fyller multiplicitet vid generalisering i ett klassdiagram?

A

Inget, multiplicitet saknar syfte och generalisering saknar därför multiplicitete

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

Vilken tumregel finns för generalisering?

A

Om man kan säga att A är en B, så är B en generalisering av A

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

Vilken tumregel finns för att avgöra om något är ett attribut snarare än generalisering?

A

Om A har en B, är B ett attribut hos A

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

Nämn två metoder för att hitta generaliseringar

A
  • Top Down: har en klass du kan delar upp

- Bottom Up: har flera klasser med stora likheter

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

Är multipelt arv möjligt i java?

A

nej, java stödjer inte multipelt arv

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

Vad innebär multipelt arv?

A

att man ärver från flera superklasser

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

Varför kan man inte skapa objekt av abstrakta klasser?

A
  • man vill skapa objekt av klasser längre ner i hierarkin
  • om vi vill att något ska utföras på liknande men olika sätt begränsa implementationen till subklasserna genom abstrakta metoder (som kräver abstrakta klasser)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Vad är fördelarna med arv?

A
  • Återanvända kod

- Möjliggör polymorfism

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

Vad är nackdelarna med arv?

A
  • Underhållningsbehov och superklassen ändras
  • Kan ge dålig översikt
  • Komplex kod
How well did you know this?
1
Not at all
2
3
4
5
Perfectly