Le SupportADessin d'un Dessinable

Le SupportADessin d'un Dessinable

par Paul Charles Jacques Boulenger,
Number of replies: 2

Bonjour, je me pose quelques questions par rapport aux lien entre les dessinables et leur(s) supporàdessin(s). 

Tout d'abord, l'utilisation des shared_ptr n'est-elle pas exceptionnellement conseillée dans le cas des SupportADessin ? En effet, il y a clairement une notion de partage d'un même support par différents dessinables (on n'utilise donc pas de unique_ptr) et l'utilisation de shared_ptr pourrait apporter plus de sécurité que des "pointeurs à la C" ...

D'autre part, comment garantir que le support d'un (ou plusieurs) dessinable existe toujours le temps nécessaire ? On a vu, dans le cours de Jeudi, que pour garantir cela dans le cas des collection hétérogène, on fait une copie d'un objet à ajouter, pour être sûr qu'une fois ajouter il vive aussi longtemps que la classe le décide (si j'ai bien compris le cours). Mais on se trouve ici dans un cas différent puisque que le support à dessin n'est pas copié et est paratagé par plusieurs dessinables. Faut-il alors prendre le risque ? Et éventuellement lancer une exception dans le cas où un dessinable aurait un SupportADessin qui n'existe plus... Ou bien y a-t-il une autre possibilité ?

Enfin, dans l'idée que toutes les toupies d'un même système ont le même SupportADessin (=celui du système), comment garantir cela à la construction du système ou plus généralement à l'ajout d'une toupie au système ? Créer une méthode pour modifier le SupportADessin d'une toupie, et y faire appelle ? Cela ne me semble pas une être une bonne solution... Ou bien lancer une exception si le support a dessin d'une toupie à ajouter est différent de celui du système, mais comment compare-t-on deux support à dessin....

Merci d'avance.



  

In reply to Paul Charles Jacques Boulenger

Re: Le SupportADessin d'un Dessinable

par Josué Antoine Maechling,

Je ne recommande à personne d'utiliser les shared_ptr sauf si vous avez du temps à perdre ou que vous connaissiez parfaitement leur fonctionnement. Si l'utilisation était exceptionnellement conseillée le professeur vous l'aurait signalé.

Pour s'assurer que le support à dessin existe le temps nécessaire, il suffit juste le créer en même temps que le système dans le main et de ne pas y toucher. Évidemment tu me diras que c'est dans ce cas au programmeur utilisateur de gérer ça. Oui. Et comme tu le dis une des manières de gérer ça c'est des exceptions.

Ou beaucoup plus simplement tu peux juste comparer les supports à dessin, si ils ne sont pas identiques tu les change, que ce soit pour les ajouter au système ou autre. N'oublie pas qu'un pointeur n'est rien d'autre que l'adresse de stockage d'un objet...rien de plus évident à comparer. Et tu peux tout à fait avoir un getter / setter pour ton support à dessin dans dessinable.

Je laisse quelqu'un d'autre proposer des alternatives au pointeurs à la C sur SupportADessin, qui sont viables évidemment.