Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

OOP — Klasse en object aanmaken

Stap 1 — Een klasse declareren

Een klasse maak je met het sleutelwoord class. De naam begint altijd met een hoofdletter (dit is een conventie in C#).

public class Hond
{
    // hier komt de inhoud
}

Waar schrijf je de klasse?

Schrijf een klasse buiten de Program-klasse, maar binnen dezelfde namespace:

namespace H9c
{
    public class Hond      // ← jouw klasse
    {
    }

    public class Program   // ← de hoofdklasse
    {
        public static void Main(string[] args) { }
    }
}

Stap 2 — Eigenschappen toevoegen

Een klasse zonder eigenschappen is als een ID-kaart zonder informatie. Eigenschappen slaan de data van een object op.

De kortste en eenvoudigste manier is de auto-property:

public class Hond
{
    public string Naam { get; set; }
    public string Ras  { get; set; }
    public int    Leeftijd { get; set; }
}

Wat betekent elk stukje?

Stukje Betekenis
public Iedereen mag dit lezen en schrijven
string Het datatype
Naam De naam van de eigenschap (hoofdletter!)
{ get; set; } Automatisch lezen én schrijven toegestaan

’ https://mermaid.live/edit#pako:eNpNkLluwzAMhl_F4FrDkHX40NoOGdIOHQsvQkQ7CiwpkGSgreF3r-0kRTjw-MCfJDjDyWsECadRxfhm1BCU7Vy22k6yg3c6m29ks5eYgnFD9qEefc_0U8UnaFzKjoh9Mhd9wwvkMASjQaYwYQ4Wg1VbCfuKDtIZLXYg11Rjr6YxddC5TXZV7st7-1AGPw1nkL0a41pNV60S3s__pwGdxvDqJ5dAsnKfAXKGb5CCkKKljJSCtS0RVLAcfkC —

Stap 3 — Een object aanmaken met new

Een klasse is alleen een blauwdruk — ze doet nog niets. Je moet er een object van aanmaken met het sleutelwoord new:

Hond mijnHond = new Hond();

Dit maak je als volgt:

mermaid
flowchart LR
    A["Hond"] -->|type| B["mijnHond"]
    C["="] --> B
    D["new Hond()"] -->|aanmaken| B
    B --> E["Object in geheugen\nNaam: null\nRas: null\nLeeftijd: 0"]

Nu bestaat het object in het geheugen, maar de eigenschappen zijn nog leeg (null voor strings, 0 voor int).


Stap 4 — Eigenschappen instellen via puntnotatie

Je leest en schrijft eigenschappen via de puntnotatie (object.Eigenschap):

Hond mijnHond = new Hond();

// Waarden instellen
mijnHond.Naam     = "Rex";
mijnHond.Ras      = "Labrador";
mijnHond.Leeftijd = 3;

// Waarden lezen
Console.WriteLine(mijnHond.Naam);      // Rex
Console.WriteLine(mijnHond.Ras);       // Labrador
Console.WriteLine(mijnHond.Leeftijd);  // 3

Stap 5 — Meerdere objecten aanmaken

Van dezelfde klasse kan je zo veel objecten maken als je wil. Elk object heeft zijn eigen waarden:

Hond hond1 = new Hond();
hond1.Naam = "Rex";
hond1.Ras  = "Labrador";

Hond hond2 = new Hond();
hond2.Naam = "Fifi";
hond2.Ras  = "Poedel";

Hond hond3 = new Hond();
hond3.Naam = "Max";
hond3.Ras  = "Beagle";
flowchart TB
    K["📐 Klasse: Hond\n(de blauwdruk)"]
    K --> O1["🐕 hond1\nNaam: Rex\nRas: Labrador"]
    K --> O2["🐩 hond2\nNaam: Fifi\nRas: Poedel"]
    K --> O3["🐶 hond3\nNaam: Max\nRas: Beagle"]

Belangrijk

hond1, hond2 en hond3 zijn volledig onafhankelijk van elkaar. Als je hond1.Naam verandert, heeft dat geen enkel effect op hond2 of hond3.


Volledig voorbeeld

Hier zie je alles samen: een klasse met drie objecten.

using System;

namespace H9c
{
    public class Leerling
    {
        public string Naam  { get; set; }
        public string Klas  { get; set; }
        public int    Punten { get; set; }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            Leerling l1 = new Leerling();
            l1.Naam   = "Emma";
            l1.Klas   = "3A";
            l1.Punten = 72;

            Leerling l2 = new Leerling();
            l2.Naam   = "Rayan";
            l2.Klas   = "3A";
            l2.Punten = 55;

            Console.WriteLine($"{l1.Naam} ({l1.Klas}): {l1.Punten}/100");
            Console.WriteLine($"{l2.Naam} ({l2.Klas}): {l2.Punten}/100");
        }
    }
}

Uitvoer:

Emma (3A): 72/100
Rayan (3A): 55/100

Klasse vs. object — overzicht

flowchart LR
    subgraph Klasse["📐 Klasse (blauwdruk)"]
        direction TB
        P1["Eigenschap: Naam"]
        P2["Eigenschap: Klas"]
        P3["Eigenschap: Punten"]
    end
    subgraph Object1["Object: l1"]
        V1["Naam = Emma"]
        V2["Klas = 3A"]
        V3["Punten = 72"]
    end
    subgraph Object2["Object: l2"]
        V4["Naam = Rayan"]
        V5["Klas = 3A"]
        V6["Punten = 55"]
    end
    Klasse -->|new Leerling()| Object1
    Klasse -->|new Leerling()| Object2
  Klasse Object
Wat? Blauwdruk / sjabloon Concreet exemplaar in het geheugen
Wanneer? Bij het schrijven van code Met new tijdens uitvoering
Hoeveel? Één per type Onbeperkt

Samenvatting

Onthoud

  1. Een klasse declareer je met public class NaamVanKlasse { }
  2. Eigenschappen declareer je als public string Naam { get; set; }
  3. Een object maak je aan met new KlasseNaam()
  4. Je leest en schrijft eigenschappen via puntnotatie: object.Eigenschap
  5. Elk object heeft zijn eigen waarden — ze zijn volledig onafhankelijk