Objektorienteret programmering
UML-klassediagram
Et klassediagram er en tegning af, hvilke klasser der findes, hvad de indeholder, og hvordan de hænger sammen. Hver klasse er en kasse i tre dele: navn, felter og metoder. Stregerne mellem kasserne viser, om der er tale om arv eller en almindelig forbindelse.
Forudsætter, at du har set klasser og objekter .
Kassen har tre rum
┌─────────────────────────────┐
│ Studerende │ ← navn
├─────────────────────────────┤
│ - navn: String │ ← felter
│ - studienummer: String │
├─────────────────────────────┤
│ + tilfoejKarakter(k: int) │ ← metoder
│ + gennemsnit(): double │
└─────────────────────────────┘
Øverst navnet, i midten felterne, nederst metoderne. Type skrives efter kolon. Det er hele grundformen.
Plus og minus
Tegnet foran er synligheden:
| Tegn | Betyder |
|---|---|
- | privat, kun klassen selv |
+ | offentlig, alle |
# | beskyttet, klassen og dens underklasser |
En god tommelfingerregel, der også er et godt svar til eksamen: felter er -,
metoder er +. Det er indkapsling tegnet på papir.
Stregerne mellem kasserne
Arv: trekant med ubrudt streg, peger op mod overklassen:
Studerende ──▷ Bruger
Læses “Studerende er en Bruger”. Se arv.
Association: almindelig streg. To klasser kender hinanden:
Ordre ──── Kunde
Aggregering: hul rombe. En helhed med dele, der også kan leve alene: et hold har studerende, men de studerende findes stadig uden holdet.
Komposition: udfyldt rombe. Delen kan ikke leve uden helheden: en ordrelinje findes ikke uden sin ordre.
Til et førsteårsprojekt er skellet mellem aggregering og komposition et af de steder, hvor censor gerne spørger. Vær klar med et eksempel fra jeres eget diagram.
Multiplicitet
Tallene i enderne af stregen siger, hvor mange:
Kunde 1 ──── 0..* Ordre
1, præcis én0..1, nul eller én0..*, nul eller mange1..*, mindst én
Læs den højt: “én kunde har nul eller mange ordrer; én ordre hører til præcis én kunde”. Det er nøjagtig samme øvelse som i datamodellering, og de to diagrammer kommer naturligt til at ligne hinanden.
Hvor meget skal med?
Ikke det hele. Et diagram med tyve kasser og halvfjerds streger kan ikke læses, og det viser ikke, at I har forstået noget. Vis de klasser, der bærer modellen, og de vigtigste felter og metoder. Skriv i teksten, hvad I har udeladt og hvorfor.
Til rapporten er ét godt diagram med to afsnits forklaring mere værd end tre diagrammer uden.
Kort opsamling
- Kasse i tre dele: navn, felter, metoder.
-privat,+offentlig.- Trekant er arv, rombe er helhed og del.
- Tallene i enderne siger hvor mange.
Læs videre
- Klasser og objekter Klasser i JavaScript forklaret på dansk: constructor, metoder, this og new. Med kørbare eksempler og de fejl, der giver undefined inde i en metode.
- Arv Arv i objektorienteret programmering forklaret på dansk: extends, super og overskrivning af metoder. Med eksempler og en advarsel om for dybe hierarkier.
- Datamodellering Datamodellering forklaret på dansk: fra beskrivelse til tabeller, entiteter og relationer, og hvordan en mange-til-mange-relation løses med en tredje tabel.
Senest gennemgået .