OOAD, kapitel 4

Struktur - vi laver forbindelser mellem klasserne.

Slide 4.2 - den kommer vi tilbage til senere.

Inden slide 4.4:

På det mest abstrakte niveau kan vi spørge: Hvad er den begrebsmæssige struktur mellem to eller flere klasser? Her tilbydes der to typer strukturer:

På det konkrete niveau kan vi tilsvarende spørge: Hvad er den specifikke sammenhæng mellem objekter? Der tilbydes her to andre typer af strukturer:

Slide 4.4

Person er i kursiv, fordi den ikke kan indeholde nogle objekter - en abstrakt klasse.

Generalisering: En struktur, hvor en generel klasse (superklassen) beskriver egenskaber og adfærdsmønster, som er fælles for et antal specielle klasser (subklasserne) og nedarves til disse.

En taxa er en personbil.

Slide 4.5

Klynge: En samling af klasser, som er indbyrdes forbundne.

Klasserne indenfor en klynge er som hovedregel forbundet indbyrdes med enten en generaliseringsstruktur eller en aggregeringsstruktur. Relationen mellem klasser fra forskellige klynger vil så som hovedregel være associeringsstrukturer.

Slide 4.6

Aggregering: En struktur, hvor et overordnet objekt (helheden) består af et antal underordnede objekter (delene).

En bil har en motor.

Motoren indgår i bilen.

Hver motor indeholder mellem to (2) og flere (*) cylindre.

Hver cylinder indgår i præcis én (1) motor.

Slide 4.7

Associering: En struktur, hvor et antal sideordnede objekter knyttes til hinanden.

Bilen er forbundet med en eller flere ejere.

Eksempel: Lad os kigge på blomster. Hvordan er de her ting struktureret?

Mellem slide 4.7 og 4.8

Find struktur

Det at lave strukturer kan afdække nye klasser. Fx. en generalisering af kunde og leverandør til forretningsforbindelse.

Generaliseringen skal give mening - overdriv ikke.

Hvis det er svært at afgøre hvilken klynge en klasse skal i, skal den have sin egen klynge.

Slide 4.11

Gnerelt er det vores erfaring, at de følgende tre spørgsmål på en simpel måde hjælper til at skelne mellem, hvornår der skal anvendes aggregerings- og associeringsstruktur:

Hvis der svares ja til mindst to af disse spørgsmål, bør en associeringsstruktur overvejes. Ellers bør en aggregeringsstruktur overvejes.


Opgave: Slide 4.13. Husk at ændre på hændelsestabellen hvis det er nødvendigt.


Mit eget forslag.

Kandidater:

spillebræt indeholder felter
spillebræt indeholder skibe
spillebræt indgår i spil
felt indgår i skib
felt rammes af skud
spillebræt ejes af spiller
skib rammes af skud
spiller affyrer skud
spiller indgår i spil

Klassediagram: