C++ OOP
1. Beginwoord
2. OOP?
3. Voorbeeld
4. Uitleg
top
1. Beginwoord
OOP in .cpp is zeer ingewikkeld. Ik moet eerlijk zeggen dat ik er zelf nog niet alles van snap.
Via deze tutorial ga ik er de basisprincipes van proberen uit te leggen.
2. OOP?
Eerst en vooral, wat is OOP.
OOP staat voor Object Orientated Programming, en alles draait rond objecten.
Allemaal mooi en wel, maar wat zijn objecten.
Een object moet je beschouwen als een soort SUPER VARIABELE, misschien zelfs een SUPER FUNCTIE.
Deze SUPER FUNCTIE kan een hele hoop informatie bevatten.
BV. een functie zelf, of meerdere functies, variabelen, input, output...
OOP wordt gebruikt om "netjes" te programeren en vooral omdat het heel gemakelijk is voor te programeren eens je je 'object' hebt aangemaakt.
Dan moet je gewoon elke keer gewoon je 'object' aanroepen en kan je de functies hierin gebruiken.
Voor de mensen die al OOP met PHP hebben gedaan heb ik het spijtige nieuws dat het helemaal NIET op elkaar trekt.
Een klein voorbeeldje hiervan.
In PHP maak je je CLASS aan maar 'declareer' je het eigelijk nooit als een class.
In CPP maak je je CLASS aan en dan ga je deze nog eens declareren PLUS zeggen hoeveel objecten de CLASS bevat.
Dit klinkt misschien allemaal heel ingewikkeld, maar daarom deze tutorial ook, om het uit te leggen.
3. Voorbeeld
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
const int objecten = 15;
class jouw_class
{
public:
int getal;
char naam[50];
void toon(){
cout << naam << " heeft dit getal ingevoerd: " << getal << endl;
}
};
int main()
{
jouw_class object_table[objecten];
ofstream bestand("bestand.dat", ios::binary);
if (!bestand.is_open()) {
cerr << "FATAL ERROR: bestand kan niet worden aangemaakt" << endl;
exit(1);
}
strcpy(object_table[0].naam,"Koen");
object_table[0].getal = 5;
strcpy(object_table[1].naam,"Pieter");
object_table[1].getal = 7;
bestand.write(reinterpret_cast<char *> (object_table), objecten * sizeof(jouw_class));
bestand.close();
ifstream invoerstroom("bestand.dat", ios::binary);
if (!invoerstroom.is_open()) {
cerr << "FATAL ERROR: bestand kan niet worden aangemaakt" << endl;
exit(1);
}
invoerstroom.read(reinterpret_cast<char *> (object_table), objecten * sizeof(jouw_class));
object_table[0].toon();
object_table[1].toon();
invoerstroom.close();
return 0;
}
|
Ik weet wat je nu denkt... er staat geen uitleg bij, wel, die vind je in puntje 4, stap voor stap
4. Uitleg
#include <iostream.h>//basisgegevens includen...
#include <fstream.h>
#include <stdlib.h>
|
const int objecten = 15;//een constante integer maken, dit betekend dat deze niet van waarde kan veranderen
|
class jouw_class//class aanmaken
{
public:
int getal; //een gewone integer maken
char naam[50];//een gewone reeks van characters aanmaken
void toon(){//de methode toon() aanmaken. Deze is van het type void, wat betekend dat het geen waarde terugstuurt, enkel output of berekeningen.
cout << naam << " heeft dit getal ingevoerd: " << getal << endl;//we geven gewoon weer welk getal de persoon heeft gekozen
}
};
|
int main()
{
jouw_class object_table[objecten]; //hiermee 'declareer' je je classe, je geeft met de variabele objecten mee hoeveel objecten er zijn
ofstream bestand("bestand.dat", ios::binary); //je declareert je bestand waar je je gegevens gaat wegschrijven, en je zegt dat je BINAIR wilt schrijven, hieruit volgt dat je later nog iets met de waarden kan doen
if (!bestand.is_open()) {//kijken of je het bestand kan aanmaken, als dit niet zo is, dan geven we een error...
cerr << "FATAL ERROR: bestand kan niet worden aangemaakt" << endl;//error weergeven
exit(1);//bestand stoppen
}
|
strcpy(object_table[0].naam,"Koen");
object_table[0].getal = 5;
strcpy(object_table[1].naam,"Pieter");
object_table[1].getal = 7;
//waardes geven aan de variabelen van het object: object_table
|
bestand.write(reinterpret_cast<char *> (object_table), objecten * sizeof(jouw_class));
//de gegevens wegschrijven in een extern bestand
bestand.close();
//het bestand afsluiten
|
ifstream invoerstroom("bestand.dat", ios::binary);
//dit bestand weer openen, kan ook in een ander document, dit is voor de gegevens weg te schrijven
if (!invoerstroom.is_open()) {//kijken of je het bestand kan aanmaken, als dit niet zo is, dan geven we een error...
cerr << "FATAL ERROR: bestand kan niet worden aangemaakt" << endl;//error weergeven
exit(1);
}
|
invoerstroom.read(reinterpret_cast<char *> (object_table), objecten * sizeof(jouw_class));
//gegevens lezen(read)
object_table[0].toon();
object_table[1].toon();
//en hier de functie toon() uitvoeren
invoerstroom.close();
//mooi afsluiten
return 0;
//elke functie retourneert een waarde (of geeft een waarde terug), hier dus ook... 0
}
|
top
|