2009-06-22 5 views
1

Je suis le code de construction pour un graphe de scène 2D et j'ai une seule classe abstraite, noeud qui sera utilisé pour indiquer qu'un type d'élément peut être utilisé dans un graphe de scène. Cependant, les classes implémentées à partir de ce type sont de types différents, tels que les nœuds feuilles et les nœuds de transformation. Comment pourrais-je indiquer ces différences? est-ce que j'utiliserais des attributs, d'autres interfaces, ou quoi?Comment indiquer les différences dans cette situation?

Modifier: Il semblerait que j'ai donné des informations insuffisantes. Voici autant d'informations que je peux fournir sur ma hiérarchie actuelle:

  • interface INode
    • nécessite une matrice appelée TransformationMatrix
    • nécessite une liste des inodes appelés enfants
    • nécessite un nœud appelé Parent
    • nécessite la mise en œuvre d'une méthode appelée Draw qui prend une matrice comme argument et ne renvoie rien
  • classe Node
    • implémente l'interface INode
    • appel Draw (vide virtuel avec 1 argument de la matrice de type) appelle simplement chaque enfant méthode de dessin de INode.
  • diverses classes qui dérivent du noeud
    • ce sont des nœuds réels et peuvent être des noeuds de transformation, nœuds feuilles, etc.
+0

Cela pourrait aider un peu: http://blogs.msdn.com/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx –

+0

Cela semblerait indiquer que je devrais utiliser des attributs (je suis en essayant d'indiquer quel type de nœud les classes dérivées sont), cependant je ne suis pas entièrement convaincu que c'est la meilleure option. – RCIX

+0

Le type de nœud est-il un fait sur le mécanisme de la classe, ou un fait sur ce que la classe est utilisée pour représenter? –

Répondre

0

Il est difficile de vous conseiller que vous avez pas nous a donné trop d'informations sur votre domaine de problème. De plus, vous mélangez un peu votre terminologie, donc je ne sais pas si vous voyez les nœuds feuille et transformation comme des interfaces, des classes abstraites ou des classes.

Je suppose qu'en termes de conception, vous devez vous demander ce qui différencie un nœud feuille d'un nœud de transformation. Si c'est simplement les propriétés du nœud, utiliser des attributs peut être la solution la plus élégante, mais s'ils ont des comportements différents, cela me conduirait vers des classes séparées. Sur la base des noms, nous pouvons supposer que le noeud de transformation est "transformable" et a donc une méthode "Transformer", mais une feuille n'est pas transformable. Je suggérerais alors qu'il vaut mieux que le nœud feuille n'ait pas de méthode de transformation et soit dans une classe différente.

Questions connexes