380 likes | 806 Vues
Caso: Juego Dados. Definición del Problema. El problema que queremos resolver es representar computacionalmente el Juego de Dados. Requerimientos Funcionales. Se requiere de un SISTEMA que permita la creación del JUEGO DE DADOS que simule el lanzamiento real de dos DADOS.
E N D
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Definición del Problema • El problema que queremos resolver es representar computacionalmente el Juego de Dados.
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Requerimientos Funcionales • Se requiere de un SISTEMA que permita la creación del JUEGO DE DADOS que simule el lanzamiento real de dos DADOS. • Este JUEGO es jugado sólo por un JUGADOR. • Los DADOS son lanzados en forma secuencial, uno primero y luego el otro. • Los DADOS al ser lanzados pueden entregar un NÚMERO RESULTANTE entre 1 y 6 para cada uno de ellos. • El JUEGO se inicia con el JUGADOR cuando tira el PRIMER DADO y termina después de haber lanzado el SEGUNDO DADO • Debe entregar al USUARIO indicación de cuándo se inicia el JUEGO y cuando termina, como también debe indicar el VALOR resultante de tirar cada uno de los DADOS.
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama del Dominio del Problema
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Otro Diagrama del Dominio del Problema
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Casos de Uso
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Caso de Uso1: Jugar Juego de DadosPrimary Actor: JugadorCaso de Éxito o Flujo Normal de Operación
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Clases Candidatas • JUEGO DE DADOS • JUEGO • JUGADOR • SISTEMA • DADO • DADOS • PRIMER DADO • SEGUNDO DADO • LANZAMIENTO • PRIMER LANZAMIENTO • SEGUNDO LANZAMIENTO
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Clases Candidatas Corresponde a las acciones • JUEGO DE DADOS • JUEGO • JUGADOR • SISTEMA • DADO • DADOS • PRIMER DADO • SEGUNDO DADO • LANZAMIENTO • PRIMER LANZAMIENTO • SEGUNDO LANZAMIENTO Es lo mismo y Es una clase Son los Actores Corresponde una clase y dos instancias
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia de Sistema • Entonces como Actores del Diagrama de Secuencia del Sistema tenemos a: • Jugador • Sistema • Este diagrama nos da el contexto de lo que tenemos que representar y además nos entrega la interacción del Actor con el Sistema.
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia de Sistema
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia • Ahora debemos construir el Diagrama de Secuencia, al disponer de mayor información con las Clases Candidatas, que finalmente tenemos: • Juego • Dado
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia Ambos pertenecen a la misma Clase Dado I N T E R F A Z Juego Dado 1 Dado 2 jugar() “Inicia el Juego...” “valor dado 1: N1” “valor dado 2: N2” “...Termina el Juego” N1 Y N2 son los valores de v1 y v2
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Caso de Uso1: Jugar Juego de DadosPrimary Actor: JugadorCaso de Éxito o Flujo Normal de Operación Tirar es una acción sobre el Dado
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Caso de Uso1: Jugar Juego de DadosPrimary Actor: JugadorCaso de Éxito o Flujo Normal de Operación Para mostrar el valor debemos obtenerlo
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Caso de Uso1: Jugar Juego de DadosPrimary Actor: JugadorCaso de Éxito o Flujo Normal de Operación Y este es el mensaje que debemos mostrar
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia I N T E R F A Z jugar() “Inicia el Juego...” tirar() Dado 1 v1 = obtenerValor() “valor dado 1: N1” v1 es la variable que recibe el valor del lanzamiento del Dado 1. Lo mismo sucede con el Dado 2 “valor dado 2: N2” “...Termina el Juego” N1 Y N2 son los valores de v1 y v2
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia El que realiza estas llamadas es la Clase Juego I N T E R F A Z jugar() “Inicia el Juego...” tirar() Dado 1 “valor dado 1: N1” v1 = obtenerValor() v1 es la variable que recibe el valor del lanzamiento del Dado 1. Lo mismo sucede con el Dado 2 “valor dado 2: N2” “...Termina el Juego” N1 Y N2 son los valores de v1 y v2
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia I N T E R F A Z Juego Dado 1 jugar() “Inicia el Juego...” tirar() “valor dado 1: N1” v1 = obtenerValor() v1 es una variable de trabajo de la Clase Juego, y tirar() y obtenerValor() son métodos de la Clase Dado “valor dado 2: N2” “...Termina el Juego” N1 Y N2 son los valores de v1 y v2
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Secuencia I N T E R F A Z “Inicia el Juego...” “valor dado 1: N1” “valor dado 2: N2” “...Termina el Juego” N1 Y N2 son los valores de v1 y v2 La INTERFAZ en este caso es la CONSOLA
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Clases Juego Dado valor jugar() tirar() obtenerValor() Lo primero es que el Juego incluye dos Da dos Lo segundo es que los dos Dados pertenecen a un solo Juego
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Diagrama de Clases
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Y, ahora debemos implementarlo • Esto significa que debemos crear un proyecto Java que contenga las dos clases y que nos permita ejecutar lo anterior:
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS El Código Ambos Clases las dejamos en el mismo paquete
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Clase Dado public class Dado { // declaración de atributos de la clase private int valor; // constructor de la clase Dado public Dado () { valor = 0; } // método para obtener el valor tirado public int obtenerValor() { return valor; } // método para tirar el dado public void tirar() { valor = (int) ((Math.random() * 6)+1); if (valor < 1) valor = 1; else if (valor > 6) valor =6; } } 25
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Clase Juego public class Juego { // objetos a ser utilizados private static Dado d1 = new Dado(); private static Dado d2 = new Dado(); // método de partida del programa public static void main(String[] args) { jugar(); } // método para tirar los dados public static void jugar () { //valores para los dos tiros int v1=0; int v2=0; System.out.println("Inicia el Juego..."); // primer tiro d1.tirar(); v1 = d1.obtenerValor(); System.out.println("valor dado 1: " + v1); // segundo tiro d2.tirar(); v2 = d2.obtenerValor(); System.out.println("valor dado 2: " + v2); System.out.println("...Termina el Juego"); } } 26
IN77J, ORIENTACIÓN A OBJETOS PARA E-BUSINESS Ejecución Inicia el Juego... valor dado 1: 4 valor dado 2: 2 ...Termina el Juego Esta es la salida en la Consola 27