Programmering
  1. Teori
  2. Diagrammer
  3. Klassediagrammer
  • Eksamen
  • Projektarbejde
  • Synopsis
  • Cheatsheets
    • Python cheatsheet
    • Rust cheatsheet
    • Kodningsplatforme
  • Opsætning
    • Git
    • Python
    • Rust
    • VScode
  • Teori
    • Arbejdsproces
      • Abstraktion
      • Fejlfinding
      • Generalisering
      • Git
      • Kommentarer
      • Moduler
      • Pakker
    • Data
      • Datastrukturer
      • Datatyper
      • Ejerskab og referencer
      • Enum
      • Hukommelse og pointers
      • Indkapsling
      • Polymorfi
      • Struct
    • Diagrammer
      • Brugerhistorier
      • Klassediagrammer
      • Rutediagrammer
      • Tegneprogrammer
    • Logik
      • Anonyme Funktioner
      • Fejlhåndtering
      • Grådig algoritme
      • Metaprogrammering
      • Samtidig programmering
  • Studieområdet
    • Forslag til emner
    • Empiri
    • Metoder i Programmering

På denne side

  • Angivelse af adgang
  • Relationer
    • Afhængighed
    • Samling
    • Trait
    • Nedarvning
  1. Teori
  2. Diagrammer
  3. Klassediagrammer

Klassediagrammer

Teori

Udgivet

19. februar 2026

Et simpelt klassediagram indeholder 3 områder med klassens navn, attributer/variabler og funktioner/metoder. Det kan også bruges til struct i Rust selvom det ikke er en klasse.

classDiagram
    class BankAccount {
        +String owner
        -float balance
        +deposit(amount)
        +withdrawal(amount)
    }

Klassen BankAccount har to attributer og to metoder.

Et klassediagram kan desuden indeholde angivelse af adgang samt relationer til andre klasser som beskrevet nedenfor.

Klassediagrammer kan ligesom rutediagrammer bruges til både design og dokumentation samt i forskellige detaljeringsgrader.

Angivelse af adgang

  • + angiver offentlig adgang
  • - angiver privat adgang

Relationer

Klassediagrammer kan vise forskellige relationer mellem klasser. Nedenfor behandles afhængighed (dependency), samling (aggregation), trait (interface) og nedarvning (inheritance). Andre relationer som sammenhæng (association) og komposition (composition) behandles ikke her.

Afhængighed

En eller flere af strukturens metoder gør brug af en anden struktur fx som funktionsparameter.

classDiagram
    direction RL
    class BankAccount {
        +String owner
        -float balance
        +deposit(amount: float) bool
        +withdrawal(amount: float) float
    }

    class Transaction {
        +String date
        +float amount
        +String type
        +execute(account: BankAccount) bool
    }

    BankAccount <.. Transaction

Transaction anvender BankAccount i sin metode.

Samling

Strukturen indeholder andre strukturer.

classDiagram
    direction RL
    class Bank {
        +String name
        -BankAccount[] accounts
        +addAccount(account: BankAccount) bool
        +removeAccount(account: BankAccount) bool
    }

    class BankAccount {
        +String owner
        -float balance
        +deposit(amount: float) bool
        +withdrawal(amount: float) float
    }

    Bank o-- BankAccount

Bank indeholder en liste af BankAccounts.

Trait

Trait kan visualiseres i et klassediagram ved at indikere en speciel trait struktur og angive implementerende strukturer. I eksemplet nedenfor implementerer Human og Duck fællestrækket Greet. Den stiplede linje med et pilehoved angiver, at strukturen realiserer fællestrækket der peges på med pilen.

classDiagram
    class Greet {
        <<trait>>
        +greet()
    }
    
    class Human {
        -name: String
    }
    
    class Duck {
    }
    
    Greet <|.. Human
    Greet <|.. Duck

Nedarvning

Nedarvning kan visualiseres i et klassediagram meget lignende trait visualisering. Der gøres dog brug af en solid linje med pilehoved. Klassen der nedarver peger på den klasse den nedarver fra.

classDiagram
    class Greeter {
        +greet()
    }
    
    class Human {
        -name: String
    }
    
    class Duck {
    }
    
    Greeter <|-- Human
    Greeter <|-- Duck

Tilbage til toppen

ZBC Slagelse HTX

Senest redigeret d. 19. februar 2026

JACS