Læringsmål

  • Kan forklare forskellen på en klasse og et objekt
  • Kan oprette klasser med egenskaber (properties) og metoder
  • Kan instantiere objekter med new og object initializer
  • Kan bruge objekters metoder og egenskaber i programmet

Klasser og objekter

Objektorienteret programmering (OOP) organiserer kode omkring objekter — enheder der kombinerer data og adfærd. Når vi udvikler i C#, opretter vi klasser som skabeloner og objekter som konkrete instanser.

En klasse definerer:

  • Egenskaber — tilstanden eller dataene (fx mærke, alder, farve)
  • Metoder — handlingerne objektet kan udføre (fx start motor, sæt dig)

Klasse = blueprint (skabelon). Objekt = den faktiske instans i hukommelsen med egne værdier.

Eksempel: klassen Car

Klassen Car har tre egenskaber (Brand, Model, Year) og to metoder. Her opretter vi et objekt med new, sætter værdier og kalder metoderne:

Object initializer

Med object initializer sætter du egenskaber direkte ved oprettelse — kortere end at tildele hver property på separate linjer:

Hvert objekt kan have forskellige værdier for egenskaberne, men de deler samme metoder og adfærd fra klassen.

Flere objekter — samme klasse

Én klasse, to objekter med forskellig data:

Det samme princip med Person — én skabelon, mange instanser:

Eksempel: klassen Dog

Klasser kan modellere alt — biler, personer, dyr. Her opretter vi hunden bobby og bruger både egenskaber og metoder:

Klassen er skabelonenbobby er ét konkret hund-objekt. Du kan oprette flere Dog-objekter med andre værdier.

Properties og felter

I eksemplerne ovenfor bruger vi felter (public string Brand) — det er fint til læring. I moderne C# foretrækkes properties med { get; set; }:

private set betyder, at kun klassen selv kan ændre Speed — det hedder indkapsling (encapsulation).

Metoder og data hører sammen

Metoder i en klasse definerer, hvad objekter kan gøre. Data og logik bør høre sammen:

Balance kan ikke ændres direkte udefra — kun via Deposit og Withdraw.

Instantiere og gemme objekter

Flere objekter i en liste — hvert new allokerer et nyt objekt i hukommelsen:

Objekter er reference-typer — variablen peger på objektet, ikke en kopi.

Git-trin

  • Branch: main
  • Commit: feat: oop klasser og objekter

OOP-principper — kort overblik

Tre centrale principper (du uddyber dem senere):

Indkapsling — skjul intern data, eksponer kun det nødvendige via properties og metoder.

Arv — en klasse kan arve fra en anden og udvide den.

Polymorfi — objekter af forskellige klasser kan behandles ens via fælles interface.

I GF2 fokuserer vi på klasser, objekter og indkapsling. Arv og polymorfi bygger ovenpå dette fundament.

Videoer

Se det i praksis

Object-oriented Programming (OOP) [Pt 18] | C# for Beginners

OOP with derived or abstract classes, overrides | IEnumerable [Pt 19] | C# for Beginners

Opsummering

  • En klasse er en skabelon med egenskaber og metoder
  • Et objekt oprettes med new og har egne værdier
  • Object initializer { Brand = "Ford", ... } sætter egenskaber ved oprettelse
  • Flere objekter kan dele samme klasse med forskellig data
  • Properties og indkapsling giver bedre kontrol end offentlige felter alene

Test din viden

Spørgsmål 1

Hvad er forskellen på en klasse og et objekt?

Spørgsmål 2

Hvordan opretter du et nyt objekt i C#?

Spørgsmål 3

Hvad er en object initializer?

Spørgsmål 4

Hvad er indkapsling (encapsulation)?

Spørgsmål 5

Kan to objekter af samme klasse have forskellige værdier for egenskaberne?

Spørgsmål 6

Hvad er forskellen på et felt og en property?

Spørgsmål 7

Objekter i C# er typisk reference-typer. Hvad betyder det?