Usted está escribiendo un programa Tetris en Java. ¿Cómo configuraría su diseño de clase con respecto a los siguientes aspectos?Preguntas de diseño filosófico para OOP-Tetris
- clase Piece: Tener uno
Piece
clase, con una matriz interna que determina la forma de la pieza, frente a tener sietePiece
clases, una para cada una de las piezas. Todas son subclases de una clase genérica Piece. - representación de la clase Piece: tienen una serie de 4 casos de
Block
, lo que representa un cuadrado de una pieza, y cadaBlock
contiene su ubicación en la Junta (en coordenadas gráficas) frente a tener una matriz de 4x4, dondenull
significa que hay no hay bloque allí, y la ubicación está determinada por la forma de la matriz. - Ubicación: Cada
Block
Piece
en la matriz o en la matrizBoard
almacena su ubicación frente a laPiece
y laBoard
conocer las ubicaciones de laBlocks
que los componen. - Generación de una pieza: tener un método estático de la clase pieza
getRandomPiece
, o tener unPieceFactory
que hacer una instancia de que tiene el métodogenRandomPiece
en la instancia. - La manipulación de la pieza actual: Utilice el patrón
Proxy
, por lo que todo lo que necesita tener acceso a ella sólo utiliza el proxy, o tener un métodogetCurrentPiece
en la claseBoard
y llamar a que cada vez que quiere hacer algo con la corriente pieza.
Esto no es tarea. Estoy en desacuerdo con lo que el curso introductorio de CS enseña en mi universidad y quiero ver lo que la gente en general cree. ¿Qué se consideraría como un "buen" diseño OOP? Ignore el hecho de que es para un curso introductorio: ¿cómo lo haría ?
debería ser wiki de la comunidad – Malfist
Todas estas clases y esas cosas ... podría estar haciendo que el problema sea demasiado abstracto para lo que realmente es. Muchas formas diferentes de representar piezas de tetris (http://stackoverflow.com/questions/233850/tetris-piece-rotation-algorithm) y muchas formas diferentes de manipularlas. Si es para un curso de * introducción, no me preocuparé por OOP. Solo mi opinión, no es una respuesta real a tu pregunta. –
@roygbiv: publique este comentario como una respuesta! Creo que al menos tendrías una o dos clases – Claudiu