Klassen

Klassen of classes, zijn niks anders dan een groep variabelen met bijbehorende functies. Met behulp van klassen kun je zo voorwerpen maken met bepaalde eigenschappen. Als je bijvoorbeeld een race spel wilt maken kun je een klasse maken die een auto voorstelt en deze een aantal eigenschappen meegeven. Voor elke auto die in het spel voor komt kun je dan deze klasse gebruiken zonder elke keer weer een hele nieuwe auto te maken.

class auto
{
  public:
    int kleur;
    int merk;
    broem();
};
Dit is de declaratie van een auto, de klasse is dus wel gedeclareerd maar kan nog niet gebruikt worden. Het enigste wat je hebt gedaan is aangegeven wat voor eigenschappen een auto heeft, en wat een auto kan. Om het auto object te kunnen gebruiken zul je deze eerst moeten definieren net zo als je bij variabelen gewend bent.

auto ferrari;

Nu heb je een auto gedefinieerd met de naam ferrari en kun je met de dot (.) operator toegang krijgen tot de dataleden en methoden van het object.

ferrari.kleur = 4; //datalid

ferrari.broem(); //methode

Je ziet dat klassen erg op variabelen lijken.

int x;
x = 4;

auto ferrari;
ferrari.kleur = 4;

Private en public

Klassen bestaan uit 2 delen, private en public. Het verschil is dat private dataleden niet buiten de klasse zelf gedefinieert kunnen worden terwijl dat bij public dataleden wel kan. Het is wel aan te raden om je dataleden private te houden zodat er niet zo snel fouten optreden. Zolang je niet opgeeft of de dataleden private of public zijn zijn deze altijd private.

#include <iostream.h>
class auto
{
  public:
    int kleur;
    int merk;
    broem();
  private:
    int motor;
};
Je weet nu onderhand wat een klasse is, maar hoe werkt een klasse ? Hieronder staat een voorbeeld over de klasse auto.


#include <iostream.h>
class auto
{
  public:   		   //public deel
    auto(int mwaarde);     //constructor
    ~auto();    	   //destructor
    int kleur;
    int merk;
    broem();
  private:		   //private deel
    int motor;
};

auto::auto(int mwaarde)	   //constructor
{
  cout << "starten.\n";
  motor = mwaarde;
}

auto::~auto()		   //destructor
{
}

void auto::broem()
{
  cout << "broem.\n";
  
}

int main()
{
  auto mijnauto(8);
  mijnauto.broem();    
  mijnauto.kleur = 5;
  cout << "de kleur van mijnauto is" << mijnauto.kleur;
  mijnauto.merk = 10;
  cout << "het merk van mijnauto is" << mijnauto.merk;
  mijnauto.broem();
  return 0;
}
Je ziet in de klasse auto nu 2 methoden staan, auto() en ~auto(), dit zijn een constructor en een destructor. Een constructor wordt opgeroepen wanneer je een klasse declareert wat in de eerste regel van winmain gebeurt. De constructor wordt hierdoor opgeroepen en laat de tekst "starten" zien waarna de waarde 8 aan motor wordt toegekend. Let wel op dat een constructor geen return waarde heeft, zelfs geen void (bij void wordt niks geretourneerd). De destructor (~auto()) zorgt er voor dat als het programma af is gelopen het geheugen weer vrij wordt gegeven. Als je een constructor hebt gemaakt moet je er dus ook altijd voor zorgen dat je een destructor hebt ook al is deze verder helemaal leeg. Als je geen van beide maakt dan wordt er een default constructor en destructor gemaakt, dus als je ze weg laat is er ook niks aan de hand.

In de variabelen kleur, en merk kunnen waarden worden opgeslagen (als voorbeeld heb ik hier alleen getallen gebruikt). De broem methode in de auto klasse wordt nu eerst uitgevoerd waardoor er de tekst "broem" op het scherm komt. Als deze methode klaar is met z'n werk wordt er een waarde aan de kleur van de auto gegeven en wordt deze op het scherm gezet, waarna hetzelfde met het merk gebeurt. Op de laatste regel van de main functie wordt nog een keer de tekst "broem" op het scherm gezet door de broem methode van mijnauto op te roepen.

Ik hoop dat dit het een beetje duidelijk is aangezien het nu misschien wat moeilijker wordt en ik de handleidingen liever kort houd aangezien je van de praktijk het meeste leert. Ik raad je dan ook aan om hier zelf een beetje mee te experimenteren zodat het wat duidelijker wordt. Als je eenmaal een beetje met klassen kunt werken kun je zelfs al wel beginnen met windows programmeren, hoewel ik je wel aanraad al deze C++ handleidingen door te lezen.

Succes

Vampire,