class Led { // The class
public: // Access specifier
int poort = 1;// atribute
int helderheid=200;//atribute
void myMethod() { // Methode binnen de class, dan moet je hier ingeven wat de method moet doen.
Serial.println("Hello World!");//Method
}//Method
void myMethodBuiten();/*Methode buiten de class, pas later worden er opdrachten gegeven in deze method.
Als je nu geen method programmeerd dan wordt er niet gecompileerd.*/
Led(int a,int b){// Deze method is speciaal. Ze is voorgeprogrammerd door C++. Op deze manier kunnen we
poort = a;// in het opmaken van onze objecten al direct waarden meegeven.
helderheid = b;//De constructor passert die waarden dan door naar de artibuten van de door ons aangemaakte objecten.
}
};
void setup() {
Serial.begin(9600);
}
//Led rooD; // Create an object of Led Omdat via de constructor is aangegeven dat we ook gegevens willen invullen werkt dit niet meer.
Led rooD (11,111);// Creeer een object van het type Led en geef bijhorende gegevens mee.
Led groeN(22,222);/* Idem als bovenstaande regel. Deze gegevens kunnen worden doorgegeven doordat we een
constructor hebben gebruikt hebben die de ingegeven waarden doorgeeft aan de atributen die we in de class reeds aangegeven hadden.*/
void loop() {
rooD.myMethod(); // Call the method die binnen de class was gedefinieerd
rooD.myMethodBuiten();//Roep de methode aan die buiten de class was gedefinieerd.
Serial.print(rooD.poort);Serial.println(rooD.helderheid);
Serial.print(groeN.poort);Serial.println(groeN.helderheid);
delay(333);
}
// Method/function definition outside the class
void Led::myMethodBuiten() { //Door "MyClass::" te gebruiken zorg je ervoor de de methode (die eerst nog niet wist wat hij moest doen) nu wel weet wat hij moet doen.
Serial.println("Dag wereld.");
}