Je suis en train d'essayer de se faire une idée de la façon de concevoir et de penser à un Objet de façon Orientée et souhaitez obtenir des commentaires de la communauté sur ce sujet. Ce qui suit est un exemple d'un jeu d'échecs, que je souhaite conception OO. C'est un domaine très large de la conception et de mon accent, à ce stade, c'est juste pour déterminer qui est responsable de ce que les messages et la façon dont les objets interagissent les uns des autres pour simuler le jeu. S'il vous plaît signaler si il y a des éléments de mauvaise conception (haute couplage, mauvaise cohésion etc.) et comment les améliorer.
Le jeu d'Échecs a les classes suivantes
- Conseil
- Joueur
- Pièce
- Carré
- Jeu d'échecsjeu
Le Conseil d'administration est composé de carrés et ainsi de Conseil peut être tenue pour responsable de la création et de la gestion des Carrés des objets. Chaque pièce est aussi sur un carré de sorte que chaque pièce a aussi une référence à la place c'est sur. (Est-il logique?). Chaque pièce est alors responsable de se déplacer d'une place à l'autre. Joueur de classe contient des références à toutes les pièces qu'il possède et est également responsable de la création (le joueur Doit créer des Pièces?) . Le joueur a une méthode takeTurn qui à son tour appelle une méthode movePiece qui appartient à la pièce de Classe qui modifie l'emplacement de la pièce à partir de son emplacement actuel vers un autre emplacement. Maintenant, je suis confus sur ce qu'est exactement le Conseil de classe doit être responsable. J'ai supposé que c'était nécessaire pour déterminer l'état actuel du jeu et de savoir quand le jeu est terminé. Mais quand un morceau change d'emplacement comment le conseil doit-il mis à jour? faut-il maintenir un autre tableau de places de pièces sur lesquelles existent et qui obtient des mises à jour des pièces?
Aussi, le jeu d'échecsjeu d'abord crée le Conseil et le joueur des objets qui, à leur tour créer des places et des pièces de, respectivement, et de commencer la simulation. Brièvement, ce pourrait être ce que le code de jeu d'échecsjeu peut ressembler à
Player p1 =new Player();
Player p2 = new Player();
Board b = new Board();
while(b.isGameOver())
{
p1.takeTurn(); // calls movePiece on the Piece object
p2.takeTurn();
}
Je suis dans le flou sur la manière dont l'état du conseil d'administration sera mis à jour. Devrait pièce de disposer d'une référence à la carte? Où devrait être de la responsabilité mensonge? Qui détient quelles sont les références? S'il vous plaît aidez-moi avec vos entrées et signaler des problèmes dans cette conception. Je suis délibérément de ne pas se concentrer sur les algorithmes ou d'autres détails de jeu de jeu que je suis seulement intéressé par l'aspect de la conception. J'espère que cette communauté peuvent fournir de précieuses informations.