Un bueno programmer (un tema de diseño)
Publicado por gero (20 intervenciones) el 04/06/2011 06:15:07
Hola, necesito ayuda. Estoy leyendo un libro que trata mas que nada el tema del buen diseño orientado a objeto (aplicado a java).
Dentro del programa, que es un jueguito muy sencillo, donde se obtienen 2 parametros por consola.
El metodo donde procesa los comandos es este
private boolean processCommand(Command command)
{
boolean wantToQuit = false;
CommandWord commandWord = command.getCommandWord();
if(commandWord == CommandWord.UNKNOWN) {
System.out.println("I don't know what you mean...");
return false;
}
if (commandWord == CommandWord.HELP) {
printHelp();
}
else if (commandWord == CommandWord.GO) {
goRoom(command);
}
else if (commandWord == CommandWord.QUIT) {
wantToQuit = quit(command);
}
// else command not recognised.
return wantToQuit;
}:
Todo bien, peero, en una consiga me dice lo siguiente
En el metodo procesarComando en la clase juego hay una secuencia de sentencias que despachan comandos cuando se reconoce una palabra comando. Este no es un diseño muy bueno dado que cada vez q agregamos un comando tenemos que agregar un caso en la sentencia if.
y me pide que diseñe las clases de modo que el manejo de los comandos sea mas modular y se puedan agregar comandos mas facilmente.
Los temas que aborda el capitulo son : Acomplamiento, cohesion, diseño dirigido por responsabilidades y la refactorizacion.
Entonces necesito que me ayuden porque no se me ocurrio una forma de implementar eso.
En el libro todavia no se aboeda el tema de herencia interfaz ni polimorfismo. (Por las dudas)
las clases que existen son:
- Command (contiene los 2 parametros de un comando)
- commandWords(es un hasMap con los comandos validos (un map de enumerados))
- la " clase" comandWord (son los enumerados nomas)
-Parser(Maneja la entrada por consola, y crea apartir de eso la clase command)
-La clase Room(en este caso no importa, el juego sirve para moverse en distintas habitaciones)
- Y la clase game(donde el metodo importante es el que puse arriba de todo)
Si no se alcanza a entender lo que digo les pido el favor me soliciten y les paso el codigo como para que vean mejor a que me refiero!
mi mail, [email protected]
Se los agradeceria mucho de verdad.
Gracias desde ya
Dentro del programa, que es un jueguito muy sencillo, donde se obtienen 2 parametros por consola.
El metodo donde procesa los comandos es este
private boolean processCommand(Command command)
{
boolean wantToQuit = false;
CommandWord commandWord = command.getCommandWord();
if(commandWord == CommandWord.UNKNOWN) {
System.out.println("I don't know what you mean...");
return false;
}
if (commandWord == CommandWord.HELP) {
printHelp();
}
else if (commandWord == CommandWord.GO) {
goRoom(command);
}
else if (commandWord == CommandWord.QUIT) {
wantToQuit = quit(command);
}
// else command not recognised.
return wantToQuit;
}:
Todo bien, peero, en una consiga me dice lo siguiente
En el metodo procesarComando en la clase juego hay una secuencia de sentencias que despachan comandos cuando se reconoce una palabra comando. Este no es un diseño muy bueno dado que cada vez q agregamos un comando tenemos que agregar un caso en la sentencia if.
y me pide que diseñe las clases de modo que el manejo de los comandos sea mas modular y se puedan agregar comandos mas facilmente.
Los temas que aborda el capitulo son : Acomplamiento, cohesion, diseño dirigido por responsabilidades y la refactorizacion.
Entonces necesito que me ayuden porque no se me ocurrio una forma de implementar eso.
En el libro todavia no se aboeda el tema de herencia interfaz ni polimorfismo. (Por las dudas)
las clases que existen son:
- Command (contiene los 2 parametros de un comando)
- commandWords(es un hasMap con los comandos validos (un map de enumerados))
- la " clase" comandWord (son los enumerados nomas)
-Parser(Maneja la entrada por consola, y crea apartir de eso la clase command)
-La clase Room(en este caso no importa, el juego sirve para moverse en distintas habitaciones)
- Y la clase game(donde el metodo importante es el que puse arriba de todo)
Si no se alcanza a entender lo que digo les pido el favor me soliciten y les paso el codigo como para que vean mejor a que me refiero!
mi mail, [email protected]
Se los agradeceria mucho de verdad.
Gracias desde ya
Valora esta pregunta
0