v0.1.0 Start document voor OO programming concepten C++ door HU IICT.
Onderstaande informatie gaat ervan uit dat je kennis hebt genomen van Compositie - structs.
Het combineren van data en functies in een struct
is legaal C++, maar wordt zelden gebruikt, omdat er in C++ een alternatief is voor struct: class
.
Het enige verschil tussen struct en class is dat de default permissies (als je zelf niets aangeeft) bij een struct public is, en bij een class private.
Het is een ingeburgerde (en daardoor aan te raden) gewoonte om class te gebruiken in plaats van struct als je onderdelen private maakt en/of functies binnen de class plaatst.
Deze vorm van programmeren wordt Object Oriented (OO) genoemd: er wordt niet gebruik gemaakt van losse gegevens en functies maar
Een klasse:
Een belangrijk voordeel van afscherming is dat het privé deel gewijzigd kan worden zonder dat de rest van de applicatie hier iets van merkt.
Voorbeeld:
In ons geval zouden we bv. de coördinaten van een klein LCD scherm kunnen opslaan als unsigned char
om ruimte te besparen, of in een ander geval als doubles
als dat voor onze grafische processor beter uitkomt.
In UML geven we een klasse aan als een rechthoek met drie delen:
Een -
voor een onderdeel geeft aan dat het onderdeel private is (niet voor de buitenwereld zichtbaar), een +
geeft aan dat het public is.
Het type van een attribuut en het return type van een functie staan achteraan. Een constructor herken je aan de naam (gelijk aan de naam van de klasse), en aan het ontbreken van een return type.
In de line class zijn de attributen (variabelen) private, en de methoden (functies) public. Dit is de meest voorkomende situatie (zeker voor eenvoudige klassen), maar private functies en (in mindere mate) public variabelen komen ook voor.
Image 1 - UML diagram van de lijn klasse
class line {
private:
int start_x;
int start_y;
int end_x;
int end_y;
public:
line( int p_start_x, int p_start_y, int p_end_x, int p_end_y );
void print();
};
Codevoorbeeld 04-06 - C++ declaratie van de lijn klasse