Tableaux d'objets
Il est tout à fait possible de créer un tableau contenant des objets.
Lors de la création d'un tableau d'objets, le constructeur par défaut est appelé autant de fois qu'il y a d'éléments à créer dans le tableau
Attention : il n'est pas possible de faire appel à un constructeur avec paramètres pour initialiser les objets d'un tableau. Il faudra donc passer par une fonction membre (voir exemple ci-dessous)
Exemple : Utilisation d'un tableau de Leds
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Transcription textuelle
class Led{
private:
int pinLed;
public:
Led ();
bool init(int); //permet d'initialiser l'objet, ici le numéro de port
void setOn();//Allume la LED
void setOff();//Eteindre la LED
};
Led::Led(){}
bool Led::init(int value){
bool error=LOW;
if(value >= PORT_MIN && value <= PORT_MAX){
pinLed = value;
pinMode(pinLed, OUTPUT);
}
else{
error=HIGH;
}
return(error);
}
void Led::setOn(){
digitalWrite(pinLed, HIGH);
delay(TEMPO);
}
void Led::setOff(){
digitalWrite(pinLed, LOW);
delay(TEMPO);
}
/* Progamme principal */
Led tabLed[3]; //On définit un tableau d'objets de 3 LED
void setup(){
Serial.begin(9600);
//Initialisation des Leds
for(short compteur=0;compteur<3;compteur++){
tabLed[compteur].init(PORT_LED + compteur) //Il n'est pas possible d'avoir un constructeur avec paramètres, on utilise donc une fonction d'initialisation
}
}
void loop(){
for(short compteur=0;compteur<3;compteur++){
tabLed[compteur].setOn();//Appel d'une fonction membre d'un objet du tableau
}
for(short compteur=0;compteur<3;compteur++){
tabLed[compteur].setOff();
}
}
Méthode : Pour résumer
On commence par créer le tableau d'objet :
Led tabLed[3];
Il faudra ensuite prévoir l'initialisation des objets, la plupart du temps grâce à une boucle :
for(short compteur=0;compteur<3;compteur++){
tabLed[compteur].init(PORT_LED + compteur) //Il n'est pas possible d'avoir un constructeur avec paramètres, on utilise donc une fonction d'initialisation
}
On peut ensuite utiliser les fonctions membres, soit de manière ponctuelle comme ceci :
tabLed[1].setOn();//Allume la deuxième LED (la numérotation des tableaux commence à zéro)
On peut également utiliser des boucles :
for(short compteur=0;compteur<3;compteur++){
tabLed[compteur].setOn();//Appel d'une fonction membre d'un objet du tableau
}