Pourquoi ? Parceque certains objets n'auront pas besoins des mêmes paramètres que les autres, mais aussi que certaines instances bien précises pourront avoir des paramètres différents.
Exemple : Je veux dessiner un cercle (par points, donc je cré un objet "Object", dans lequel j'insère mes points). A ce niveau, pas besoin de distinguer cercle et carré par exemple : ce sont 2 surfaces fermées définies par un ensemble de points (donc je veux dire par la, pas d'héritage).
Sauf que la 1ère instance de ce cercle sera fixe (i.e. elle ne se déplacera pas sur mon écran), mais elle devra contenir une chaine de caractères (disons de type std::string) qu'elle devra écrire à chaque fois que cet instance est dessinée.
La deuxième instance elle, devra bouger (donc il lui faut un paramètre coordonées, disons de type Point), mais n'aura rien à écrire.
Deux problèmes :
1) pourquoi ne pas définir un attribut de Object de type string, et un autre de type point ? Parceque autant ne pas réserver de la mémoire pour rien, surtout que les attributs pourraient être d'un type plus volumineux.
2) Mais surtout, je ne sais pas encore quels seront les types nécessaires, car les objets n'auront pas de comportement prédéfinis, càd c'est l'utilisateur qui décidera entièrement de ce que doit faire un Object, de son comprtement, et donc des paramètres qui lui sont nécessaires. Et pour éviter de devoir à chaque fois passer comme arguments des paramètres + l'object, et de trainer le paramètre partout, je préfère passer un Object seul, avec le paramètre comme attribut...
Partager