# Klassen en objecten in C\#

In C# kunnen we geen objecten aanmaken voor we een klasse hebben gedefinieerd dat de algemene eigenschappen (properties) en werking (methoden) beschrijft.

## Klasse maken

Een klasse heeft de volgende vorm:

```csharp
[optionele access modifier] class className
{

}
```

Volgende code beschrijft de klasse auto in C#

```csharp
class Auto
{

}
```

Binnen het codeblock dat bij deze klasse hoort zullen we verderop dan de werking via properties en methoden beschrijven.

De optionele access modifier komen we later op terug.

### Klassen in Visual Studio

Je kan "eender waar" een klasse aanmaken, maar het is een goede gewoonte om per klasse een apart bestand te gebruiken:

* In de solution explorer, rechterklik op je project
* Kies Add
* Kies Class..
* Geef een goede naam voor je klasse

{% hint style="warning" %}
**De naam van je klasse moet voldoen aan de identifier regels die ook gelden voor het aanmaken van variabelen!**
{% endhint %}

![Klasse toevoegen in VS](/files/-M22NfnH12IzDXW8LbT8)

## Objecten aanmaken

Je kan nu objecten aanmaken van de klasse die je hebt gedefinieerd. Je doet dit door eerst een variabele te definiëren en vervolgens een object te **instantiëren** met behulp van het `new` keyword:

```csharp
Auto mijnEerste = new Auto();
Auto mijnAndereAuto = new Auto();
```

We hebben nu **twee objecten aangemaakt van het type Auto**.

Let goed op dat je dus op de juiste plekken dit alles doet (bekijk de onderstaande screenshot):

* Klassen maak je aan als aparte files in je project
* Objecten creëer je in je code op de plekken dat je deze nodig hebt, bijvoorbeeld in je `Main` methode bij een Console-applicatie

![basics oop same in vv](/files/-M22NfnJ6Ramn3gbtA0d)

{% hint style="info" %}
Je hebt dus in het verleden ook al objecten aangemaakt. Telkens je met Random werkt deed je dit al. Dit wil zeggen dat er dus in .NET ergens reeds een voorgeprogrammeerde klasse `Random` bestaat met de interne werking.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apwt.gitbook.io/cursus-pro-oo/experimentalmerge5/semester-2-oop/h8-klassen-en-objecten/0b_oopincs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
