Tu as des exemples précis ? Ca m'intéresse.
Ben en fait, dans ton cas, à part redéfinir une fonction virtuelle à chaque fois, celle qui retourne la valeur calculée, je ne vois pas où il faudrait tout redéfinir...
C est exactement ça !!!Envoyé par Jan Rendek
Après je dispose d'un nombre connus d'objets météos mais c'est vrai que conceptuellement parlant c'est pas du tout optimisé.
Si j'avais 50 objets faire 50 if c est de la merde, mais vu que j'en avais pas beaucoup ça ne m'a pas sauté aux yeux.
Merci !
Oui ok, c'est bien ce que j'ai dit alors =).Envoyé par Miles
Non mais j'pensais que tu disais qu'il y avait une meilleure méthode que ça, dans le cas de types récursifs.
Pour modéliser les types récursifs, regarde le design pattern Composite
Ben c'est surtout que tu disais qu'il y avait pleins de choses à faire pour que ça marche !Envoyé par HanLee
Jan Redek > exactement.
Désolé, j'voulais que globalement c'était la même quantité de code avec le polymorphisme qu'avec des dynamic_cast.Envoyé par Miles
Sinon j'ai vu pour le composite merci.
Envoyé par HanLee
pour un grand nombre de possibilité : NON carrément pas...
parce que avec le dynamic_cast, non seulement tu dois coder les fonctions membres avec le vrai comportement, mais en plus les if pour faire toutes les possibilités, avec qu'avec le polymorphisme, exit les if...
Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [ code ] (bouton #) et au tag (en bas)
Sauf qu'il n'y a pas de cast, donc c'est mieux
On ne mesure pas la qualité d'un bout de code à son nombre de lignes.
Le réel problème de la première solution n'est pas la taille du code, ou l'enchaînement successif de if... then...
Un des objectifs premier de la programmation objet est de favoriser la modularité et la réutilisabilité d'un implantation. L'encapsulation de données et l'utilisation d'abstractions sont des facteurs majeur pour réaliser cet objectif.
Dans l'exemple présent, le premier design crée une dépendence forte entre le module d'affichage et les évènements à afficher. Le module d'affichage a besoin de 'savoir' comment se composent les évènements afin de pouvoir fonctionner. Ceci n'est plus le cas en manipulant une abstraction des évènements et en déléguant aux évènements leur spécificité d'affichage.
En terme de réutilisabilité c'est bien meilleur puisque le module d'affichage peut ultérieurement être utilisé avec n'importe quel type d'objet satisfaisant l'abstraction. En terme de maintenance c'est meilleurs car l'ajout d'un nouveau type d'évènement n'aura aucun impact direct sur le code existant. Si celle-ci provoque une erreur, elle sera forcément localisée dans le nouvel évènement ajouté. De même si les spécifications sur les évènements changent en cours de projet, le module d'affichage ne sera pas touché.
> Miles : Oui je sais =).
> Jan : Oui pour les lignes de code, et OK pour le reste, ca me convient.
Non justement, dans mon exemple du dynamic_cast le but c'était de ne pas avoir de fonctions membres mais de tout faire de manière "fonctionnelle" (fonctions libres si tu veux, qui manipulent des données).Envoyé par Swoög
A la limite, on peut faire une espèce de pattern visiteur dessus
Ce qu'il faut au maximum, c'est permettre l'évolutivité et limiter la modification du code actuel, donc les fonctions libres, ça peut être bien, ou pas dans certains cas.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager