et setColor n'en a pas dans Shape
Avec OpenGL, on ne peut pas le faire ? setColor a selon moi du sens sur tous les graphismes. S'il en a dans Sprite et même dans Text, pourquoi pas dans Shape ? D'ailleurs, Shape a déjà deux méthodes de couleur, et une plus globale paraît logique.
Je veux qu'ils utilisent des collections hétérogènes de leurs propres classes, avec des sprites, textes, etc. comme attributs de certaines.
Dans mon code, j'ai créé une classe AnimationSprite qui hérite de Sprite et une classe MovingSprite qui en hérite. J'ai cherché à séparer "Moving" de "Sprite", mais le problème, c'est que
la position, la rotation et toutes les autres opérations intéressantes sont dans Sprite, Text, etc. ! Je pense que casser ces Drawable forcerait à coup sûr les utilisateurs à faire leur propre design, et c'est quand-même plus propre d'un point de vue théorique. En plus, ça évite l'héritage multiple, et ça facilite le portage vers d'autres langages (je ne sais pas comment c'est fait dans les autres, actuellement). Et là, ce sera comme tu dis, Sprite et les autres ne seront que des attributs, des classes sans incidence dans la partie principal du code.
Comme je l'ai dit, getGlobalBounds n'a pas de sens dans VertexArray
Si j'ai bien compris, VertexArray, c'est une Shape de plus bas niveau. C'est toujours pratique de connaître la place occupée par un objet. C'est vrai que cette classe est un peu problématique : elle possède en même temps des informations de Transformable (des coordonnées), et de Drawable (la couleur). C'est donc un peu des deux, mais elle n'hérite quand même pas de Transformable. D'ailleurs, Shape a le même problème : elle contient des points et des couleurs en même temps, mais elle fait mieux parce-qu'elle sépare quand-même les positions des couleurs au niveau des attributs. Donc, il se pourrait que ces classes géométriques, en particulier VertexArray, s'intègrent un peu mal dans le design et bloquent donc l'évolution. La solution serait là encore de séparer l'aspect Transformable et l'aspect Drawable.