SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
UNIVERSIDAD TECNICA PARTICULAR DE LOJA
                    La Universidad Católica de Loja

               Escuela de Ciencias de la Computación
           Carrera de Sistemas Informáticos y Computación



                   Programación de Algoritmos




Profesional en Formación:




Castillo Cevallos Miguel Eduardo




Docente:


Ing. Quezada Sarmiento Pablo Alejandro




                      Loja – Ecuador




                            2012
CONTENIDOS

Tabla de contenidos……………………………………………………………....                             I
Tema……………………………………………………………………………...                                       Ii
Objetivos……………………………………………………………………………                                    Iii
Justificación………………………………………………………………………...                               Iv
Alcance…………………………………………………………………………......                                 Vi
Limitaciones………………………………………………………………….......... Vii
Marco Teórico……………………………………………………………………...                                1
Análisis y diseño de la aplicación………………………………………………..                    13
      Análisis de Requisitos……………………………………………………..                        13
      Análisis y Diseño preliminar………………………………………………                      16
      Diseño………………………………………………………………………. 22
      Implementación……………………………………………………………                               26
Arquitectura de la aplicación grafica y descripción de componentes………..   29
Prototipos…………………………………………………………………………... 34
Descripción de la aplicación……………………………………………………...                       36
Codificación………………………………………………………………………...                                37
Conclusiones……………………………………………………………………….                                  47
Recomendaciones…………………………………………………………………                                  50
Bibliografía………………………………………………………………………….                                 51




                                     i
Trivia de Programación de
   Algoritmos en Java




            ii
OBJETIVOS:

    ◦   General:

        Hacer uso de un juego de trivia para ayudar en la formación de los
        estudiantes de la Escuela de Sistemas Informáticos y Computación
        de la Universidad Técnica Particular de Loja.

    ◦   Específicos:

            Fortalecer los conocimientos en el uso de ficheros en java

            Ayudar a fortalecer los conocimientos en computación de los
              estudiantes con el uso de un juego de trivia.

            Fortalecer los conocimientos del uso de interfaces graficas en
              Java.




                                     iii
JUSTIFICACION

Los juegos en donde se pone a prueba la capacidad de razonamiento y
memoria de los estudiantes son muy utilizados en la actualidad como y una
herramienta en el aprendizaje.

Anteriormente se creía que el tiempo que las personas utilizaban para jugar era
una perdida de tiempo y no se adquirían conocimientos durante este tiempo; es
decir era tiempo que el estudiante perdía.

Esta afirmación depende del tipo de juegos que se le presente al estudiante
sea este del nivel que sea; ya que el juego logra estimular los sentidos de los
estudiantes para poder lograr superarse en el mismo, de manera que puedan
subir en los niveles en el juego y así poder organizar competencia en donde se
comparara los puntajes obtenidos o niveles alcanzados por cada uno de los
estudiantes.

En la actualidad en algunas instituciones educativas se usa el juego como un
método para el reforzamiento en el proceso de la educación de            niños y
jóvenes; entonces contrario a lo que se pensaba anteriormente sobre el juego
quedaron desechadas ya se con la ayuda de este se pudo reforzar

En base a estos antecedentes se pensó en el desarrollo de este proyecto para
que sea usado a manera de herramienta de reforzamiento de los
conocimientos en la materia de Programación de Algoritmos. El presente
proyecto constara de diferentes categorías en las cuales se encontrara una
serie de preguntas que podrán ser cambiadas de manera muy sencilla debido a
la utilización de ficheros que permitan un mejor manejo de las mismas.

El uso de ficheros para la realización de este proyecto fue para poder tener un
mejor manejo del espacio durante la ejecución de la aplicación, debido a que si
cargamos toda la información que contiene los ficheros en la memoria de la
computadora podemos hacer que esta sea mas lenta al momento de la
realización de los procesos de la aplicación o podemos con ello provocar que el
computador se cuelgue y se dañen todas las actividades que se encuentre
realizando el usuario al momento de la ejecución del mismo.


                                       iv
Se pensó hacerlo utilizando ficheros de manera que el profesor, tutor o
cualquier usuario pueda realizar cambios en las preguntas sin la necesidad
que al momento de hacer los cambios este presente un programador. Esto
ayudara al usuario final a tener varias posibilidades de cambios en el programa.

Otra de las ventajas que tanto el usuario final como el programador tienen al
usar ficheros es que para la corrección de errores en las preguntas u opciones
no se tiene que revisar todo el código para encontrar las líneas de código a
modificar si no que se realizaran en el fichero, en el cual podemos utilizar las
opciones de búsqueda que tienen cada uno de los programas que se usan para
la administración de los mismos




                                       v
ALCANCE

El alcance del presente proyecto se definirá de la siguiente manera:

La aplicación que se desarrollara en el lenguaje de programación java con el
uso de Netbeans es un juego de trivia en java en cual tendrá algunas
características que se irán detallando durante el desarrollo del presente
alcance.

La aplicación constara de una primera ventana en donde se dará la bienvenida
al usuario con un    botón para poder ingresar al juego, luego de ello se le
presentara al usuario una ventana en donde deberá poner el nombre que lo
identificara durante el juego, una vez que se haya seleccionado el nombre, y
pulsado el botón de JUGAR al usuario se le presentara la ventana del juego
propiamente dicha en donde tendremos los siguientes elementos gráficos:

      Un panel con los nombres y puntuación de todos los jugadores resaltado
       en negrita el jugador activo
      Se encontrara junto al panel de Datos de Jugadores tendrá el panel con
       las diferentes opciones de categorías con las que cuenta el juego.
      En la parte inferior al panel de Datos de Jugadores se encontraran los
       botones de opción correspondientes a las apuestas que se puede
       realizar.
      En la parte baja de la aplicación tendremos 2 partes; en la parte
       izquierda tendremos las preguntas que serán seleccionadas de forma
       aleatoria con sus respectivas opciones. La pregunta se presentara en un
       etiquetas y las opciones serán presentadas en botones de opción en
       donde el usuario podrá seleccionar la respuesta que considere correcta,
       también se tendrá un botón en donde el usuario podrá comprobar sus
       respuestas. En la segunda parte o parte izquierda tendrá un cuadro con
       un mensaje que mostrara si su respuesta es correcta o incorrecta, este
       panel a su vez cambiara también de color sea su respuesta.

Como ya se indico anteriormente para el manejo de las preguntas se usaran
ficheros por su facilidad de realizar cambios sin la necesidad de modificar el
código fuente de la aplicación. Es decir el juego se convertiría en un juego

                                       vi
netamente dinámico ya que si el usuario considere que las preguntas que tiene
la aplicación no están acordes con sus necesidades, se podrá hacer los
cambios respectivos sin la necesidad de que este recurra a un gasto
económico para que un programador realice los cambios en el código fuente de
la aplicación debido a que esto representaría un uso de recursos tanto en
tiempo como en dinero para el usuario, debido a que no podría tener listo el
material para su clase por la dificultad para realizar los cambios en la
aplicación.




                                     vii
LIMITACIONES

Dentro de las limitaciones que pueden darse durante el transcurso del
desarrollo del presente proyecto están las siguientes:

      Las rutas de los ficheros deben ser tratadas de forma absoluta de
       manera para evitar errores de archivos no encontrados.
      El control de las excepciones que se puedan dar debido a los ficheros.
      El control de las excepciones que se puedan dar debido a la utilización
       de interfaces graficas.
      El programa solo podrá ser usados en ordenadores con sistemas
       operativos Windows
      El nombre de las categorías debe ser cambiado desde el código de la
       aplicación.
      La versión de la maquina virtual de java (JVM), debe ser la misma con la
       que se desarrollo la aplicación.




                                          viii
MARCO TEORICO
Entre los conceptos que se usaran para el desarrollo del siguiente proyecto
están los siguientes:


TRIVIA
Se denomina trivia a una pregunta o serie de preguntas con tres opciones de
respuesta que normalmente van enfocadas a un concurso


EXCEPCIONES EN JAVA
Se conoce con el nombre de excepción a una condición anormal que surge en
una secuencia de código durante la ejecución de un programa
Para la gestión de errores java cuenta con palabras reservados como son:
try/catch/finally/throw/throws; están se analizaran mas adelante.
Cuando un método provoca una excepción, tiene una de las 2 siguientes
posibilidades:


Gestionarla el mismo.- Es decir, el método en donde ocurrió la excepción
deberá capturarlo o detectarlo al error producido y tratar de darle una solución.
Pasarla a otro método.- El método que ha producido un error tiene la
posibilidad de pasar el objeto tipo excepción al método que lo invocase.
Una excepción puede ser producida por el intérprete de Java o por el código.
La gestión de las excepciones en Java se realiza mediante un conjunto de
palabras reservadas propias de los lenguajes de programación.
Todas las excepciones en Java son subclases de la clase Throwable que se
divide en 2 partes que son:


Exception
Esta es aquella que representa excepciones que deben capturarse y tratarse.
Una de las subclases de Exception es RuntimeException de la cual heredan
otras excepciones.


Error
Esta en cambio representa errores graves que generalmente no están
controlados y por consiguiente provocan que la aplicación se detenga.

                                        1
Entre las excepciones más comunes se pueden encontrar las siguientes:


   IOException.- Problema de entrada o salida de datos
   ArithmeticException.- Desbordamiento o división para cero
   NumberFormatException.- Conversión ilegal de un String a un entero.
   IndexOutOfBoundsException.- Acceso a un elemento inexistente de un
    vector o de un String
   NegativeArraySizeException.- Intento de creación de un vector con
    longitud negativa.
   NullPointerException.- Intento de uso de una referencia nula
   SecurityException.- Violación de la seguridad en tiempo de ejecución.


UML
Analizaremos gran parte de lo que es UML debido a que se usara mas
adelante como una herramienta para el desarrollo del presente proyecto.
Se conoce como UML a un lenguaje de modelo visual de propósito general
orientado a objetos; el cual agrupa notaciones y conceptos provenientes de
distintos tipos de métodos orientados a objetos
Podemos citar 2 características importantes UML que son:
   UML es independiente del proceso de desarrollo
   Cubre las diferentes vistas de la arquitectura de un sistema.
Ahora analizaremos algunas de las ventajas y desventajas que tiene UML
o Es estándar
o Se basa en el metamodelo con una semántica bien definida
o Basado en una notación grafica que es concisa, de fácil aprendizaje y uso.
o Se puede usar para el modelado de sistemas de software en distintos
    dominios.
o Es fácil extenderlo
Las anteriormente descritas son algunas de las ventajas que ofrece UML,
ahora veremos algunas de las desventajas del mismo.
o   No es una metodología
o   No cubre todas las necesidades de especificación de un software
o   Puede resultar complejo alcanzar un conocimiento completo del lenguaje.


                                        2
Entre los tipos de diagramas UML que existen vamos a analizar aquellos que
van a ser parte importante de la metodología a utilizar (ICONIX). Entre ellos
tenemos:


Diagrama de secuencia
Los diagramas de secuencia son aquellos que modelan el flujo de la lógica
dentro del sistema de forma visual, permitiendo al programador la
documentación y validación. Pueden ser usados tanto en etapas de análisis así
como en las de diseño.
La secuencia puede expresar un caso de uso en completo o quizá un caso de
uso concreto del mismo, en el cual se pueden contemplar alternativas. Los
diagramas de secuencia también nos ayudan a identificar cual de las clases de
sistema van a ser las mas complejas de implementar.
Los diagramas de secuencia poseen 2 características que los distinguen de los
demás.


La línea de vida.- Que es aquella que representa la existencia de un objeto a
lo largo de un periodo del tiempo. Mediante el uso de la línea de vida se puede
indicar la creación o destrucción de objetos o roles durante una iteración.


Foco de control o barra de activación.- Es aquella que representa el periodo
de tiempo durante el cual un objeto realiza la ejecución de una acción
Su representación en la línea de tiempo es un rectángulo           que tiene las
siguientes características: la parte superior se alinea con el principio de la
acción, en cambio la parte inferior se alinea con la terminación, la cual puede
tener un mensaje de retorno
Los focos de control no son necesarios colocarlos en el diagrama de
secuencia, es decir son opcionales. Gracias al foco de control se puede
observar el anidamiento de las llamadas
Una vez que hemos analizado algunas de las características que tienen los
diagramas ahora analizaremos los elementos que tienen los mismos, entre los
que están:




                                        3
   Objeto: Dentro de los diagramas de secuencia se le conoce como objeto a
    una instancia de una clase que se puede empezar a identificar como
    participante en la secuencia de operaciones que representa un caso de uso.
   Actor: En cambio los actores son aquellos que pueden establecer
    comunicación con los objetos, por esta razón formaran parte de este
    diagrama.
   Vida de objeto: Se indica la existencia de un objeto mediante el uso de una
    línea discontinua, el fin del mismo se lo indica con un aspa.
   Activación: Este elemento es aquel que nos indica cuando un objeto se
    encuentra realizando una acción en concreto.
   Mensaje: Al mensaje se lo pueden definir como la comunicación entre los
    objetos y sus actividades.


Diagrama de clases
El diagrama de clases es el mas conocido de todos los diagramas UML es
aquel que nos permite la identificación de la estructura de clases del sistema en
donde se incluye las propiedades y métodos de cada una de las clases
Este tipo de diagrama tiene solo 2 elementos que son las clases y relaciones.
Las clases en este diagrama se representan con un rectángulo divido en 3
parte en la parte superior va el nombre de la clase, en el rectángulo siguiente
van los atributos y en el ultimo en cambio irán los métodos de esta clase.
Para el análisis de las relaciones que pueden existir entre las clases se las
dividirá de la siguiente manera: Asociación, Composición, Dependencia,
Generalización.


Asociación.- Esta es aquella que representa la relación genérica que existe
entre 2 clases y la notación es muy simple ya que es una línea que las une en
donde se puede indicar la multiplicidad que existe entre las 2 clases.


Composición, agregación.- Se habla de composición cuando una clase esta
compuesta de otras, donde las ultimas no pueden existir sin la primera. La
agregación en cambio se da cuando una clase incluye a la otra, pero la clase
incluida tiene entidad en si misma.


                                         4
Dependencia.- Se habla de dependencia cuando una clase depende de la otra
en el sentido que la una clase la usa a la otra como atributo o parámetro de
algún método.


Generalización.- Se habla de generalización cuando es equivalente a la
herencia o extensión tal como se ve en otros diagramas.


Diagramas de casos de uso
Los diagramas de casos de uso son aquellos que muestran no solo un caso de
uso sino todos los casos de uso de un sistema dado. Un caso de uso individual
que se representa con un ovalo con su nombre, representa a su vez un tipo de
tarea que tiene que soportar el sistema en el desarrollo.
El diagrama de casos de uso muestra solo una parte de la información que se
necesita, los diagramas de casos de uso se pueden ver como un resumen
conciso de la información que contiene en todas las descripciones de los casos
de uso.
A mas de la representación del caso de uso mediante un ovalo tenemos la
representación de un actor que es otra de las piezas claves en este diagrama,
este en cambio se representa como un muñeco, en estos diagramas también
podemos encontrar una línea que es la conexión entre el actor y los casos de
uso.




                                     Fig. 1


En la figura anterior podemos observar un ejemplo de un diagrama de uso para
una aplicación.




                                        5
FICHEROS EN JAVA
Un archivo o fichero se puede definir como una colección de datos
homogéneos que se almacenan en un soporte físico del computador que puede
ser permanente o volátil.


Algunas características generales que se deben tener en cuenta por el
programador antes de utilizar este tipo de estructuras, estas son las siguientes:
   Todos los elementos de un fichero poseen una determinada posición dentro
    de la secuencia de datos.


   El tamaño de un fichero a diferencia de otro tipo de estructuras no es fijo,
    pudiendo cambiar de forma dinámica el numero de elementos que
    almacena


   Cada uno de los ficheros podrá ser referenciado dentro del programa
    mediante un identificador, que se utilizara como una referencia lógica al
    fichero físico, o real, que se encuentra almacenado dentro de la memoria.


   En cada una de las operaciones de lectura/escritura sobre un fichero solo
    podrá leerse/escribirse un único registro.


   Las operación que se realicen para el acceso a la información de un fichero
    pueden realizarse de 2 formas diferentes:
          Acceso secuencial
          Acceso directo o aleatorio.


Como en todas las operaciones dentro un lenguaje de programación tenemos
algunas clases básicas para la manipulación de los ficheros las cuales se
resumirán el siguiente cuadro.




                                         6
En el cuadro anterior se pueden observar algunas de las clases de
excepciones que se pueden dar durante el manejo de los ficheros en java.
Los programas en java realizan la apertura de un archivo creando un objeto el
cual se asociara a un flujo de bytes o caracteres. El lenguaje de programación
java crea tres objetos flujo los cuales se asocian con dispositivos cuando un
programa java empieza su ejecución; estos son: System.in, System.out,
System.err.
System.in.- Es aquel que permite a un programa recibir bytes desde teclado.
System.out.- Es aquel que permite a un programa mostrar datos por pantalla.
System.err.- Es aquel que permite a un programa mostrar un mensaje de error
en la pantalla.


Claro que no siempre se aplica las definiciones antes descritas ya que cada
uno de estos flujos tiene la capacidad de redirigirse. Es así como System.in
tiene la capacidad de leer bytes desde un origen distinto, los otros 2 en cambio
pueden permitir que la salida se envié a una ubicación distinta, como por
ejemplo a un archivo en disco. La clase System proporciona algunos métodos
para la redirección de flujos estándar de entrada, salida y error como son: setIn,
setOut y setErr.


El manejo de los archivos en java se da gracias a las clases del paquete java.io
el cual posee definiciones para las clases de flujos como las siguientes:
   FileOutputStream
   FileReader
   FileWriter

                                        7
Todos los archivos se abren gracias a que se crean objetos de estas clases de
flujos, que heredan de las siguientes clases:
   InputStream
   OutputStream
   Reader
   Writer


Para la realización de entrada y salida de datos pueden usarse objetos de las
clases siguientes:
   ObjectInputStream
   ObjectOutputStream
   FileInputStream
   FileOutputStream


Para las operaciones de entrada y salida que se basan en caracteres se las
puede llevar a cabo con las siguientes clases:
   Scanner
   Formatter


La primera se usa en forma extensa la cual recibe datos desde teclado, claro
que también puede ser usada para leer datos desde archivos; la segunda en
cambio permite la visualización de datos con formato por pantalla o enviarlos a
un archivo.


JAVA
Java es un lenguaje de programación y la primera plataforma informática que
fue desarrollada por Sun Microsystem en 1995. Es la tecnología que permite el
uso de programas punteros como herramientas, juegos y aplicaciones.
Java Virtual Machine es únicamente un aspecto del software de Java, que es
utilizado específicamente para interacción en la web.




                                        8
ARREGLOS EN JAVA
Se conoce como un arreglo a una colección de elementos que son del mismo
tipo agrupados bajo un nombre de variable, a los cuales se los puede
diferenciar entre si por el numero de índice, cada celda de este tipo de
variables es numerada del 0 hasta n-1; donde n es la longitud del arreglo.
A los vectores que poseen una sola dimensión se les conoce como arreglos
unidimensionales o vectores; en cambio a los arreglos que pueden tener 2
dimensiones se les conoce como arreglos bidimensionales o matrices.
A un arreglo se lo puede declarar de varias maneras entre las que están:
Int calif [ ] = new int [50];
String diaSem [ ] = {“lun”,”mar”,”mie”,”jue”,”vie”,”sab”};
Los 2 ejemplos anteriores son formas correctas de declarar un arreglo. A
continuación se va a analizar como se puede obtener el tamaño de un arreglo.
La dimensión de un arreglo se lo puede obtener mediante la siguiente
sentencia:
Int longitud = arreglo.length;
Lo que se ha hecho es declarar una variable longitud en donde se almacenara
la longitud de dicho arreglo después colocamos nombre del arreglo seguida de
un punto y la palabra reservada length que nos retornara el tamaño del arreglo.
A un arreglo se lo puede recorrer mediante un ciclo repetitivo con el fin de tener
acceso a cada una de las posiciones del mismo.


JAVA.IO
Java.io es un paquete de clases el cual provee la entrada y salida del sistema a
través de flujos de datos Serialización y sistemas de archivos. Entre las clases
que posee este paquete para el manejo de información se analizaran las que
van a ser usadas en el presente proyecto.


FileWriter.
La clase FileWriter ayuda a que sea posible escribir un archivo como una
secuencia de caracteres. La clase FileWriter se basa en caracteres, la clase
FileWriter posee constructores que permiten especificar el archivo para la
escritura de diversas formas.


                                          9
Si en el supuesto caso de que el archivo que se especifica ya existe entonces
este se sobrescribe.


IOException.
La clase IOException del paquete java.io se nuestra cuando un error de
entrada o salida de datos a ocurrido. La clase IOException es una clase
general para las excepciones de entrada o salida de datos


BufferedReader.
La clase BufferedReader es la encargada de leer el texto de un flujo de
caracteres de entrada, el tamaño del buffer puede ser especificado o puede
usarse el tamaño por defecto el cual es lo suficientemente grande como para la
mayor parte de los propósitos.


MÉTODOS EN JAVA
En java un método es un bloque de código que se define dentro de una clase
que proporciona un mecanismo para la realización de una acción. Un método
tiene acceso a todos los atributos de su clase.
En java un método puede llamar a otro método; pero no se puede definir un
método dentro de otro; un programa realizado en java se ejecuta partiendo de
su método main.


Definición de métodos
Un método se lo puede definir de la siguiente manera:
<tipo de retorno> <nombre método> (<parámetros>…) {
Instrucciones…
}
En donde <tipo de retorno> es en donde se encontrara el tipo de valor que
devolverá el método, en <nombre método> se escribe el nombre del método;
<parámetros> esta parte de la declaración de los método encontraremos todos
los parámetros que usara el método los cuales se componen de un tipo y un
argumento y que son separados por comas.




                                       10
El ultimo de los componentes de un método son las <instrucciones> las
instrucciones son aquellas que implementan la tarea que debe realizar el
método.
Si el método usado va a devolver un valor debe finalizar con la palabra
reservada return. El valor que vaya seguido de la palabra return debe ser el
mismo del tipo de retorno que se puso al momento de crear el método. Dentro
de cada uno del método se pueden declarar variables locales según sea el
caso.
La finalización de la ejecución de un método es hasta llegar a la palabra
reservada return o hasta llegar al final del método.


Métodos que no retornan valor
Aquellos métodos que no regresan valor son aquellos que ejecutan
operaciones especificas y no poseen la palabra reservada return dentro de las
funcionalidad del método, estos método poseen en su parte de tipo de retorno
tienen la palabra void.


Metodos que retornan valor
Estos metodos además de ejecutar operaciones especificas poseen la palabra
reservada return dentro de las funcionalidades del metodo, además en la parte
de tipo de retorno debe ir el tipo de dato que el metodo devolverá.


Variables
Se conoce como variable a un valor modificable, son nombres que representan
un valor de un determinado tipo y el valor asociado al nombre se puede variar.
Dentro de las aplicaciones en java se pueden considerar 2 tipos de variables:
globales y locales.


Variables globales
Un algoritmo que usa métodos, se pueden declarar variables tanto dentro de la
clase antes de los métodos o de manera local en cada uno de los métodos. A
las variables que se definen antes de la declaración de los métodos se les
conoce como variables globales o variables de clase, estas pueden ser usadas
por cualquier método de la clase.

                                        11
Variables locales
Las variables locales a diferencia de las variables locales se definen dentro de
cada uno de los métodos que puede tener una clase, estas variables pueden
ser usadas por el método en donde fueron definidas.


Parámetros.
Se conoce como procedimiento a una variable que puede pasar su valor a un
procedimiento a partir del principal o de otro procedimiento. Dado que en
ocasiones es necesario mandar a un procedimiento ciertos valores para que
estos sean usados en algún proceso es aquí donde se usan los parámetros.
Dentro de la programación en java se puede considerar 2 tipos de parámetros:
parámetros por referencia, parámetros por valor.


Parámetros por referencia
A los parámetros por referencia también se les conoce como parámetros
variables, son variables locales de un método que se definen como parámetros
dentro del encabezado del mismo, esta sirve de conexión con otra variable a
través de su contenido, al momento de llamarse o invocarse el método es el
que establece la conexión, esto significa que si se le hace algún cambio a la
variable local del método llamado lo mismo le sucederá a la variable del
método con la cual fue conectada; esto se debe a que ambas ocupan la misma
posición de memoria.


Parámetros por valor
Es una variable local de un método que se define como parámetro en el
encabezado del mismo y sirve de conexión entre otra variable de otro método
mediante el envió de su valor, al momento que se hace la llamada del método
se rompe la relación de estas variables; después de esto lo que le suceda a la
variable que paso como parámetro no afectara a la otra variable.




                                      12
ANALISIS Y DISENO DE LA APLICACIÓN EN FUNCIÓN DE UNA
METODOLOGIA DE LA PROGRAMACIÓN ICONIX


Antes de comenzar el análisis de la aplicación usando el método escogido se
hará un análisis del método escogido de manera que se puede tener una idea
clara de como se va a trabajar en la aplicación con el uso de este método.


El método ICONIX se lo define como un proceso de desarrollo practico, este
método se encuentra entre la complejidad que presenta y la simplicidad que
posee el XP, esto es sin descartar el análisis y el diseño que XP no tiene
contemplado.


Al ser ICONIX un proceso simplificado en comparación con otros procesos
tradicionales, los cuales unifican un conjunto de métodos de orientación a
objetos esto se hace con el objetivo de abarcar todo el ciclo vida del proyecto.
Las tareas que realiza el método ICONIX son las siguientes:
      Análisis de requisitos
      Análisis y diseño preliminar
      Diseño
      Implementación


Como se pueden ver las tareas del método ICONIX con 4 en las cuales se
pretende abarcar todo lo necesario para que la aplicación desarrollada se
encuentre acorde con las necesidades del jugador. Sin mas en adelante con
concentraremos en aplicar estas tareas para el desarrollo de nuestra aplicación


1. Análisis de requisitos
   1.1. Requerimientos de los usuarios
       En el análisis de requisitos de nuestra aplicación se tomara en cuenta
       los requisitos que los usuarios considerarían para que un juego tenga la
       debida aceptación entre sus consumidores. Entre dichos requerimientos
       tendremos los siguientes:
       1. El juego tiene que ser de fácil acceso
       2. Debe permitir al usuario elegir el nombre que usura al largo del juego
                                       13
3. Debe permitir al usuario observar cual es su puntuación durante el
      juego
   4. Debe permitir al usuario elegir la categoría sobre en la cual desea
      participar
   5. Debe permitir al usuario la cantidad de puntos que juega en cada
      ronda de preguntas.
   6. Debe permitir al usuario el poder verificar si la respuesta ingresada
      es la correcta.
   7. Debe permitirle al usuario poder salir del juego cuando este así lo
      quisiera.
   8. Debe presentarle al usuario los resultados del juego antes de salir
      completamente del juego.
   9. Debe permitir al usuario jugar contra la computadora.


1.2. Prototipación Rápida
   En esta fase del análisis de requisitos se presentaran de manera rápida
   un prototipo de diseño de lo que será nuestra aplicación.


   Cabe mencionar que las interfaces que se presentan a continuación
   están sostenidas a cambios que se darán durante en desarrollo de la
   aplicación.


   1.2.1. Interfaz de usuario. Bienvenida a la aplicación




                            Fig. 1. Bienvenida al juego

                                  14
1.2.2. Interfaz del usuario. Nombre de los jugadores




                          Fig. 2. Ingreso de nombres de jugadores


         1.2.3. Interfaz de usuario. Interfaz Principal




                             Fig. 3. Interfaz del juego
Esta es la interfaz que se presentara antes de que los jugadores empiecen a
jugar.




                                         15
1.2.4. Interfaz de usuario. Interfaz Final.




                    Fig. 4. Información de resultados del juego


2. Análisis y diseño preliminar
   En esta segunda etapa de la metodología ICONIX consiste en los procesos
   que desarrollara nuestro juego, se procederá a la realización de los
   diagramas necesarios para que reflejen las interfaces de usuario que se
   presentaron en el literal anterior.


   2.1. Diseño de diagramas de casos de uso
       Antes de analizar los diagramas de casos de uso debemos tener en
       consideración, que en el caso de jugar contra la computadora esta será
       el jugador 1 y los demás jugadores le seguirán según el orden
       ingresado.


      2.1.1. Caso de uso. Ingreso de 2 o 3 jugadores.




                       Fig. 5. Caso de uso. Ingreso de 2 o 3 jugadores

                                         16
Descripción de caso de uso. Ingreso de 2 o 3 Jugadores
    Los jugadores realizan el registro en el juego colocando el nombre
    con el que se identificaran a lo largo del juego. Luego de que hayan
    ingresado sus nombres en los campos respectivos podrán ingresar.


2.1.2. Caso de uso. Seleccionar Apuesta




                 Fig. 6 Caso de uso. Seleccionar Apuesta


    Descripción de caso de uso. Seleccionar Apuesta
    Una vez que los jugadores ingresaron al juego mediante el ingreso
    de sus nombres, podrán ver la interfaz de usuario en donde podrán
    seleccionar la apuesta por la pregunta que la aplicación les hará
    dependiendo de la categoría que hayan seleccionado.


2.1.3. Caso de uso. Seleccionar Categoría.




                Fig. 7. Caso de uso. Seleccionar Categoría.



                               17
En esta caso de uso como se podrá observar los jugadores una vez
       que seleccionaron una apuesta para la ronda de preguntas
       correspondientes entonces tendrán que seleccionar la categoría de
       la cual la aplicación seleccionara una pregunta la cual tendrá que
       contestar el usuario según las opciones que tenga la misma.


  2.1.4. Caso de uso. Contestar Pregunta.




                     Fig. 8. Caso de uso. Contestar Pregunta


       Descripción de caso de uso. Contestar Pregunta.
       Como se podrá ver en la Fig. 8 para la elaboración del “Caso de
       uso. Contestar Pregunta”, se ha unificado este caso de uso con el
       anterior; Una vez que se haya seleccionado la categoría de la
       pregunta la aplicación le mostrara al usuario una pregunta con 3
       opciones de respuesta la cual deberá contestar. La aplicación le
       permitirá al usuario verificar su respuesta y ver la puntación que le
       corresponde por la misma.


2.2. Diagramas de Robustez
   Los diagramas de robustez se hacen con el fin de ilustrar de manera
   grafica las interacciones entre los objetos participantes de los casos de
   uso.




                                   18
Para la elaboración de los diagramas de robustez es muy necesario
completar el paso anterior, es decir la identificación y graficación de los
casos de uso ya que en base a estos se hará los diagramas de
robustez.


2.2.1. Diagrama de robustez. Ingreso Jugadores
    En el diagrama de robustez del ingreso de jugadores se ha tomado
    en cuenta lo siguiente.
           Se dirige a la interfaz Opciones Jugadores e ingresa los
            nombres de los jugadores.
           Se obtienen los nombres.
           Para ello se revisa que todos los campos que están
            destinados para el nombre se encuentren llenos.
           Si los campos de nombres no están llenos el programa
            lanzara una advertencia y nos llevara de nuevo a la interfaz
            para ingresar los datos faltantes.
           Si los campos de nombres están llenados entonces el
            programa nos llevara a la siguiente parte del juego en donde
            nos mostrara el nombre del jugador.




                  Fig. 9 Diagrama de robustez. Ingreso Jugadores




                                 19
2.2.2. Diagrama de robustez. Seleccionar Apuesta
    En el diagrama de robustez de seleccionar apuesta se ha tomado
    en cuenta lo siguiente.
          Se dirige a la interfaz Trivia en la cual se ingresa el valor de
           la apuesta correspondiente.
          Se obtiene el valor de la apuesta.
          Se comprueba que al menos uno de los valores de apuesta
           este seleccionado.
          Si ninguno de los campos de apuesta esta seleccionado se
           lanzara una advertencia pidiendo que se seleccione la
           apuesta.




                Fig.10 Diagrama de robustez. Seleccionar Apuesta


2.2.3. Diagrama de robustez. Seleccionar Categoría
    En el diagrama de robustez de seleccionar categoría se ha tomado
    en cuenta lo siguiente:
          Se dirige a la interfaz trivia en la cual el usuario deberá
           pulsar en el botón correspondiente a la categoría que desee
           jugar.
          Se obtiene el nombre de la categoría.
          Si ningunos de los botones de la categoría es pulsado el
           jugador no podrá avanzar en el juego.


                                20
Fig. 11. Diagrama de robustez. Seleccionar Categoría


2.2.4. Diagrama de robustez. Contestar Pregunta
    En el diagrama de robustez de contestar pregunta se ha tomado en
    cuenta lo siguiente:
          Se dirige a la interfaz trivia, en donde el jugador seleccionar
           la respuesta que considere correcta.
          Se obtiene la respuesta del usuario.
          Se consulta con el fichero correspondiente a las respuestas,
           si la respuesta es correcta y el jugador pulsa el botón
           verificar entonces la apuesta será positiva en consecuencia
           el usuario tendrá una puntuación mas alta; si la respuesta
           seleccionada es falsa entonces la apuesta será negativa en
           consecuencia la puntuación del usuario bajara.




                                21
Fig. 11. Diagrama de robustez. Contestar Preguntas


3. Diseño
  Para continuar con los análisis necesarios para que nuestra aplicación
  tenga el éxito deseado se continuara con los siguientes pasos que nos
  llevaran a un correcto análisis del diseño de nuestra aplicación antes de
  poder pasar al último paso que seria la implementación


  3.1. Diagrama de secuencia
      Uno de los primeros pasos a analizar dentro del diseño de una
      aplicación es el diagrama de secuencia. En nuestra aplicación se
      encontraran los siguientes diagramas de secuencias. Los diagramas a
      continuación serán representados solamente en forma grafica.


     3.1.1. Diagrama de secuencia. Ingreso Jugadores




                Fig. 12. Diagrama de secuencia. Ingreso de jugadores

                                    22
3.1.2. Diagrama de secuencia. Seleccionar Apuesta




        Fig. 13. Diagrama de secuencia. Seleccionar Apuesta


   3.1.3. Diagrama de secuencia. Seleccionar Categoría




             Fig. 14. Diagrama de secuencia. Seleccionar Categoría


   3.1.4. Diagrama de secuencia. Contestar Pregunta




        Fig. 15. Diagrama de secuencia. Contestar Pregunta.


3.2. Refinamiento de diagrama de clases.
   Una vez que hemos realizado una serie de diagramas los cuales nos
   han ayudado a comprender el funcionamiento de nuestra aplicación
   entonces procederemos a modificar el diagrama de clases con los


                                 23
cambios que se puedan tomar en cuenta según los diagramas antes
   realizados




                          Fig. 16. Diagrama de clases


3.3. Verificación del diseño
   Una vez que se ha realizado todos los análisis que contempla la
   metodología utilizada para el presente proyecto se procederá a verificar
   si los requisitos que se identificaron en pasos anteriores se han
   cumplido en su totalidad.


   1. El juego tiene que ser de fácil acceso
      El juego que se presenta es de fácil acceso para el usuario debido a
      que para el acceso al mismo solamente tiene al iniciar la aplicación
      solamente tiene que pulsar un botón que posteriormente lo llevara a
      la venta en donde colocara el nombre de los jugadores según el
      numero que se haya escogido.


   2. Debe permitir al usuario elegir el nombre que usura al largo del
      juego.
      Como ya se explico brevemente en el paso anterior el usuario podrá
      colocar que usara mientras dure el juego, rellenando los campos
      correspondientes.


                                  24
3. Debe permitir al usuario observar cual es su puntuación durante
   el juego.
   Una vez que se han cumplido los 2 pasos anteriores el usuario podrá
   observar la interfaz principal del juego en donde podrá observar en la
   parte superior de la ventana su nombre de jugador y su puntuación
   que variara a lo largo del juego.


4. Debe permitir al usuario elegir la categoría sobre en la cual
   desea participar.
   En la interfaz principal del juego tenemos varios botones que
   representan las categorías del juego.


5. Debe permitir al usuario elegir la cantidad de puntos que juega
   en cada ronda de preguntas.
   Como se podrá observar debajo del nombre y la puntuación el
   usuario podrá observar varios campos correspondientes a la apuesta
   que hara en cada ronda de preguntas. Cada vez que el usuario tenga
   que contestar una pregunta puede seleccionar también el valor de
   puntos que desea apostar en la misma.


6. Debe permitir al usuario el poder verificar si la respuesta
   ingresada es la correcta.
   Debajo de las opciones de respuesta el usuario podrá encontrar un
   botón que al pulsarlo comprobara y actualizara el mensaje de
   respuesta lo cual le permitirá saber si su respuesta es correcta o no.


7. Debe permitirle al usuario poder salir del juego cuando este así
   lo quisiera.
   Debajo del mensaje que muestra si la respuesta ingresada por el
   usuario es correcta o no; se encontrara un botón para poder salir de
   la aplicación




                                 25
8. Debe presentarle al usuario los resultados del juego antes de
        salir completamente del juego.
        Antes de salir completamente del juego al usuario se le presenta una
        ventana con las estadísticas del juego


     9. Debe permitir al usuario jugar contra la computadora
        La aplicación también posee la opción de jugar contra la
        computadora ya sea un jugador contra la computadora o 2 jugadores
        contra la computadora


4. Implementación
  Una vez que se han cumplido con todos los pasos anteriores de la
  metodología ICONIX, el último de los pasos que debemos completar es la
  implementación de nuestra aplicación.


  Para poder realizar una correcta implementación de nuestra aplicación
  deberemos cumplir con los siguientes procesos los cuales nos llevaran a
  una mejor implementación de nuestra aplicación.


  4.1. Escribir/Generar Código
     En este apartado se encontrara una breve descripción del código que va
     a contener cada uno de los módulos de nuestra aplicación; un resumen
     del código se podrá encontrar en uno de los siguientes apartados.


     Para facilitar aun más la comprensión del código de la aplicación lo
     describiremos según las interfaces que la componen. Además
     tendremos que aclarar que se tomara en cuenta tanto en este apartado
     como en los demás en los que tengamos que referirnos al código de la
     aplicación, solo se tomara en cuenta las partes mas importantes del
     mismo descartando el código que el asistente de la herramienta genera
     automáticamente




                                    26
4.1.1. Interfaz de Bienvenida
      Esta es una de las más sencillas ya que solo contendrá el código
      del nombre de la ventana, el código necesario para que la
      ventana se muestre en el centro de la pantalla, además de un
      botón el cual contendrá el código necesario para redirigirnos a la
      ventana siguiente. Y contendrá el código de un botón que nos
      mostrara un mensaje para el caso de que el usuario necesite
      ayuda sobre el juego.


4.1.2. Interfaz Jugadores
      En esta interfaz al igual que en la anterior tendremos el código
      correspondiente a las propiedades de la ventana que se
      mostraran al usuario.


      También contendrá el código de cada uno de las acciones de los
      menús los cuales permitirán mostrar los cuadros para el ingreso
      de los datos de los jugadores según sea el caso.


4.1.3. Interfaz Trivia
      Esta interfaz es aquella que contendrá mas código debido a que
      todos los procesos referentes a la administración de los ficheros
      que contienen las preguntas y las respuestas así como la
      verificación de las respuestas seleccionadas por el usuario serán
      administrados por esta interfaz mediante el uso de diferentes
      elementos que contendrá la interfaz.


      A mas de ello para evitar cambios bruscos durante la ejecución de
      la aplicación se ha programado para la aplicación bloquee
      algunos de los elementos de forma temporal con los códigos
      correspondientes.


4.1.4. Resultados
      En la clase resultados tendremos programada una interfaz de
      usuario la cual recuperara los datos de nombres de jugadores del

                                27
fichero correspondiente así como los datos del juego de la interfaz
anterior.


A mas de ello tendremos el código que nos mostrara cual fue el
usuario que gana al finalizar el juego




                          28
ARQUITECURA DE LA APLICACIÓN GRAFICA Y DESCRIPCION DE LOS
COMPONENTES
En este apartado veremos lo referente a la arquitectura de la aplicación y una
breve descripción de los componentes que la constituyen.


La arquitectura que se usara para la represente aplicación será la de 3 capas
que comprende el dominio, la lógica y la interfaz grafica.


Las capas de esta comprenden las siguientes capas:
       Cliente de la aplicación
       Servidor de aplicaciones
       Servidor de datos.


Una vez que hemos enumeramos cuales son las capas que comprenden la
arquitectura de 3 capas entonces ahora procederemos a describirlas una a una
dependiendo de los componentes de nuestra aplicación.


Para empezar a analizar la arquitectura de nuestra aplicación comenzaremos
con el analizar de lo que será el servidor de datos. En nuestro caso el servidor
de datos serán los ficheros que contiene la información acerca de las preguntas
y respuestas que se usaran en nuestra aplicación, es decir que el servidor de
base de datos lo compondrán los siguientes archivos:
       OpcionesPreguntasC1
       OpcionesPreguntasC2
       OpcionesPreguntasC3
       OpcionesPreguntasC4
       OpcionesPreguntasC5
       preguntascategoria1
       preguntascategoria2
       preguntascategoria3
       preguntascategoria4
       preguntascategoria5
       jugadores

                                        29
Estos son los 10 archivos que conformaran nuestro servidor de datos estos a
su vez se conectaran con la siguiente capa que será la de servidor de
aplicaciones en el que tendremos la lógica de nuestra aplicación la cual servirá
a manera de un puente entre el servidor de base de datos y la interfaz de
usuario.


Es decir en esta parte se encontrara toda la codificación que contendrá la
aplicación que lograra que nuestra aplicación se conecte de forma correcta
entre el servidor de datos y la interfaz.


A continuación se mostrara un diagrama de lo que será la comunicación de los
módulos de nuestra aplicación:




                                       Fig. 1


En la Fig. 1 se muestra como interactuaran tanto la base de datos que en
nuestro caso serán ficheros, el servidor de datos que en nuestro caso será el
código los diferentes módulos que componen nuestra aplicación como son: el
modulo de bienvenida, el modulo de opciones de usuario, el trivia y el modulo
de presentación de resultados.


En primer lugar los módulos que componen el servidor de aplicaciones según
sea el caso se conectaran con el servidor de datos para la entrada o salida de
datos según sea el caso.




                                            30
En el caso del primer modulo que corresponde a la bienvenida este no
contendrá ninguna interacción con la base de datos de nuestra aplicación; en
segundo modulo de nuestra aplicación que se encargar del manejo de la
información de los jugadores antes del juego será uno de los primeros en
comunicarse con el servidor de datos debido a que una vez que este modulo
recibe la información va al fichero correspondiente donde posteriormente se
almacenara. Esta operación se ilustra en la Fig. 2.




                                         Fig. 2


Otra de las comunicaciones que se hacen con el servidor de datos es la que
hace el modulo principal que comprende todo el código que maneja la
aplicación en donde se conecta no solo al servidor de datos para la
recuperación de los datos de los jugadores sino también los datos de las
preguntas y opciones de respuestas que tiene nuestra aplicación. Esto se
ilustra en forma grafica en la Fig. 3.




                                          31
Fig. 3


Y la ultima interacción que tiene el servidor de datos con el servidor de
aplicación será la que hace cuando el modulo para la presentación de
resultados inicia sus operaciones. Este modulo no solo interactúa con el
servidor de datos sino también con su modulo predecesor de manera que se
puedan presentar los datos del jugador que no están en el servidor de datos
esta ultima interacción se ilustrara en el Fig. 4.




                                       Fig. 4


Esta es principalmente la manera como se comunican cada uno de los
componentes de nuestra aplicación. Una vez que se ha visto la manera como
se comunican cada uno de los modulos de la aplicación ahora ilustraremos en
la Fig. 5 como quedaría todo el diagrama de la arquitectura de nuestra
aplicación desde el servidor de datos hasta lo que será la interfaz de usuario.


                                         32
Fig.5




 33
PROTOTIPOS
En este apartado podrán encontrar capturas de todos los módulos que
conforman la aplicación. Una vez que ya se han pulido dentro de las fases de la
metodología escogida.




                         Fig. 1. Interfaz Bienvenida




                          Fig. 2. Interfaz Jugadores




           Fig 3. Interfaz Trivia. Dos Jugadores antes del juego




                                      34
Fig. 4 Interfaz Trivia. Dos jugadores durante el juego




            Fig. 5. Interfaz de Resultados




                          35
DESCRIPCION DE LA APLICACIÓN
En este apartado trataremos de dar una breve descripción de la aplicación una
vez que ha pasado por todo el proceso que se requiere antes de ser
implementada.


La presente aplicación fue desarrollada tomando como base el código de la
aplicación trivia que se puede encontrar en la pagina mygnet.net; la aplicación
que se tomo como base poseía algunas restricciones a mas de las ya
especificadas para el presente proyecto además la aplicación manejaba las
preguntas directamente en el código haciendo difícil para un usuario común
poderlas modificar; por el contrario trivia de programación Java no maneja esta
información en el código sino que lo hace a través de ficheros.


La Trivia de Programación Java como se la ha llamado a la aplicación consta
de 4 ventanas las cuales se presentan al usuario en el orden en el cual fueron
programadas.


La primera ventana tendrá una imagen de entrada, un botón para poder
continuar navegando en la aplicación; además de un botón que mostrara donde
encontrar ayuda para la aplicación, en la siguiente ventana se encontrara un
barra de menú donde se podrá escoger dentro de el las opciones de jugadores
para esta aplicación


La siguiente ventana de la aplicación contendrá el juego en si, esta ventana se
encuentra divida en varias secciones entre las que se encuentra las secciones
siguientes: Datos del jugador, Categorías, Apuesta, opciones de respuesta,
pregunta, la de verificación de respuesta y además de ello algunos botones que
permitirán verificar la respuesta, avanzar al siguiente jugador y salir de esta
ventana.


La ultima ventana que se presentara al usuario será la ventana en donde
tendrá las estadísticas del juego o como mejor se le conocen los resultados del
juego.


                                       36
CODIFICACION
En esta sección se encontrara el código de cada uno de los módulos de
nuestra aplicación, debido a que para el desarrollo de la aplicación se uso el
asistente de Netbeans para la implementación de las interfaces de usuario, se
tomara en cuenta solo el código principal de cada uno de los módulos para que
el código no se haga muy extenso; ya que el asistente genera código
automáticamente según se le vayan agregando elementos a la ventana.


Dentro de la codificación también encontraremos algunas partes de código que
se repiten, en este caso solo se tomara una copia y se indicara en que partes
se encontrara ese código.


Una vez indicado el código que contendrá este apartado entonces
procederemos a detallar el código según las interfaces empleadas para
desarrollar esta aplicación.


    1. Interfaz de Bienvenida
           a. Primer Método de la interfaz
           Dentro de esta primera interfaz tendremos las 2 siguientes
           sentencias:
             this.setTitle("Bienvenida");
             this.setLocationRelativeTo(null);


           Con la primera le podremos colocar un nombre a la ventana, con la
           segunda en cambio colocaremos la ventana al centro de la pantalla
           pasándole null como parámetro.


           b. Método de la acción del botón Siguiente
           Dentro de la acción del botón siguiente tendremos las sentencias
           siguientes:


           Con la primera sentencia creamos un objeto OpcionesJugadores,
           en la segunda sentencia hacemos visible el objeto que declaramos


                                        37
anteriormente y con la última hacemos invisible la ventana de
      Bienvenida.


      c.   Método de la acción del botón Ayuda.
      Dentro de la acción de este botón tenemos programado un
      JOptionPane que nos mostrara un aviso de donde podemos obtener
      ayuda sobre el juego.


2. Interfaz Jugadores
      a.   Primer método de la Interfaz
      Dentro de este método también se tendrá las sentencias para
      colocar el titulo y la localización de la ventana.


      También se encontrara en este método la inicialización de las cajas
      de texto para el ingreso de información; por el momento a estas se
      las inicializara con la sentencia de setVisible dándole como
      parámetro false.


      Una vez inicializado las cajas de texto; se podrá programar las
      acciones de cada uno de los menús para que según la opción de
      menú que se escoja se muestren las cajas de texto para el ingreso
      de la información de los jugadores.


      b. Método que controla la acción del botón Jugar
      En este método es en donde se creara el fichero de jugadores que
      contendrá por el momento los nombres de los jugadores. Y después
      de ellos nos llevara a la siguiente ventana que es la ventana
      principal de la aplicación.


      c. Método que controla la acción del botón salir
      En este método tendremos solo la sentencia que nos permitirá salir
      de la aplicación cuando el usuario pulse el botón salir.




                                    38
3. Interfaz trivia
       a. Importamos las clases necesarias para la interfaz
       Para el correcto funcionamiento de esta interfaz tendremos que
       importar algunas clases de los paquetes que posee java entre ellas
       estarán las siguientes:


       Del paquete java.io
                 BufferedReader
              Esta clase lee el texto de un flujo de entrada de caracteres


                 FileNotFoundException
              Esta clase es de un error muy común que sucede cuando se
              trabaja con ficheros y sucede cuando se ha fallado en un
              intento de abrir un archivo.


                 FileReader
              Esta clase nos ayuda a leer un archivo de caracteres


                 IOException
              Esta clase también es parte de las excepciones que pueden
              ocurrir al trabajar con ficheros y ocurre cuando ha ocurrido
              alguna excepción de entrada o salida.


          Del paquete javax.swing
                 JOptionPane
              La clase JOptionPane hace mas fácil el que aparezcan
              cuadros de dialogo estándar que pueden ser usados para el
              ingreso de datos o para la salida de mensajes de alerta.


       b. Declaración de variables globales
       Declaramos las variables globales que vamos a usar es decir
       aquellas que se usaran en cualquiera de los métodos de la clase
       según sea necesario.


                                   39
Entre las variables globales que se usaran se tendrá que tener
variables tipo String para categoría, respuestas, preguntas,
puntajes; entre otras se tendrá que declarar el suficiente número de
variables globales para el correcto funcionamiento de esta
aplicación.


c.   Método Trivia
Este es el primer método que nos aparece después de importar las
clases necesarias y declarar las variables globales que se han de
necesitar.


En este método primeramente se encontrara una llamada al método
initComponents() después del cual se encontraran las sentencias
para colocar un titulo en la ventana, mostrar la ventana en el centro
de la pantalla y la que permite deshabilitar el botón de maximizar de
la ventana.


También se tendrá la llamada a los métodos siguientes:
valoresIniciales,    mostrarDatosJugadores,        controlJugadores,
después de lo cual se podrá inicializar el valor del limite de
preguntas y los valores de los componentes del panel de
verificación. También se encontrara la sentencia correspondiente al
tamaño de la ventana, el limite de preguntas del juego y la
inicialización de otros elementos que no se da en el método
valoresIniciales.


d. Método btnSeleccionarMouseClicked
En este método en primer lugar se controlara la selección de las
categorías y las apuestas, para luego de ello según las opciones
seleccionadas inicializar el valor de categoría y resp con los valores
correspondientes al nombre y extensión de los ficheros que
contienen la información de las preguntas de la trivia al igual que


                            40
incrementar el contador correspondiente al numero de preguntas de
la categoría seleccionada.


En este método también se deshabilitara el botón seleccionar y se
habilitara el botón de verificar; se hará también un llamado al
método de preguntas trivia, pasando como parámetros los valores
de categoría y resp.


e.    Método btnVerificarMouseClicked
     En este método lo que se encontrara es un llamado al método
     verificar, además de la asignación de un nuevo valor al panel de
     respuesta.


f.    Método btnSiguienteMouseClicked
En este método en primer lugar tendremos una sentencia de control
que controlara si se selecciono previamente la opción de jugar
contra la computadora entonces si el jugador que esta activo es la
computadora nos llevara al método controlJugadores; en caso
contrario nos llevara al método valoresIniciales.


Luego de lo cual se tendrá otra sentencia que permitirá controlar el
numero de preguntas que se han jugador en el caso que se haya
alcanzado el limite mostrara un mensaje de alerta y cerrara la
ventana principal de la trivia y mostrara la ventana de resultados;
en caso que no se haya alcanzado el numero de preguntas limite
entonces habilitara las opciones de botón para el siguiente jugador.


Además de lo antes indicado este método también contiene un
llamado a un método con el nombre de PintarJugadorActual; que
coloca en negrita el jugador actual, los valores tanto de la etiqueta
como del panel de verificación. Y inicializara en vacio la etiqueta de
pregunta y las etiquetas de cada uno de los botones de opción de
las preguntas.


                             41
g. Método btnSalirMouseClicked
En este método se encontrara una llamada al método de
guardarDatos para que se realice los procesos allí del guardado de
la información del juego.


h. Método valoresIniciales
En este método se encontraran las sentencias en donde se agregan
los botones de opciones al grupo de botones correspondientes.


Se inicializa el estado de los botones de opcion en falso, se
deshabilita los botones de verificar y siguiente; los valores de texto
de las etiquetas de jugador se las inicia como texto sin negrita, se
inicializa en vacío la etiqueta de preguntas y las etiquetas de los
botones de opción


También se inicializan los valores de los componentes del panel de
verificación.


i.   Método mostrarDatosJugadores
En este método se tendrán las sentencias para la lectura del fichero
en donde se encuentran los nombres de los jugadores. Al igual que
una sentencia de control que servirá para el control de los mismos
ya que si son 2 jugadores en la ventana solo mostrara las etiquetas
según el numero de jugadores que sean.


Inicializaremos el valor de numJug; que es el número de jugadores
según el número de datos recuperados y se hará un llamado al
método PintarJugadorActual.


j.   Método controlJugadores
En este método se tendrá un llamado al método jugar.




                            42
k.   Método SeleccionarCategoriaComputador
En este método se inicializara la variable numCat usando un
numero aleatoria que vaya desde el 1 al 5, a continuación de ello
tendremos los mismo controles como en el botón seleccionar, los
cuales según el valor del numCat asignara una categoría al
ordenador.


l.   Método SeleccionarApuestaComputador
En este método al igual que en el anterior se inicializara la variable
numApu con un valor aleatorio entre 1 y 5, según la opción que se
seleccione se deshabilitaran los demás botones siguiendo el mismo
proceso que si fuera un jugador mas.


m. Método preguntasTrivia
Como ya se dijo en un método pasado este método recibe 2
parámetros el uno categorias y el otro resp, estos parámetros
contienen el nombre del fichero de preguntas y respuestas
respectivamente con sus extensiones los cuales se usaran en lo
posterior.

Se declararan variables locales para el almacenamiento de algunos
datos importantes como son el número de líneas del fichero de las
preguntas, el número de líneas del fichero de opciones de
respuesta, un contador para las preguntas, un contador para las
respuestas, un arreglo en donde se almacenaran las preguntas, un
arreglo en donde se almacenaran las respuestas.


Se tendrá las sentencias para la lectura de un fichero en donde se
coloca el nombre del fichero que se va a abrir se colocara el valor
de la variable categoría. Seguidamente con la ayuda de un ciclo
repetitivo almacenaremos los datos recuperados del fichero en un
arreglo. Se sigue el mismo procedimiento para la recuperación de
las opciones de pregunta del fichero los únicos cambios que hay

                            43
que hacer son el nombre de la variable que se colocara en donde
va el nombre del fichero que se desea abrir y el arreglo donde se
almacenaran los datos.


Se inicializara la variable pregunta con un valor aleatorio que vaya
desde el 1 hasta el 10 con usando Math.random.


Seguidamente inicializara la variable cat con las preguntas
recuperadas según las posiciones del arreglo de preguntas.


Seguidamente se encontrara un switch que tendrá la variable
pregunta con la cual se controlara la visualización de las preguntas
según su número, como se tiene 10 preguntas por categoría
entonces el numero de case del switch será 10, entonces
dependiendo del numero de case se recuperara la pregunta y las
opciones de respuesta según las posiciones del arreglo tanto de
preguntas como de respuestas y se los mostrara en las etiquetas
correspondientes en la interfaz grafica.


Como      las   sentencias   anteriores     van   a   provocar   algunas
excepciones propias del manejo de ficheros entonces el código
anterior se tendrá que encapsular en sentencias try catch o en su
defecto    controlar   con   algún   otro    método    las   excepciones
provocadas.


n. Método verificar
En este método se encontrara la habilitación de botón siguiente y la
deshabilitación del botón verificar, también se creara una variable
booleana llamada esCorrecto.


Luego de lo cual se tendrá una serie de if’s anidados los cuales
realizaran el control de la respuesta seleccionada por el usuario
según la categoría y la opción de respuesta que este haya
seleccionado, también se tendrá las sentencias para el cambio de

                             44
color del panel de verificación, y la asignación de un valor a la
variable esCorrecto según sea el caso; además de un llamado al
método Puntuacion con el valor de la variable esCorrecto.


o. Método Puntuacion
En este método en primer lugar recibirá una variable booleana
llamada opción la cual necesitaremos en las sentencias posteriores.


En primer lugar se tendra el control sobre los botones de apuesta
según cual sea la opuesta del jugador entonces se pasara a la
siguiente sentencia la cual controla el numero de jugadores y a
través de un switch usando la variable jugadorActual según el
numero de opcion dentro del switch entonces se tendra otro control
pero esta vez sobre la variable esCorrecto en la cual si esta es
verdadera se sumara al jugador correspondiente la puntuación
según la opcion seleccionada.


p. Método SeleccionarRespuestaComputador
En este método se asigna un numero aleatorio entre el 1 y 3 a la
variable numOpc, luego de lo cual según este numero se
seleccionara       el   botón   de   opción   correspondiente    mediante
sentencias if’s.


q.   Método guardarDatos
En el método guardar datos una vez que se haya realizado las
acciones del botón salir entonces tendremos las sentencias
necesaria para guardar los datos del juego en el fichero de
resultados de manera que puedan ser recuperados del fichero hacia
la ventana siguiente. Una vez que se complete la grabación de los
datos en el fichero entonces se colocaran las sentencias para
dirigirnos a la siguiente ventana, y cerrar la ventana actual.




                                45
r.   Método Jugar
      En este método comprobaremos si el jugador actual es la
      computadora entonces nos dirigiremos a los métodos que se
      encargan de realizar la jugada de la computadora, dentro del if que
      comprueba si el jugador actual es la computadora tendremos otro
      que en cambio maneje los métodos necesarios cuando los
      jugadores no son la computadora.


      s.   Método PintarJugadorActual
      En este método se tendrá las sentencias necesarias con las cuales
      dependiendo del jugador que este actualmente activo se dará
      formato a las etiquetas correspondiente para que se puede
      distinguir al jugador activo de los demás jugadores.


4. Interfaz Resultados
      a. Importamos las clases necesarias para la interfaz
             i. BufferedReader
              Esta clase lee el texto de un flujo de entrada de caracteres


                 FileReader
              Esta clase nos ayuda a leer un archivo de caracteres.


      b. Declaración de variables globales.
      Después de la clase se declararan las variables globales que se
      usaran que en este caso serán las siguientes:


      numLineas de tipo entero y la inicializaremos con el numero de
      líneas que tiene el fichero de jugadores posteriormente al guardar
      los datos del juego en este caso será 11; un contador        para el
      control del numero de líneas esto de tipo entero, un arreglo para
      poder almacenar los datos recuperados del fichero, un objeto de
      tipo TriviaComputador y numJug de tipo entero.




                                 46
c.   Método Resultados
Debido a que este es el primer método de la interfaz entonces aquí
encontraremos la llamada al método initComponents que es uno de
los métodos que el asistente de interfaz grafica de Netbeans
implementa automáticamente después de ello tendremos las
sentencias para colocar el nombre a la ventana y centrar la ventana
en el centro de la pantalla, al igual que 3 etiquetas que no tendrán
ningún valor por el momento.


Una vez que se haya hecho lo anteriormente explicado entonces se
tendrá que escribir posteriormente las sentencias para la lectura del
fichero de jugadores que es en donde se encontraran los datos de
los jugadores.


Luego de ellos con la ayuda de un ciclo repetitivo se llenaran el
arreglo que declaramos anteriormente con los datos que se
recuperan del fichero.


Una vez que el arreglo tenga los datos del fichero se hará una
comparación para comprobar cuantos jugadores existen y poder así
mostrar los datos en las respectivas etiquetas; sea el caso que si
existe solo 2 jugadores es decir la posición 2 del arreglo se
encuentra    vacía    entonces   no   se   mostraran     las   etiquetas
correspondientes al jugador 3; caso contrario se las mostrara. Algo
que se debe tomar en cuenta que siempre en un arreglo se empieza
contando desde la posición 0 hasta el final del mismo.


Por ultimo se tendrá un llamado al método mostrarGanador.


d. Método btnSalirMouseClicked
Aquí se encontrara la sentencia System.exit(0) que nos permitirá
salir de la aplicación.




                            47
e.   Método mostrarGanador
En este método se hará una comparación con los valores de las
puntuaciones de los jugadores y se mostrara la etiqueta al frente del
jugador con el mayor puntaje señalándolo como ganador.




                           48
CONCLUSIONES
Como conclusiones una vez terminado este proyecto tenemos las siguientes:
      La utilización de ficheros para administrar información es muy práctica
       cuando no se va a manejar grandes cantidades de información que
       requiere ser actualizada sin hacer cambios en la aplicación sobre la cual
       se usa.


      La implementación de ficheros dentro de una aplicación puede ser
       tediosa en el caso de necesitar correr la aplicación en varios Sistemas
       Operativos.


      El uso de arreglos para la recuperación de datos de un fichero es muy
       útil ya que permite administrar la información que se recupera de la
       manera más fácil posible sin incluir otras sentencias que complicarían
       más la aplicación y no se obtendría los resultados esperados.


      Uso del asistente que posea la herramienta con la que se vaya a
       programas en determinado lenguaje es muy útil a la hora de la creación
       de interfaces graficas.


      El uso de juegos para el reforzamiento de los conocimientos de los
       estudiantes es muy útil ya que permite al estudiante evaluar sus
       conocimientos personalmente en un ambiente de competencia sana.


      No es posible implementar aplicaciones desarrolladas en java en
       ordenadores que tengan diferentes versiones de la JVM (Maquina Virtual
       de Java).




                                       49
RECOMENDACIONES
Entre las recomendaciones que se pueden dar acerca de este proyecto se
tienen las siguientes:
      Se debe tener mucho cuidado con los errores que se puedan dar en la
       aplicación durante el periodo de prueba de la aplicación


      Se debe tener nociones básicas del manejo de excepciones y manejos
       de las misma para realizar de la manera mas correcta la codificación de
       esta aplicación


      Se debe seguir en forma secuencial cada uno de las fases de la
       metodología que se elija para la realización de un proyecto.


      Se debe tener una constante interacción con el usuario final de la
       aplicación ya que este será el que juzgue si la aplicación que se ha
       desarrollado esta acorde con los requerimientos que este solicito.


      Se debe tener en cuenta la versión de la maquina virtual de java del
       ordenador donde se realizada la aplicación y la versión de la misma del
       ordenador donde se la implementara.




                                       50
BIBLIOGRAFIA
RB1: Yahoo Respuestas en español (s.f). Recuperado el 11 de abril del 2012
de
http://espanol.answers.yahoo.com/question/index?qid=20060829071835AAHkd
XI
RB2: Pereira González M (s.f). Excepciones. Recuperado el 11 de abril del
2012 de http://ocw.uc3m.es/ingenieria-
informatica/programacion/transparencias/tema8.pdf
RB3: García Beltrán A, Arranz J. M (s.f). Otras Sentencias. Recuperado el 11
de abril del 2012 de http://ocw.upm.es/lenguajes-y-sistemas-
informaticos/programacion-en-java-i/Contenidos/LecturaObligatoria/7-
otrassentencias.pdf
RB4: López P, Ruiz F (s.f).Ingenieria de Software I Tema 2: Lenguaje unificado
de modelado UML. Recuperado el 11 de abril del 2012 de
http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales-
de-clase-1/is1-t02-trans.pdf
RB5: Garcia Peñalvo F, Conde Gonzalez M, Bravo Martin S (2008). Ingenieria
del Software Tema 2: Modelo objeto Una descripción de UML. Recuperado el
11 de abril del 2012 de http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-
software/contenidos/Tema2-Modeloobjeto-1pp.pdf
RB6: Lopez P, Ruiz F (s.f). Ingenieria del Software I Tema 7: Iteraciones del
Sistema (en el desarrollo de OO). Recuperado el 11 de abril del 2012 de
http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales-
de-clase-1/is1-t07-trans.pdf
RB7: Aycart Perez D, Gibert Ginesta M, Hernandez Matias M, Mas Hernandez
Jordi (s.f). Ingeniería del software en entornos de SL. Recuperado el 11 de abril
del 2012 de http://ocw.uoc.edu/computer-science-technology-and-
multimedia/software-engineering-in-free-software-environments/software-
engineering-in-free-software-environments/XP06_M2112_01486.pdf
RB8: Package java.io. Recuperado el 11 de abril del 2012 de
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/package-summary.html
RB17: Deitel P, Deitel H (2008). Java como programar. México: Pearson
Prentice Hall.


                                       51
RB18: Camacho Fernández, D. (Coordinador); Valls Ferrán, J. M.; García
Herrero J.; Molina López, J.; Bueno Rodríguez, E (2003). Programación,
Algoritmos y Ejercicios Resueltos en Java. Madrid: Pearson Educación S.A.
RB19: Stevens P.; Polley R (2002). Utilización de UML en ingeniería de
Software con objetos y componentes. Madrid: Pearson Educación S.A.
RB9: ¿Qué es la tecnología Java y por qué lo necesito?. Recuperado el 22 de
abril del 2012 de http://www.java.com/es/download/faq/whatis_java.xml
RB10: Salvador Vargas A. Arreglos en Java. Recuperado el 22 de abril del
2012 de http://www.utim.edu.mx/~salvar73/material/java/Arreglos.pdf
RB11: Jenkov J. Java IO: FileWriter. Recuperado el 22 de abril del 2012 de
http://tutorials.jenkov.com/java-io/filewriter.html
RB12: Clase BufferedReader. Recuperado el 22 de abril del 2012 de
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html
RB13: Métodos en Java. Recuperado el 22 de abril del 2012 de
http://www.slideshare.net/mtemarialuisa/mtodos-java
RB14: Variables Java. Recuperado el 22 de abril del 2012 de
http://www.webtaller.com/construccion/lenguajes/java/lecciones/variables-
java.php
RB15: Unidad 6: OPP Java Tema 2: Parámetros. Recuperado el 22 de abril del
2012 de http://www.programacionfacil.com/java:parametros
RB16: Clase y objetos en Java Lógica de la Programación. Recuperado el 22
de abril del 2012 de http://www.scribd.com/leonardo_cristancho/d/48801584-
Clases-y-Objetos-en-Java




                                          52

Más contenido relacionado

La actualidad más candente

El Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanEl Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanJuan Pablo Bustos Thames
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionalesAngel Minga
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosDarwin Linares
 
Fase 2 trabajo colaborativobase de datos basicos
Fase 2 trabajo colaborativobase de datos  basicosFase 2 trabajo colaborativobase de datos  basicos
Fase 2 trabajo colaborativobase de datos basicosLuIsAVera15
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
2.5.3 interfaz videojuego
2.5.3 interfaz videojuego2.5.3 interfaz videojuego
2.5.3 interfaz videojuegoDiana Hernandez
 
Diseño de Sistemas
Diseño de SistemasDiseño de Sistemas
Diseño de SistemasJUANESTEFA
 
Informe Proyecto BD I - Sistema Biblioteca
Informe Proyecto BD I -  Sistema BibliotecaInforme Proyecto BD I -  Sistema Biblioteca
Informe Proyecto BD I - Sistema BibliotecaGerson Vargas Luján
 
Documentos de analisis de requerimientos
Documentos de analisis de requerimientosDocumentos de analisis de requerimientos
Documentos de analisis de requerimientosMilton Garzon
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 
Analisis y-tecnicas-de-recoleccion-de-datos
Analisis y-tecnicas-de-recoleccion-de-datosAnalisis y-tecnicas-de-recoleccion-de-datos
Analisis y-tecnicas-de-recoleccion-de-datosElvis De Lal Cruz
 
Diseño logico de una base de datos
Diseño logico de  una base de datosDiseño logico de  una base de datos
Diseño logico de una base de datosRobert Rodriguez
 
Computacion grafica i sistemas y computacion
Computacion grafica i sistemas y computacionComputacion grafica i sistemas y computacion
Computacion grafica i sistemas y computacionmartinarosemena
 

La actualidad más candente (20)

El Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanEl Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger Pressman
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
Modelo TSP
Modelo TSPModelo TSP
Modelo TSP
 
Reglas de Oro
Reglas de OroReglas de Oro
Reglas de Oro
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventarios
 
Fase 2 trabajo colaborativobase de datos basicos
Fase 2 trabajo colaborativobase de datos  basicosFase 2 trabajo colaborativobase de datos  basicos
Fase 2 trabajo colaborativobase de datos basicos
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
2.5.3 interfaz videojuego
2.5.3 interfaz videojuego2.5.3 interfaz videojuego
2.5.3 interfaz videojuego
 
Diseño de Sistemas
Diseño de SistemasDiseño de Sistemas
Diseño de Sistemas
 
Informe Proyecto BD I - Sistema Biblioteca
Informe Proyecto BD I -  Sistema BibliotecaInforme Proyecto BD I -  Sistema Biblioteca
Informe Proyecto BD I - Sistema Biblioteca
 
Documentos de analisis de requerimientos
Documentos de analisis de requerimientosDocumentos de analisis de requerimientos
Documentos de analisis de requerimientos
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Analisis y-tecnicas-de-recoleccion-de-datos
Analisis y-tecnicas-de-recoleccion-de-datosAnalisis y-tecnicas-de-recoleccion-de-datos
Analisis y-tecnicas-de-recoleccion-de-datos
 
Como Documentar Casos De Uso
Como Documentar Casos De UsoComo Documentar Casos De Uso
Como Documentar Casos De Uso
 
Diseño logico de una base de datos
Diseño logico de  una base de datosDiseño logico de  una base de datos
Diseño logico de una base de datos
 
Computacion grafica i sistemas y computacion
Computacion grafica i sistemas y computacionComputacion grafica i sistemas y computacion
Computacion grafica i sistemas y computacion
 
Modelo GOMS
Modelo GOMSModelo GOMS
Modelo GOMS
 

Similar a Informe proyecto trivia java

Desarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdfDesarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdfALEXANDRADELGADOORTE
 
Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Alejandra Hoyos
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsGabriel Bermudez
 
Guia de ingenieria_del_software
Guia de ingenieria_del_softwareGuia de ingenieria_del_software
Guia de ingenieria_del_softwarecabronudo
 
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxDesarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxGRSHISUIYT
 
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxDesarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxSamuelLerma5
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmosarmando_franco
 
Desarrollo de Habilidades de Pensamiento tecnologia
Desarrollo de Habilidades de Pensamiento tecnologiaDesarrollo de Habilidades de Pensamiento tecnologia
Desarrollo de Habilidades de Pensamiento tecnologiaLAURAVALENTINAMARIN2
 
Teoria de sistema Venta y reparacion de equipos
Teoria de sistema Venta y reparacion de equipos  Teoria de sistema Venta y reparacion de equipos
Teoria de sistema Venta y reparacion de equipos samuel velasquez
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos JavaJosé Mendoza
 
Trabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticaTrabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticasarasepulveda12
 
Trabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticaTrabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticaCristinaMuoz104
 
Propuesta de proyecto stebi(soporte técnico y bitácora)
Propuesta de proyecto stebi(soporte técnico y bitácora)Propuesta de proyecto stebi(soporte técnico y bitácora)
Propuesta de proyecto stebi(soporte técnico y bitácora)generalmundo
 

Similar a Informe proyecto trivia java (20)

Capitulo7
Capitulo7Capitulo7
Capitulo7
 
Ptordoya tfc0111
Ptordoya tfc0111Ptordoya tfc0111
Ptordoya tfc0111
 
Desarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdfDesarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdf
 
Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en Grails
 
Desarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdfDesarrollo de Habilidades de Pensamiento.pdf
Desarrollo de Habilidades de Pensamiento.pdf
 
Guia de ingenieria_del_software
Guia de ingenieria_del_softwareGuia de ingenieria_del_software
Guia de ingenieria_del_software
 
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxDesarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
 
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docxDesarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
Desarrollo de habilidades de pensamiento-samuel lerma-joel rivas.docx
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmos
 
Disenoestructuradoalgoritmos
DisenoestructuradoalgoritmosDisenoestructuradoalgoritmos
Disenoestructuradoalgoritmos
 
Desarrollo de Habilidades de Pensamiento tecnologia
Desarrollo de Habilidades de Pensamiento tecnologiaDesarrollo de Habilidades de Pensamiento tecnologia
Desarrollo de Habilidades de Pensamiento tecnologia
 
B learnin
B learninB learnin
B learnin
 
Teoria de sistema Venta y reparacion de equipos
Teoria de sistema Venta y reparacion de equipos  Teoria de sistema Venta y reparacion de equipos
Teoria de sistema Venta y reparacion de equipos
 
Practica 3
Practica 3Practica 3
Practica 3
 
Competencias digitales para_maestros_de
Competencias digitales para_maestros_deCompetencias digitales para_maestros_de
Competencias digitales para_maestros_de
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
Trabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticaTrabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informatica
 
Trabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informaticaTrabajo escrito de tecnologia e informatica
Trabajo escrito de tecnologia e informatica
 
Propuesta de proyecto stebi(soporte técnico y bitácora)
Propuesta de proyecto stebi(soporte técnico y bitácora)Propuesta de proyecto stebi(soporte técnico y bitácora)
Propuesta de proyecto stebi(soporte técnico y bitácora)
 

Último

Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 

Último (20)

Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 

Informe proyecto trivia java

  • 1. UNIVERSIDAD TECNICA PARTICULAR DE LOJA La Universidad Católica de Loja Escuela de Ciencias de la Computación Carrera de Sistemas Informáticos y Computación Programación de Algoritmos Profesional en Formación: Castillo Cevallos Miguel Eduardo Docente: Ing. Quezada Sarmiento Pablo Alejandro Loja – Ecuador 2012
  • 2. CONTENIDOS Tabla de contenidos…………………………………………………………….... I Tema……………………………………………………………………………... Ii Objetivos…………………………………………………………………………… Iii Justificación………………………………………………………………………... Iv Alcance…………………………………………………………………………...... Vi Limitaciones………………………………………………………………….......... Vii Marco Teórico……………………………………………………………………... 1 Análisis y diseño de la aplicación……………………………………………….. 13 Análisis de Requisitos…………………………………………………….. 13 Análisis y Diseño preliminar……………………………………………… 16 Diseño………………………………………………………………………. 22 Implementación…………………………………………………………… 26 Arquitectura de la aplicación grafica y descripción de componentes……….. 29 Prototipos…………………………………………………………………………... 34 Descripción de la aplicación……………………………………………………... 36 Codificación………………………………………………………………………... 37 Conclusiones………………………………………………………………………. 47 Recomendaciones………………………………………………………………… 50 Bibliografía…………………………………………………………………………. 51 i
  • 3. Trivia de Programación de Algoritmos en Java ii
  • 4. OBJETIVOS: ◦ General: Hacer uso de un juego de trivia para ayudar en la formación de los estudiantes de la Escuela de Sistemas Informáticos y Computación de la Universidad Técnica Particular de Loja. ◦ Específicos:  Fortalecer los conocimientos en el uso de ficheros en java  Ayudar a fortalecer los conocimientos en computación de los estudiantes con el uso de un juego de trivia.  Fortalecer los conocimientos del uso de interfaces graficas en Java. iii
  • 5. JUSTIFICACION Los juegos en donde se pone a prueba la capacidad de razonamiento y memoria de los estudiantes son muy utilizados en la actualidad como y una herramienta en el aprendizaje. Anteriormente se creía que el tiempo que las personas utilizaban para jugar era una perdida de tiempo y no se adquirían conocimientos durante este tiempo; es decir era tiempo que el estudiante perdía. Esta afirmación depende del tipo de juegos que se le presente al estudiante sea este del nivel que sea; ya que el juego logra estimular los sentidos de los estudiantes para poder lograr superarse en el mismo, de manera que puedan subir en los niveles en el juego y así poder organizar competencia en donde se comparara los puntajes obtenidos o niveles alcanzados por cada uno de los estudiantes. En la actualidad en algunas instituciones educativas se usa el juego como un método para el reforzamiento en el proceso de la educación de niños y jóvenes; entonces contrario a lo que se pensaba anteriormente sobre el juego quedaron desechadas ya se con la ayuda de este se pudo reforzar En base a estos antecedentes se pensó en el desarrollo de este proyecto para que sea usado a manera de herramienta de reforzamiento de los conocimientos en la materia de Programación de Algoritmos. El presente proyecto constara de diferentes categorías en las cuales se encontrara una serie de preguntas que podrán ser cambiadas de manera muy sencilla debido a la utilización de ficheros que permitan un mejor manejo de las mismas. El uso de ficheros para la realización de este proyecto fue para poder tener un mejor manejo del espacio durante la ejecución de la aplicación, debido a que si cargamos toda la información que contiene los ficheros en la memoria de la computadora podemos hacer que esta sea mas lenta al momento de la realización de los procesos de la aplicación o podemos con ello provocar que el computador se cuelgue y se dañen todas las actividades que se encuentre realizando el usuario al momento de la ejecución del mismo. iv
  • 6. Se pensó hacerlo utilizando ficheros de manera que el profesor, tutor o cualquier usuario pueda realizar cambios en las preguntas sin la necesidad que al momento de hacer los cambios este presente un programador. Esto ayudara al usuario final a tener varias posibilidades de cambios en el programa. Otra de las ventajas que tanto el usuario final como el programador tienen al usar ficheros es que para la corrección de errores en las preguntas u opciones no se tiene que revisar todo el código para encontrar las líneas de código a modificar si no que se realizaran en el fichero, en el cual podemos utilizar las opciones de búsqueda que tienen cada uno de los programas que se usan para la administración de los mismos v
  • 7. ALCANCE El alcance del presente proyecto se definirá de la siguiente manera: La aplicación que se desarrollara en el lenguaje de programación java con el uso de Netbeans es un juego de trivia en java en cual tendrá algunas características que se irán detallando durante el desarrollo del presente alcance. La aplicación constara de una primera ventana en donde se dará la bienvenida al usuario con un botón para poder ingresar al juego, luego de ello se le presentara al usuario una ventana en donde deberá poner el nombre que lo identificara durante el juego, una vez que se haya seleccionado el nombre, y pulsado el botón de JUGAR al usuario se le presentara la ventana del juego propiamente dicha en donde tendremos los siguientes elementos gráficos:  Un panel con los nombres y puntuación de todos los jugadores resaltado en negrita el jugador activo  Se encontrara junto al panel de Datos de Jugadores tendrá el panel con las diferentes opciones de categorías con las que cuenta el juego.  En la parte inferior al panel de Datos de Jugadores se encontraran los botones de opción correspondientes a las apuestas que se puede realizar.  En la parte baja de la aplicación tendremos 2 partes; en la parte izquierda tendremos las preguntas que serán seleccionadas de forma aleatoria con sus respectivas opciones. La pregunta se presentara en un etiquetas y las opciones serán presentadas en botones de opción en donde el usuario podrá seleccionar la respuesta que considere correcta, también se tendrá un botón en donde el usuario podrá comprobar sus respuestas. En la segunda parte o parte izquierda tendrá un cuadro con un mensaje que mostrara si su respuesta es correcta o incorrecta, este panel a su vez cambiara también de color sea su respuesta. Como ya se indico anteriormente para el manejo de las preguntas se usaran ficheros por su facilidad de realizar cambios sin la necesidad de modificar el código fuente de la aplicación. Es decir el juego se convertiría en un juego vi
  • 8. netamente dinámico ya que si el usuario considere que las preguntas que tiene la aplicación no están acordes con sus necesidades, se podrá hacer los cambios respectivos sin la necesidad de que este recurra a un gasto económico para que un programador realice los cambios en el código fuente de la aplicación debido a que esto representaría un uso de recursos tanto en tiempo como en dinero para el usuario, debido a que no podría tener listo el material para su clase por la dificultad para realizar los cambios en la aplicación. vii
  • 9. LIMITACIONES Dentro de las limitaciones que pueden darse durante el transcurso del desarrollo del presente proyecto están las siguientes:  Las rutas de los ficheros deben ser tratadas de forma absoluta de manera para evitar errores de archivos no encontrados.  El control de las excepciones que se puedan dar debido a los ficheros.  El control de las excepciones que se puedan dar debido a la utilización de interfaces graficas.  El programa solo podrá ser usados en ordenadores con sistemas operativos Windows  El nombre de las categorías debe ser cambiado desde el código de la aplicación.  La versión de la maquina virtual de java (JVM), debe ser la misma con la que se desarrollo la aplicación. viii
  • 10. MARCO TEORICO Entre los conceptos que se usaran para el desarrollo del siguiente proyecto están los siguientes: TRIVIA Se denomina trivia a una pregunta o serie de preguntas con tres opciones de respuesta que normalmente van enfocadas a un concurso EXCEPCIONES EN JAVA Se conoce con el nombre de excepción a una condición anormal que surge en una secuencia de código durante la ejecución de un programa Para la gestión de errores java cuenta con palabras reservados como son: try/catch/finally/throw/throws; están se analizaran mas adelante. Cuando un método provoca una excepción, tiene una de las 2 siguientes posibilidades: Gestionarla el mismo.- Es decir, el método en donde ocurrió la excepción deberá capturarlo o detectarlo al error producido y tratar de darle una solución. Pasarla a otro método.- El método que ha producido un error tiene la posibilidad de pasar el objeto tipo excepción al método que lo invocase. Una excepción puede ser producida por el intérprete de Java o por el código. La gestión de las excepciones en Java se realiza mediante un conjunto de palabras reservadas propias de los lenguajes de programación. Todas las excepciones en Java son subclases de la clase Throwable que se divide en 2 partes que son: Exception Esta es aquella que representa excepciones que deben capturarse y tratarse. Una de las subclases de Exception es RuntimeException de la cual heredan otras excepciones. Error Esta en cambio representa errores graves que generalmente no están controlados y por consiguiente provocan que la aplicación se detenga. 1
  • 11. Entre las excepciones más comunes se pueden encontrar las siguientes:  IOException.- Problema de entrada o salida de datos  ArithmeticException.- Desbordamiento o división para cero  NumberFormatException.- Conversión ilegal de un String a un entero.  IndexOutOfBoundsException.- Acceso a un elemento inexistente de un vector o de un String  NegativeArraySizeException.- Intento de creación de un vector con longitud negativa.  NullPointerException.- Intento de uso de una referencia nula  SecurityException.- Violación de la seguridad en tiempo de ejecución. UML Analizaremos gran parte de lo que es UML debido a que se usara mas adelante como una herramienta para el desarrollo del presente proyecto. Se conoce como UML a un lenguaje de modelo visual de propósito general orientado a objetos; el cual agrupa notaciones y conceptos provenientes de distintos tipos de métodos orientados a objetos Podemos citar 2 características importantes UML que son:  UML es independiente del proceso de desarrollo  Cubre las diferentes vistas de la arquitectura de un sistema. Ahora analizaremos algunas de las ventajas y desventajas que tiene UML o Es estándar o Se basa en el metamodelo con una semántica bien definida o Basado en una notación grafica que es concisa, de fácil aprendizaje y uso. o Se puede usar para el modelado de sistemas de software en distintos dominios. o Es fácil extenderlo Las anteriormente descritas son algunas de las ventajas que ofrece UML, ahora veremos algunas de las desventajas del mismo. o No es una metodología o No cubre todas las necesidades de especificación de un software o Puede resultar complejo alcanzar un conocimiento completo del lenguaje. 2
  • 12. Entre los tipos de diagramas UML que existen vamos a analizar aquellos que van a ser parte importante de la metodología a utilizar (ICONIX). Entre ellos tenemos: Diagrama de secuencia Los diagramas de secuencia son aquellos que modelan el flujo de la lógica dentro del sistema de forma visual, permitiendo al programador la documentación y validación. Pueden ser usados tanto en etapas de análisis así como en las de diseño. La secuencia puede expresar un caso de uso en completo o quizá un caso de uso concreto del mismo, en el cual se pueden contemplar alternativas. Los diagramas de secuencia también nos ayudan a identificar cual de las clases de sistema van a ser las mas complejas de implementar. Los diagramas de secuencia poseen 2 características que los distinguen de los demás. La línea de vida.- Que es aquella que representa la existencia de un objeto a lo largo de un periodo del tiempo. Mediante el uso de la línea de vida se puede indicar la creación o destrucción de objetos o roles durante una iteración. Foco de control o barra de activación.- Es aquella que representa el periodo de tiempo durante el cual un objeto realiza la ejecución de una acción Su representación en la línea de tiempo es un rectángulo que tiene las siguientes características: la parte superior se alinea con el principio de la acción, en cambio la parte inferior se alinea con la terminación, la cual puede tener un mensaje de retorno Los focos de control no son necesarios colocarlos en el diagrama de secuencia, es decir son opcionales. Gracias al foco de control se puede observar el anidamiento de las llamadas Una vez que hemos analizado algunas de las características que tienen los diagramas ahora analizaremos los elementos que tienen los mismos, entre los que están: 3
  • 13. Objeto: Dentro de los diagramas de secuencia se le conoce como objeto a una instancia de una clase que se puede empezar a identificar como participante en la secuencia de operaciones que representa un caso de uso.  Actor: En cambio los actores son aquellos que pueden establecer comunicación con los objetos, por esta razón formaran parte de este diagrama.  Vida de objeto: Se indica la existencia de un objeto mediante el uso de una línea discontinua, el fin del mismo se lo indica con un aspa.  Activación: Este elemento es aquel que nos indica cuando un objeto se encuentra realizando una acción en concreto.  Mensaje: Al mensaje se lo pueden definir como la comunicación entre los objetos y sus actividades. Diagrama de clases El diagrama de clases es el mas conocido de todos los diagramas UML es aquel que nos permite la identificación de la estructura de clases del sistema en donde se incluye las propiedades y métodos de cada una de las clases Este tipo de diagrama tiene solo 2 elementos que son las clases y relaciones. Las clases en este diagrama se representan con un rectángulo divido en 3 parte en la parte superior va el nombre de la clase, en el rectángulo siguiente van los atributos y en el ultimo en cambio irán los métodos de esta clase. Para el análisis de las relaciones que pueden existir entre las clases se las dividirá de la siguiente manera: Asociación, Composición, Dependencia, Generalización. Asociación.- Esta es aquella que representa la relación genérica que existe entre 2 clases y la notación es muy simple ya que es una línea que las une en donde se puede indicar la multiplicidad que existe entre las 2 clases. Composición, agregación.- Se habla de composición cuando una clase esta compuesta de otras, donde las ultimas no pueden existir sin la primera. La agregación en cambio se da cuando una clase incluye a la otra, pero la clase incluida tiene entidad en si misma. 4
  • 14. Dependencia.- Se habla de dependencia cuando una clase depende de la otra en el sentido que la una clase la usa a la otra como atributo o parámetro de algún método. Generalización.- Se habla de generalización cuando es equivalente a la herencia o extensión tal como se ve en otros diagramas. Diagramas de casos de uso Los diagramas de casos de uso son aquellos que muestran no solo un caso de uso sino todos los casos de uso de un sistema dado. Un caso de uso individual que se representa con un ovalo con su nombre, representa a su vez un tipo de tarea que tiene que soportar el sistema en el desarrollo. El diagrama de casos de uso muestra solo una parte de la información que se necesita, los diagramas de casos de uso se pueden ver como un resumen conciso de la información que contiene en todas las descripciones de los casos de uso. A mas de la representación del caso de uso mediante un ovalo tenemos la representación de un actor que es otra de las piezas claves en este diagrama, este en cambio se representa como un muñeco, en estos diagramas también podemos encontrar una línea que es la conexión entre el actor y los casos de uso. Fig. 1 En la figura anterior podemos observar un ejemplo de un diagrama de uso para una aplicación. 5
  • 15. FICHEROS EN JAVA Un archivo o fichero se puede definir como una colección de datos homogéneos que se almacenan en un soporte físico del computador que puede ser permanente o volátil. Algunas características generales que se deben tener en cuenta por el programador antes de utilizar este tipo de estructuras, estas son las siguientes:  Todos los elementos de un fichero poseen una determinada posición dentro de la secuencia de datos.  El tamaño de un fichero a diferencia de otro tipo de estructuras no es fijo, pudiendo cambiar de forma dinámica el numero de elementos que almacena  Cada uno de los ficheros podrá ser referenciado dentro del programa mediante un identificador, que se utilizara como una referencia lógica al fichero físico, o real, que se encuentra almacenado dentro de la memoria.  En cada una de las operaciones de lectura/escritura sobre un fichero solo podrá leerse/escribirse un único registro.  Las operación que se realicen para el acceso a la información de un fichero pueden realizarse de 2 formas diferentes:  Acceso secuencial  Acceso directo o aleatorio. Como en todas las operaciones dentro un lenguaje de programación tenemos algunas clases básicas para la manipulación de los ficheros las cuales se resumirán el siguiente cuadro. 6
  • 16. En el cuadro anterior se pueden observar algunas de las clases de excepciones que se pueden dar durante el manejo de los ficheros en java. Los programas en java realizan la apertura de un archivo creando un objeto el cual se asociara a un flujo de bytes o caracteres. El lenguaje de programación java crea tres objetos flujo los cuales se asocian con dispositivos cuando un programa java empieza su ejecución; estos son: System.in, System.out, System.err. System.in.- Es aquel que permite a un programa recibir bytes desde teclado. System.out.- Es aquel que permite a un programa mostrar datos por pantalla. System.err.- Es aquel que permite a un programa mostrar un mensaje de error en la pantalla. Claro que no siempre se aplica las definiciones antes descritas ya que cada uno de estos flujos tiene la capacidad de redirigirse. Es así como System.in tiene la capacidad de leer bytes desde un origen distinto, los otros 2 en cambio pueden permitir que la salida se envié a una ubicación distinta, como por ejemplo a un archivo en disco. La clase System proporciona algunos métodos para la redirección de flujos estándar de entrada, salida y error como son: setIn, setOut y setErr. El manejo de los archivos en java se da gracias a las clases del paquete java.io el cual posee definiciones para las clases de flujos como las siguientes:  FileOutputStream  FileReader  FileWriter 7
  • 17. Todos los archivos se abren gracias a que se crean objetos de estas clases de flujos, que heredan de las siguientes clases:  InputStream  OutputStream  Reader  Writer Para la realización de entrada y salida de datos pueden usarse objetos de las clases siguientes:  ObjectInputStream  ObjectOutputStream  FileInputStream  FileOutputStream Para las operaciones de entrada y salida que se basan en caracteres se las puede llevar a cabo con las siguientes clases:  Scanner  Formatter La primera se usa en forma extensa la cual recibe datos desde teclado, claro que también puede ser usada para leer datos desde archivos; la segunda en cambio permite la visualización de datos con formato por pantalla o enviarlos a un archivo. JAVA Java es un lenguaje de programación y la primera plataforma informática que fue desarrollada por Sun Microsystem en 1995. Es la tecnología que permite el uso de programas punteros como herramientas, juegos y aplicaciones. Java Virtual Machine es únicamente un aspecto del software de Java, que es utilizado específicamente para interacción en la web. 8
  • 18. ARREGLOS EN JAVA Se conoce como un arreglo a una colección de elementos que son del mismo tipo agrupados bajo un nombre de variable, a los cuales se los puede diferenciar entre si por el numero de índice, cada celda de este tipo de variables es numerada del 0 hasta n-1; donde n es la longitud del arreglo. A los vectores que poseen una sola dimensión se les conoce como arreglos unidimensionales o vectores; en cambio a los arreglos que pueden tener 2 dimensiones se les conoce como arreglos bidimensionales o matrices. A un arreglo se lo puede declarar de varias maneras entre las que están: Int calif [ ] = new int [50]; String diaSem [ ] = {“lun”,”mar”,”mie”,”jue”,”vie”,”sab”}; Los 2 ejemplos anteriores son formas correctas de declarar un arreglo. A continuación se va a analizar como se puede obtener el tamaño de un arreglo. La dimensión de un arreglo se lo puede obtener mediante la siguiente sentencia: Int longitud = arreglo.length; Lo que se ha hecho es declarar una variable longitud en donde se almacenara la longitud de dicho arreglo después colocamos nombre del arreglo seguida de un punto y la palabra reservada length que nos retornara el tamaño del arreglo. A un arreglo se lo puede recorrer mediante un ciclo repetitivo con el fin de tener acceso a cada una de las posiciones del mismo. JAVA.IO Java.io es un paquete de clases el cual provee la entrada y salida del sistema a través de flujos de datos Serialización y sistemas de archivos. Entre las clases que posee este paquete para el manejo de información se analizaran las que van a ser usadas en el presente proyecto. FileWriter. La clase FileWriter ayuda a que sea posible escribir un archivo como una secuencia de caracteres. La clase FileWriter se basa en caracteres, la clase FileWriter posee constructores que permiten especificar el archivo para la escritura de diversas formas. 9
  • 19. Si en el supuesto caso de que el archivo que se especifica ya existe entonces este se sobrescribe. IOException. La clase IOException del paquete java.io se nuestra cuando un error de entrada o salida de datos a ocurrido. La clase IOException es una clase general para las excepciones de entrada o salida de datos BufferedReader. La clase BufferedReader es la encargada de leer el texto de un flujo de caracteres de entrada, el tamaño del buffer puede ser especificado o puede usarse el tamaño por defecto el cual es lo suficientemente grande como para la mayor parte de los propósitos. MÉTODOS EN JAVA En java un método es un bloque de código que se define dentro de una clase que proporciona un mecanismo para la realización de una acción. Un método tiene acceso a todos los atributos de su clase. En java un método puede llamar a otro método; pero no se puede definir un método dentro de otro; un programa realizado en java se ejecuta partiendo de su método main. Definición de métodos Un método se lo puede definir de la siguiente manera: <tipo de retorno> <nombre método> (<parámetros>…) { Instrucciones… } En donde <tipo de retorno> es en donde se encontrara el tipo de valor que devolverá el método, en <nombre método> se escribe el nombre del método; <parámetros> esta parte de la declaración de los método encontraremos todos los parámetros que usara el método los cuales se componen de un tipo y un argumento y que son separados por comas. 10
  • 20. El ultimo de los componentes de un método son las <instrucciones> las instrucciones son aquellas que implementan la tarea que debe realizar el método. Si el método usado va a devolver un valor debe finalizar con la palabra reservada return. El valor que vaya seguido de la palabra return debe ser el mismo del tipo de retorno que se puso al momento de crear el método. Dentro de cada uno del método se pueden declarar variables locales según sea el caso. La finalización de la ejecución de un método es hasta llegar a la palabra reservada return o hasta llegar al final del método. Métodos que no retornan valor Aquellos métodos que no regresan valor son aquellos que ejecutan operaciones especificas y no poseen la palabra reservada return dentro de las funcionalidad del método, estos método poseen en su parte de tipo de retorno tienen la palabra void. Metodos que retornan valor Estos metodos además de ejecutar operaciones especificas poseen la palabra reservada return dentro de las funcionalidades del metodo, además en la parte de tipo de retorno debe ir el tipo de dato que el metodo devolverá. Variables Se conoce como variable a un valor modificable, son nombres que representan un valor de un determinado tipo y el valor asociado al nombre se puede variar. Dentro de las aplicaciones en java se pueden considerar 2 tipos de variables: globales y locales. Variables globales Un algoritmo que usa métodos, se pueden declarar variables tanto dentro de la clase antes de los métodos o de manera local en cada uno de los métodos. A las variables que se definen antes de la declaración de los métodos se les conoce como variables globales o variables de clase, estas pueden ser usadas por cualquier método de la clase. 11
  • 21. Variables locales Las variables locales a diferencia de las variables locales se definen dentro de cada uno de los métodos que puede tener una clase, estas variables pueden ser usadas por el método en donde fueron definidas. Parámetros. Se conoce como procedimiento a una variable que puede pasar su valor a un procedimiento a partir del principal o de otro procedimiento. Dado que en ocasiones es necesario mandar a un procedimiento ciertos valores para que estos sean usados en algún proceso es aquí donde se usan los parámetros. Dentro de la programación en java se puede considerar 2 tipos de parámetros: parámetros por referencia, parámetros por valor. Parámetros por referencia A los parámetros por referencia también se les conoce como parámetros variables, son variables locales de un método que se definen como parámetros dentro del encabezado del mismo, esta sirve de conexión con otra variable a través de su contenido, al momento de llamarse o invocarse el método es el que establece la conexión, esto significa que si se le hace algún cambio a la variable local del método llamado lo mismo le sucederá a la variable del método con la cual fue conectada; esto se debe a que ambas ocupan la misma posición de memoria. Parámetros por valor Es una variable local de un método que se define como parámetro en el encabezado del mismo y sirve de conexión entre otra variable de otro método mediante el envió de su valor, al momento que se hace la llamada del método se rompe la relación de estas variables; después de esto lo que le suceda a la variable que paso como parámetro no afectara a la otra variable. 12
  • 22. ANALISIS Y DISENO DE LA APLICACIÓN EN FUNCIÓN DE UNA METODOLOGIA DE LA PROGRAMACIÓN ICONIX Antes de comenzar el análisis de la aplicación usando el método escogido se hará un análisis del método escogido de manera que se puede tener una idea clara de como se va a trabajar en la aplicación con el uso de este método. El método ICONIX se lo define como un proceso de desarrollo practico, este método se encuentra entre la complejidad que presenta y la simplicidad que posee el XP, esto es sin descartar el análisis y el diseño que XP no tiene contemplado. Al ser ICONIX un proceso simplificado en comparación con otros procesos tradicionales, los cuales unifican un conjunto de métodos de orientación a objetos esto se hace con el objetivo de abarcar todo el ciclo vida del proyecto. Las tareas que realiza el método ICONIX son las siguientes:  Análisis de requisitos  Análisis y diseño preliminar  Diseño  Implementación Como se pueden ver las tareas del método ICONIX con 4 en las cuales se pretende abarcar todo lo necesario para que la aplicación desarrollada se encuentre acorde con las necesidades del jugador. Sin mas en adelante con concentraremos en aplicar estas tareas para el desarrollo de nuestra aplicación 1. Análisis de requisitos 1.1. Requerimientos de los usuarios En el análisis de requisitos de nuestra aplicación se tomara en cuenta los requisitos que los usuarios considerarían para que un juego tenga la debida aceptación entre sus consumidores. Entre dichos requerimientos tendremos los siguientes: 1. El juego tiene que ser de fácil acceso 2. Debe permitir al usuario elegir el nombre que usura al largo del juego 13
  • 23. 3. Debe permitir al usuario observar cual es su puntuación durante el juego 4. Debe permitir al usuario elegir la categoría sobre en la cual desea participar 5. Debe permitir al usuario la cantidad de puntos que juega en cada ronda de preguntas. 6. Debe permitir al usuario el poder verificar si la respuesta ingresada es la correcta. 7. Debe permitirle al usuario poder salir del juego cuando este así lo quisiera. 8. Debe presentarle al usuario los resultados del juego antes de salir completamente del juego. 9. Debe permitir al usuario jugar contra la computadora. 1.2. Prototipación Rápida En esta fase del análisis de requisitos se presentaran de manera rápida un prototipo de diseño de lo que será nuestra aplicación. Cabe mencionar que las interfaces que se presentan a continuación están sostenidas a cambios que se darán durante en desarrollo de la aplicación. 1.2.1. Interfaz de usuario. Bienvenida a la aplicación Fig. 1. Bienvenida al juego 14
  • 24. 1.2.2. Interfaz del usuario. Nombre de los jugadores Fig. 2. Ingreso de nombres de jugadores 1.2.3. Interfaz de usuario. Interfaz Principal Fig. 3. Interfaz del juego Esta es la interfaz que se presentara antes de que los jugadores empiecen a jugar. 15
  • 25. 1.2.4. Interfaz de usuario. Interfaz Final. Fig. 4. Información de resultados del juego 2. Análisis y diseño preliminar En esta segunda etapa de la metodología ICONIX consiste en los procesos que desarrollara nuestro juego, se procederá a la realización de los diagramas necesarios para que reflejen las interfaces de usuario que se presentaron en el literal anterior. 2.1. Diseño de diagramas de casos de uso Antes de analizar los diagramas de casos de uso debemos tener en consideración, que en el caso de jugar contra la computadora esta será el jugador 1 y los demás jugadores le seguirán según el orden ingresado. 2.1.1. Caso de uso. Ingreso de 2 o 3 jugadores. Fig. 5. Caso de uso. Ingreso de 2 o 3 jugadores 16
  • 26. Descripción de caso de uso. Ingreso de 2 o 3 Jugadores Los jugadores realizan el registro en el juego colocando el nombre con el que se identificaran a lo largo del juego. Luego de que hayan ingresado sus nombres en los campos respectivos podrán ingresar. 2.1.2. Caso de uso. Seleccionar Apuesta Fig. 6 Caso de uso. Seleccionar Apuesta Descripción de caso de uso. Seleccionar Apuesta Una vez que los jugadores ingresaron al juego mediante el ingreso de sus nombres, podrán ver la interfaz de usuario en donde podrán seleccionar la apuesta por la pregunta que la aplicación les hará dependiendo de la categoría que hayan seleccionado. 2.1.3. Caso de uso. Seleccionar Categoría. Fig. 7. Caso de uso. Seleccionar Categoría. 17
  • 27. En esta caso de uso como se podrá observar los jugadores una vez que seleccionaron una apuesta para la ronda de preguntas correspondientes entonces tendrán que seleccionar la categoría de la cual la aplicación seleccionara una pregunta la cual tendrá que contestar el usuario según las opciones que tenga la misma. 2.1.4. Caso de uso. Contestar Pregunta. Fig. 8. Caso de uso. Contestar Pregunta Descripción de caso de uso. Contestar Pregunta. Como se podrá ver en la Fig. 8 para la elaboración del “Caso de uso. Contestar Pregunta”, se ha unificado este caso de uso con el anterior; Una vez que se haya seleccionado la categoría de la pregunta la aplicación le mostrara al usuario una pregunta con 3 opciones de respuesta la cual deberá contestar. La aplicación le permitirá al usuario verificar su respuesta y ver la puntación que le corresponde por la misma. 2.2. Diagramas de Robustez Los diagramas de robustez se hacen con el fin de ilustrar de manera grafica las interacciones entre los objetos participantes de los casos de uso. 18
  • 28. Para la elaboración de los diagramas de robustez es muy necesario completar el paso anterior, es decir la identificación y graficación de los casos de uso ya que en base a estos se hará los diagramas de robustez. 2.2.1. Diagrama de robustez. Ingreso Jugadores En el diagrama de robustez del ingreso de jugadores se ha tomado en cuenta lo siguiente.  Se dirige a la interfaz Opciones Jugadores e ingresa los nombres de los jugadores.  Se obtienen los nombres.  Para ello se revisa que todos los campos que están destinados para el nombre se encuentren llenos.  Si los campos de nombres no están llenos el programa lanzara una advertencia y nos llevara de nuevo a la interfaz para ingresar los datos faltantes.  Si los campos de nombres están llenados entonces el programa nos llevara a la siguiente parte del juego en donde nos mostrara el nombre del jugador. Fig. 9 Diagrama de robustez. Ingreso Jugadores 19
  • 29. 2.2.2. Diagrama de robustez. Seleccionar Apuesta En el diagrama de robustez de seleccionar apuesta se ha tomado en cuenta lo siguiente.  Se dirige a la interfaz Trivia en la cual se ingresa el valor de la apuesta correspondiente.  Se obtiene el valor de la apuesta.  Se comprueba que al menos uno de los valores de apuesta este seleccionado.  Si ninguno de los campos de apuesta esta seleccionado se lanzara una advertencia pidiendo que se seleccione la apuesta. Fig.10 Diagrama de robustez. Seleccionar Apuesta 2.2.3. Diagrama de robustez. Seleccionar Categoría En el diagrama de robustez de seleccionar categoría se ha tomado en cuenta lo siguiente:  Se dirige a la interfaz trivia en la cual el usuario deberá pulsar en el botón correspondiente a la categoría que desee jugar.  Se obtiene el nombre de la categoría.  Si ningunos de los botones de la categoría es pulsado el jugador no podrá avanzar en el juego. 20
  • 30. Fig. 11. Diagrama de robustez. Seleccionar Categoría 2.2.4. Diagrama de robustez. Contestar Pregunta En el diagrama de robustez de contestar pregunta se ha tomado en cuenta lo siguiente:  Se dirige a la interfaz trivia, en donde el jugador seleccionar la respuesta que considere correcta.  Se obtiene la respuesta del usuario.  Se consulta con el fichero correspondiente a las respuestas, si la respuesta es correcta y el jugador pulsa el botón verificar entonces la apuesta será positiva en consecuencia el usuario tendrá una puntuación mas alta; si la respuesta seleccionada es falsa entonces la apuesta será negativa en consecuencia la puntuación del usuario bajara. 21
  • 31. Fig. 11. Diagrama de robustez. Contestar Preguntas 3. Diseño Para continuar con los análisis necesarios para que nuestra aplicación tenga el éxito deseado se continuara con los siguientes pasos que nos llevaran a un correcto análisis del diseño de nuestra aplicación antes de poder pasar al último paso que seria la implementación 3.1. Diagrama de secuencia Uno de los primeros pasos a analizar dentro del diseño de una aplicación es el diagrama de secuencia. En nuestra aplicación se encontraran los siguientes diagramas de secuencias. Los diagramas a continuación serán representados solamente en forma grafica. 3.1.1. Diagrama de secuencia. Ingreso Jugadores Fig. 12. Diagrama de secuencia. Ingreso de jugadores 22
  • 32. 3.1.2. Diagrama de secuencia. Seleccionar Apuesta Fig. 13. Diagrama de secuencia. Seleccionar Apuesta 3.1.3. Diagrama de secuencia. Seleccionar Categoría Fig. 14. Diagrama de secuencia. Seleccionar Categoría 3.1.4. Diagrama de secuencia. Contestar Pregunta Fig. 15. Diagrama de secuencia. Contestar Pregunta. 3.2. Refinamiento de diagrama de clases. Una vez que hemos realizado una serie de diagramas los cuales nos han ayudado a comprender el funcionamiento de nuestra aplicación entonces procederemos a modificar el diagrama de clases con los 23
  • 33. cambios que se puedan tomar en cuenta según los diagramas antes realizados Fig. 16. Diagrama de clases 3.3. Verificación del diseño Una vez que se ha realizado todos los análisis que contempla la metodología utilizada para el presente proyecto se procederá a verificar si los requisitos que se identificaron en pasos anteriores se han cumplido en su totalidad. 1. El juego tiene que ser de fácil acceso El juego que se presenta es de fácil acceso para el usuario debido a que para el acceso al mismo solamente tiene al iniciar la aplicación solamente tiene que pulsar un botón que posteriormente lo llevara a la venta en donde colocara el nombre de los jugadores según el numero que se haya escogido. 2. Debe permitir al usuario elegir el nombre que usura al largo del juego. Como ya se explico brevemente en el paso anterior el usuario podrá colocar que usara mientras dure el juego, rellenando los campos correspondientes. 24
  • 34. 3. Debe permitir al usuario observar cual es su puntuación durante el juego. Una vez que se han cumplido los 2 pasos anteriores el usuario podrá observar la interfaz principal del juego en donde podrá observar en la parte superior de la ventana su nombre de jugador y su puntuación que variara a lo largo del juego. 4. Debe permitir al usuario elegir la categoría sobre en la cual desea participar. En la interfaz principal del juego tenemos varios botones que representan las categorías del juego. 5. Debe permitir al usuario elegir la cantidad de puntos que juega en cada ronda de preguntas. Como se podrá observar debajo del nombre y la puntuación el usuario podrá observar varios campos correspondientes a la apuesta que hara en cada ronda de preguntas. Cada vez que el usuario tenga que contestar una pregunta puede seleccionar también el valor de puntos que desea apostar en la misma. 6. Debe permitir al usuario el poder verificar si la respuesta ingresada es la correcta. Debajo de las opciones de respuesta el usuario podrá encontrar un botón que al pulsarlo comprobara y actualizara el mensaje de respuesta lo cual le permitirá saber si su respuesta es correcta o no. 7. Debe permitirle al usuario poder salir del juego cuando este así lo quisiera. Debajo del mensaje que muestra si la respuesta ingresada por el usuario es correcta o no; se encontrara un botón para poder salir de la aplicación 25
  • 35. 8. Debe presentarle al usuario los resultados del juego antes de salir completamente del juego. Antes de salir completamente del juego al usuario se le presenta una ventana con las estadísticas del juego 9. Debe permitir al usuario jugar contra la computadora La aplicación también posee la opción de jugar contra la computadora ya sea un jugador contra la computadora o 2 jugadores contra la computadora 4. Implementación Una vez que se han cumplido con todos los pasos anteriores de la metodología ICONIX, el último de los pasos que debemos completar es la implementación de nuestra aplicación. Para poder realizar una correcta implementación de nuestra aplicación deberemos cumplir con los siguientes procesos los cuales nos llevaran a una mejor implementación de nuestra aplicación. 4.1. Escribir/Generar Código En este apartado se encontrara una breve descripción del código que va a contener cada uno de los módulos de nuestra aplicación; un resumen del código se podrá encontrar en uno de los siguientes apartados. Para facilitar aun más la comprensión del código de la aplicación lo describiremos según las interfaces que la componen. Además tendremos que aclarar que se tomara en cuenta tanto en este apartado como en los demás en los que tengamos que referirnos al código de la aplicación, solo se tomara en cuenta las partes mas importantes del mismo descartando el código que el asistente de la herramienta genera automáticamente 26
  • 36. 4.1.1. Interfaz de Bienvenida Esta es una de las más sencillas ya que solo contendrá el código del nombre de la ventana, el código necesario para que la ventana se muestre en el centro de la pantalla, además de un botón el cual contendrá el código necesario para redirigirnos a la ventana siguiente. Y contendrá el código de un botón que nos mostrara un mensaje para el caso de que el usuario necesite ayuda sobre el juego. 4.1.2. Interfaz Jugadores En esta interfaz al igual que en la anterior tendremos el código correspondiente a las propiedades de la ventana que se mostraran al usuario. También contendrá el código de cada uno de las acciones de los menús los cuales permitirán mostrar los cuadros para el ingreso de los datos de los jugadores según sea el caso. 4.1.3. Interfaz Trivia Esta interfaz es aquella que contendrá mas código debido a que todos los procesos referentes a la administración de los ficheros que contienen las preguntas y las respuestas así como la verificación de las respuestas seleccionadas por el usuario serán administrados por esta interfaz mediante el uso de diferentes elementos que contendrá la interfaz. A mas de ello para evitar cambios bruscos durante la ejecución de la aplicación se ha programado para la aplicación bloquee algunos de los elementos de forma temporal con los códigos correspondientes. 4.1.4. Resultados En la clase resultados tendremos programada una interfaz de usuario la cual recuperara los datos de nombres de jugadores del 27
  • 37. fichero correspondiente así como los datos del juego de la interfaz anterior. A mas de ello tendremos el código que nos mostrara cual fue el usuario que gana al finalizar el juego 28
  • 38. ARQUITECURA DE LA APLICACIÓN GRAFICA Y DESCRIPCION DE LOS COMPONENTES En este apartado veremos lo referente a la arquitectura de la aplicación y una breve descripción de los componentes que la constituyen. La arquitectura que se usara para la represente aplicación será la de 3 capas que comprende el dominio, la lógica y la interfaz grafica. Las capas de esta comprenden las siguientes capas:  Cliente de la aplicación  Servidor de aplicaciones  Servidor de datos. Una vez que hemos enumeramos cuales son las capas que comprenden la arquitectura de 3 capas entonces ahora procederemos a describirlas una a una dependiendo de los componentes de nuestra aplicación. Para empezar a analizar la arquitectura de nuestra aplicación comenzaremos con el analizar de lo que será el servidor de datos. En nuestro caso el servidor de datos serán los ficheros que contiene la información acerca de las preguntas y respuestas que se usaran en nuestra aplicación, es decir que el servidor de base de datos lo compondrán los siguientes archivos:  OpcionesPreguntasC1  OpcionesPreguntasC2  OpcionesPreguntasC3  OpcionesPreguntasC4  OpcionesPreguntasC5  preguntascategoria1  preguntascategoria2  preguntascategoria3  preguntascategoria4  preguntascategoria5  jugadores 29
  • 39. Estos son los 10 archivos que conformaran nuestro servidor de datos estos a su vez se conectaran con la siguiente capa que será la de servidor de aplicaciones en el que tendremos la lógica de nuestra aplicación la cual servirá a manera de un puente entre el servidor de base de datos y la interfaz de usuario. Es decir en esta parte se encontrara toda la codificación que contendrá la aplicación que lograra que nuestra aplicación se conecte de forma correcta entre el servidor de datos y la interfaz. A continuación se mostrara un diagrama de lo que será la comunicación de los módulos de nuestra aplicación: Fig. 1 En la Fig. 1 se muestra como interactuaran tanto la base de datos que en nuestro caso serán ficheros, el servidor de datos que en nuestro caso será el código los diferentes módulos que componen nuestra aplicación como son: el modulo de bienvenida, el modulo de opciones de usuario, el trivia y el modulo de presentación de resultados. En primer lugar los módulos que componen el servidor de aplicaciones según sea el caso se conectaran con el servidor de datos para la entrada o salida de datos según sea el caso. 30
  • 40. En el caso del primer modulo que corresponde a la bienvenida este no contendrá ninguna interacción con la base de datos de nuestra aplicación; en segundo modulo de nuestra aplicación que se encargar del manejo de la información de los jugadores antes del juego será uno de los primeros en comunicarse con el servidor de datos debido a que una vez que este modulo recibe la información va al fichero correspondiente donde posteriormente se almacenara. Esta operación se ilustra en la Fig. 2. Fig. 2 Otra de las comunicaciones que se hacen con el servidor de datos es la que hace el modulo principal que comprende todo el código que maneja la aplicación en donde se conecta no solo al servidor de datos para la recuperación de los datos de los jugadores sino también los datos de las preguntas y opciones de respuestas que tiene nuestra aplicación. Esto se ilustra en forma grafica en la Fig. 3. 31
  • 41. Fig. 3 Y la ultima interacción que tiene el servidor de datos con el servidor de aplicación será la que hace cuando el modulo para la presentación de resultados inicia sus operaciones. Este modulo no solo interactúa con el servidor de datos sino también con su modulo predecesor de manera que se puedan presentar los datos del jugador que no están en el servidor de datos esta ultima interacción se ilustrara en el Fig. 4. Fig. 4 Esta es principalmente la manera como se comunican cada uno de los componentes de nuestra aplicación. Una vez que se ha visto la manera como se comunican cada uno de los modulos de la aplicación ahora ilustraremos en la Fig. 5 como quedaría todo el diagrama de la arquitectura de nuestra aplicación desde el servidor de datos hasta lo que será la interfaz de usuario. 32
  • 43. PROTOTIPOS En este apartado podrán encontrar capturas de todos los módulos que conforman la aplicación. Una vez que ya se han pulido dentro de las fases de la metodología escogida. Fig. 1. Interfaz Bienvenida Fig. 2. Interfaz Jugadores Fig 3. Interfaz Trivia. Dos Jugadores antes del juego 34
  • 44. Fig. 4 Interfaz Trivia. Dos jugadores durante el juego Fig. 5. Interfaz de Resultados 35
  • 45. DESCRIPCION DE LA APLICACIÓN En este apartado trataremos de dar una breve descripción de la aplicación una vez que ha pasado por todo el proceso que se requiere antes de ser implementada. La presente aplicación fue desarrollada tomando como base el código de la aplicación trivia que se puede encontrar en la pagina mygnet.net; la aplicación que se tomo como base poseía algunas restricciones a mas de las ya especificadas para el presente proyecto además la aplicación manejaba las preguntas directamente en el código haciendo difícil para un usuario común poderlas modificar; por el contrario trivia de programación Java no maneja esta información en el código sino que lo hace a través de ficheros. La Trivia de Programación Java como se la ha llamado a la aplicación consta de 4 ventanas las cuales se presentan al usuario en el orden en el cual fueron programadas. La primera ventana tendrá una imagen de entrada, un botón para poder continuar navegando en la aplicación; además de un botón que mostrara donde encontrar ayuda para la aplicación, en la siguiente ventana se encontrara un barra de menú donde se podrá escoger dentro de el las opciones de jugadores para esta aplicación La siguiente ventana de la aplicación contendrá el juego en si, esta ventana se encuentra divida en varias secciones entre las que se encuentra las secciones siguientes: Datos del jugador, Categorías, Apuesta, opciones de respuesta, pregunta, la de verificación de respuesta y además de ello algunos botones que permitirán verificar la respuesta, avanzar al siguiente jugador y salir de esta ventana. La ultima ventana que se presentara al usuario será la ventana en donde tendrá las estadísticas del juego o como mejor se le conocen los resultados del juego. 36
  • 46. CODIFICACION En esta sección se encontrara el código de cada uno de los módulos de nuestra aplicación, debido a que para el desarrollo de la aplicación se uso el asistente de Netbeans para la implementación de las interfaces de usuario, se tomara en cuenta solo el código principal de cada uno de los módulos para que el código no se haga muy extenso; ya que el asistente genera código automáticamente según se le vayan agregando elementos a la ventana. Dentro de la codificación también encontraremos algunas partes de código que se repiten, en este caso solo se tomara una copia y se indicara en que partes se encontrara ese código. Una vez indicado el código que contendrá este apartado entonces procederemos a detallar el código según las interfaces empleadas para desarrollar esta aplicación. 1. Interfaz de Bienvenida a. Primer Método de la interfaz Dentro de esta primera interfaz tendremos las 2 siguientes sentencias: this.setTitle("Bienvenida"); this.setLocationRelativeTo(null); Con la primera le podremos colocar un nombre a la ventana, con la segunda en cambio colocaremos la ventana al centro de la pantalla pasándole null como parámetro. b. Método de la acción del botón Siguiente Dentro de la acción del botón siguiente tendremos las sentencias siguientes: Con la primera sentencia creamos un objeto OpcionesJugadores, en la segunda sentencia hacemos visible el objeto que declaramos 37
  • 47. anteriormente y con la última hacemos invisible la ventana de Bienvenida. c. Método de la acción del botón Ayuda. Dentro de la acción de este botón tenemos programado un JOptionPane que nos mostrara un aviso de donde podemos obtener ayuda sobre el juego. 2. Interfaz Jugadores a. Primer método de la Interfaz Dentro de este método también se tendrá las sentencias para colocar el titulo y la localización de la ventana. También se encontrara en este método la inicialización de las cajas de texto para el ingreso de información; por el momento a estas se las inicializara con la sentencia de setVisible dándole como parámetro false. Una vez inicializado las cajas de texto; se podrá programar las acciones de cada uno de los menús para que según la opción de menú que se escoja se muestren las cajas de texto para el ingreso de la información de los jugadores. b. Método que controla la acción del botón Jugar En este método es en donde se creara el fichero de jugadores que contendrá por el momento los nombres de los jugadores. Y después de ellos nos llevara a la siguiente ventana que es la ventana principal de la aplicación. c. Método que controla la acción del botón salir En este método tendremos solo la sentencia que nos permitirá salir de la aplicación cuando el usuario pulse el botón salir. 38
  • 48. 3. Interfaz trivia a. Importamos las clases necesarias para la interfaz Para el correcto funcionamiento de esta interfaz tendremos que importar algunas clases de los paquetes que posee java entre ellas estarán las siguientes: Del paquete java.io  BufferedReader Esta clase lee el texto de un flujo de entrada de caracteres  FileNotFoundException Esta clase es de un error muy común que sucede cuando se trabaja con ficheros y sucede cuando se ha fallado en un intento de abrir un archivo.  FileReader Esta clase nos ayuda a leer un archivo de caracteres  IOException Esta clase también es parte de las excepciones que pueden ocurrir al trabajar con ficheros y ocurre cuando ha ocurrido alguna excepción de entrada o salida. Del paquete javax.swing  JOptionPane La clase JOptionPane hace mas fácil el que aparezcan cuadros de dialogo estándar que pueden ser usados para el ingreso de datos o para la salida de mensajes de alerta. b. Declaración de variables globales Declaramos las variables globales que vamos a usar es decir aquellas que se usaran en cualquiera de los métodos de la clase según sea necesario. 39
  • 49. Entre las variables globales que se usaran se tendrá que tener variables tipo String para categoría, respuestas, preguntas, puntajes; entre otras se tendrá que declarar el suficiente número de variables globales para el correcto funcionamiento de esta aplicación. c. Método Trivia Este es el primer método que nos aparece después de importar las clases necesarias y declarar las variables globales que se han de necesitar. En este método primeramente se encontrara una llamada al método initComponents() después del cual se encontraran las sentencias para colocar un titulo en la ventana, mostrar la ventana en el centro de la pantalla y la que permite deshabilitar el botón de maximizar de la ventana. También se tendrá la llamada a los métodos siguientes: valoresIniciales, mostrarDatosJugadores, controlJugadores, después de lo cual se podrá inicializar el valor del limite de preguntas y los valores de los componentes del panel de verificación. También se encontrara la sentencia correspondiente al tamaño de la ventana, el limite de preguntas del juego y la inicialización de otros elementos que no se da en el método valoresIniciales. d. Método btnSeleccionarMouseClicked En este método en primer lugar se controlara la selección de las categorías y las apuestas, para luego de ello según las opciones seleccionadas inicializar el valor de categoría y resp con los valores correspondientes al nombre y extensión de los ficheros que contienen la información de las preguntas de la trivia al igual que 40
  • 50. incrementar el contador correspondiente al numero de preguntas de la categoría seleccionada. En este método también se deshabilitara el botón seleccionar y se habilitara el botón de verificar; se hará también un llamado al método de preguntas trivia, pasando como parámetros los valores de categoría y resp. e. Método btnVerificarMouseClicked En este método lo que se encontrara es un llamado al método verificar, además de la asignación de un nuevo valor al panel de respuesta. f. Método btnSiguienteMouseClicked En este método en primer lugar tendremos una sentencia de control que controlara si se selecciono previamente la opción de jugar contra la computadora entonces si el jugador que esta activo es la computadora nos llevara al método controlJugadores; en caso contrario nos llevara al método valoresIniciales. Luego de lo cual se tendrá otra sentencia que permitirá controlar el numero de preguntas que se han jugador en el caso que se haya alcanzado el limite mostrara un mensaje de alerta y cerrara la ventana principal de la trivia y mostrara la ventana de resultados; en caso que no se haya alcanzado el numero de preguntas limite entonces habilitara las opciones de botón para el siguiente jugador. Además de lo antes indicado este método también contiene un llamado a un método con el nombre de PintarJugadorActual; que coloca en negrita el jugador actual, los valores tanto de la etiqueta como del panel de verificación. Y inicializara en vacio la etiqueta de pregunta y las etiquetas de cada uno de los botones de opción de las preguntas. 41
  • 51. g. Método btnSalirMouseClicked En este método se encontrara una llamada al método de guardarDatos para que se realice los procesos allí del guardado de la información del juego. h. Método valoresIniciales En este método se encontraran las sentencias en donde se agregan los botones de opciones al grupo de botones correspondientes. Se inicializa el estado de los botones de opcion en falso, se deshabilita los botones de verificar y siguiente; los valores de texto de las etiquetas de jugador se las inicia como texto sin negrita, se inicializa en vacío la etiqueta de preguntas y las etiquetas de los botones de opción También se inicializan los valores de los componentes del panel de verificación. i. Método mostrarDatosJugadores En este método se tendrán las sentencias para la lectura del fichero en donde se encuentran los nombres de los jugadores. Al igual que una sentencia de control que servirá para el control de los mismos ya que si son 2 jugadores en la ventana solo mostrara las etiquetas según el numero de jugadores que sean. Inicializaremos el valor de numJug; que es el número de jugadores según el número de datos recuperados y se hará un llamado al método PintarJugadorActual. j. Método controlJugadores En este método se tendrá un llamado al método jugar. 42
  • 52. k. Método SeleccionarCategoriaComputador En este método se inicializara la variable numCat usando un numero aleatoria que vaya desde el 1 al 5, a continuación de ello tendremos los mismo controles como en el botón seleccionar, los cuales según el valor del numCat asignara una categoría al ordenador. l. Método SeleccionarApuestaComputador En este método al igual que en el anterior se inicializara la variable numApu con un valor aleatorio entre 1 y 5, según la opción que se seleccione se deshabilitaran los demás botones siguiendo el mismo proceso que si fuera un jugador mas. m. Método preguntasTrivia Como ya se dijo en un método pasado este método recibe 2 parámetros el uno categorias y el otro resp, estos parámetros contienen el nombre del fichero de preguntas y respuestas respectivamente con sus extensiones los cuales se usaran en lo posterior. Se declararan variables locales para el almacenamiento de algunos datos importantes como son el número de líneas del fichero de las preguntas, el número de líneas del fichero de opciones de respuesta, un contador para las preguntas, un contador para las respuestas, un arreglo en donde se almacenaran las preguntas, un arreglo en donde se almacenaran las respuestas. Se tendrá las sentencias para la lectura de un fichero en donde se coloca el nombre del fichero que se va a abrir se colocara el valor de la variable categoría. Seguidamente con la ayuda de un ciclo repetitivo almacenaremos los datos recuperados del fichero en un arreglo. Se sigue el mismo procedimiento para la recuperación de las opciones de pregunta del fichero los únicos cambios que hay 43
  • 53. que hacer son el nombre de la variable que se colocara en donde va el nombre del fichero que se desea abrir y el arreglo donde se almacenaran los datos. Se inicializara la variable pregunta con un valor aleatorio que vaya desde el 1 hasta el 10 con usando Math.random. Seguidamente inicializara la variable cat con las preguntas recuperadas según las posiciones del arreglo de preguntas. Seguidamente se encontrara un switch que tendrá la variable pregunta con la cual se controlara la visualización de las preguntas según su número, como se tiene 10 preguntas por categoría entonces el numero de case del switch será 10, entonces dependiendo del numero de case se recuperara la pregunta y las opciones de respuesta según las posiciones del arreglo tanto de preguntas como de respuestas y se los mostrara en las etiquetas correspondientes en la interfaz grafica. Como las sentencias anteriores van a provocar algunas excepciones propias del manejo de ficheros entonces el código anterior se tendrá que encapsular en sentencias try catch o en su defecto controlar con algún otro método las excepciones provocadas. n. Método verificar En este método se encontrara la habilitación de botón siguiente y la deshabilitación del botón verificar, también se creara una variable booleana llamada esCorrecto. Luego de lo cual se tendrá una serie de if’s anidados los cuales realizaran el control de la respuesta seleccionada por el usuario según la categoría y la opción de respuesta que este haya seleccionado, también se tendrá las sentencias para el cambio de 44
  • 54. color del panel de verificación, y la asignación de un valor a la variable esCorrecto según sea el caso; además de un llamado al método Puntuacion con el valor de la variable esCorrecto. o. Método Puntuacion En este método en primer lugar recibirá una variable booleana llamada opción la cual necesitaremos en las sentencias posteriores. En primer lugar se tendra el control sobre los botones de apuesta según cual sea la opuesta del jugador entonces se pasara a la siguiente sentencia la cual controla el numero de jugadores y a través de un switch usando la variable jugadorActual según el numero de opcion dentro del switch entonces se tendra otro control pero esta vez sobre la variable esCorrecto en la cual si esta es verdadera se sumara al jugador correspondiente la puntuación según la opcion seleccionada. p. Método SeleccionarRespuestaComputador En este método se asigna un numero aleatorio entre el 1 y 3 a la variable numOpc, luego de lo cual según este numero se seleccionara el botón de opción correspondiente mediante sentencias if’s. q. Método guardarDatos En el método guardar datos una vez que se haya realizado las acciones del botón salir entonces tendremos las sentencias necesaria para guardar los datos del juego en el fichero de resultados de manera que puedan ser recuperados del fichero hacia la ventana siguiente. Una vez que se complete la grabación de los datos en el fichero entonces se colocaran las sentencias para dirigirnos a la siguiente ventana, y cerrar la ventana actual. 45
  • 55. r. Método Jugar En este método comprobaremos si el jugador actual es la computadora entonces nos dirigiremos a los métodos que se encargan de realizar la jugada de la computadora, dentro del if que comprueba si el jugador actual es la computadora tendremos otro que en cambio maneje los métodos necesarios cuando los jugadores no son la computadora. s. Método PintarJugadorActual En este método se tendrá las sentencias necesarias con las cuales dependiendo del jugador que este actualmente activo se dará formato a las etiquetas correspondiente para que se puede distinguir al jugador activo de los demás jugadores. 4. Interfaz Resultados a. Importamos las clases necesarias para la interfaz i. BufferedReader Esta clase lee el texto de un flujo de entrada de caracteres  FileReader Esta clase nos ayuda a leer un archivo de caracteres. b. Declaración de variables globales. Después de la clase se declararan las variables globales que se usaran que en este caso serán las siguientes: numLineas de tipo entero y la inicializaremos con el numero de líneas que tiene el fichero de jugadores posteriormente al guardar los datos del juego en este caso será 11; un contador para el control del numero de líneas esto de tipo entero, un arreglo para poder almacenar los datos recuperados del fichero, un objeto de tipo TriviaComputador y numJug de tipo entero. 46
  • 56. c. Método Resultados Debido a que este es el primer método de la interfaz entonces aquí encontraremos la llamada al método initComponents que es uno de los métodos que el asistente de interfaz grafica de Netbeans implementa automáticamente después de ello tendremos las sentencias para colocar el nombre a la ventana y centrar la ventana en el centro de la pantalla, al igual que 3 etiquetas que no tendrán ningún valor por el momento. Una vez que se haya hecho lo anteriormente explicado entonces se tendrá que escribir posteriormente las sentencias para la lectura del fichero de jugadores que es en donde se encontraran los datos de los jugadores. Luego de ellos con la ayuda de un ciclo repetitivo se llenaran el arreglo que declaramos anteriormente con los datos que se recuperan del fichero. Una vez que el arreglo tenga los datos del fichero se hará una comparación para comprobar cuantos jugadores existen y poder así mostrar los datos en las respectivas etiquetas; sea el caso que si existe solo 2 jugadores es decir la posición 2 del arreglo se encuentra vacía entonces no se mostraran las etiquetas correspondientes al jugador 3; caso contrario se las mostrara. Algo que se debe tomar en cuenta que siempre en un arreglo se empieza contando desde la posición 0 hasta el final del mismo. Por ultimo se tendrá un llamado al método mostrarGanador. d. Método btnSalirMouseClicked Aquí se encontrara la sentencia System.exit(0) que nos permitirá salir de la aplicación. 47
  • 57. e. Método mostrarGanador En este método se hará una comparación con los valores de las puntuaciones de los jugadores y se mostrara la etiqueta al frente del jugador con el mayor puntaje señalándolo como ganador. 48
  • 58. CONCLUSIONES Como conclusiones una vez terminado este proyecto tenemos las siguientes:  La utilización de ficheros para administrar información es muy práctica cuando no se va a manejar grandes cantidades de información que requiere ser actualizada sin hacer cambios en la aplicación sobre la cual se usa.  La implementación de ficheros dentro de una aplicación puede ser tediosa en el caso de necesitar correr la aplicación en varios Sistemas Operativos.  El uso de arreglos para la recuperación de datos de un fichero es muy útil ya que permite administrar la información que se recupera de la manera más fácil posible sin incluir otras sentencias que complicarían más la aplicación y no se obtendría los resultados esperados.  Uso del asistente que posea la herramienta con la que se vaya a programas en determinado lenguaje es muy útil a la hora de la creación de interfaces graficas.  El uso de juegos para el reforzamiento de los conocimientos de los estudiantes es muy útil ya que permite al estudiante evaluar sus conocimientos personalmente en un ambiente de competencia sana.  No es posible implementar aplicaciones desarrolladas en java en ordenadores que tengan diferentes versiones de la JVM (Maquina Virtual de Java). 49
  • 59. RECOMENDACIONES Entre las recomendaciones que se pueden dar acerca de este proyecto se tienen las siguientes:  Se debe tener mucho cuidado con los errores que se puedan dar en la aplicación durante el periodo de prueba de la aplicación  Se debe tener nociones básicas del manejo de excepciones y manejos de las misma para realizar de la manera mas correcta la codificación de esta aplicación  Se debe seguir en forma secuencial cada uno de las fases de la metodología que se elija para la realización de un proyecto.  Se debe tener una constante interacción con el usuario final de la aplicación ya que este será el que juzgue si la aplicación que se ha desarrollado esta acorde con los requerimientos que este solicito.  Se debe tener en cuenta la versión de la maquina virtual de java del ordenador donde se realizada la aplicación y la versión de la misma del ordenador donde se la implementara. 50
  • 60. BIBLIOGRAFIA RB1: Yahoo Respuestas en español (s.f). Recuperado el 11 de abril del 2012 de http://espanol.answers.yahoo.com/question/index?qid=20060829071835AAHkd XI RB2: Pereira González M (s.f). Excepciones. Recuperado el 11 de abril del 2012 de http://ocw.uc3m.es/ingenieria- informatica/programacion/transparencias/tema8.pdf RB3: García Beltrán A, Arranz J. M (s.f). Otras Sentencias. Recuperado el 11 de abril del 2012 de http://ocw.upm.es/lenguajes-y-sistemas- informaticos/programacion-en-java-i/Contenidos/LecturaObligatoria/7- otrassentencias.pdf RB4: López P, Ruiz F (s.f).Ingenieria de Software I Tema 2: Lenguaje unificado de modelado UML. Recuperado el 11 de abril del 2012 de http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales- de-clase-1/is1-t02-trans.pdf RB5: Garcia Peñalvo F, Conde Gonzalez M, Bravo Martin S (2008). Ingenieria del Software Tema 2: Modelo objeto Una descripción de UML. Recuperado el 11 de abril del 2012 de http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del- software/contenidos/Tema2-Modeloobjeto-1pp.pdf RB6: Lopez P, Ruiz F (s.f). Ingenieria del Software I Tema 7: Iteraciones del Sistema (en el desarrollo de OO). Recuperado el 11 de abril del 2012 de http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales- de-clase-1/is1-t07-trans.pdf RB7: Aycart Perez D, Gibert Ginesta M, Hernandez Matias M, Mas Hernandez Jordi (s.f). Ingeniería del software en entornos de SL. Recuperado el 11 de abril del 2012 de http://ocw.uoc.edu/computer-science-technology-and- multimedia/software-engineering-in-free-software-environments/software- engineering-in-free-software-environments/XP06_M2112_01486.pdf RB8: Package java.io. Recuperado el 11 de abril del 2012 de http://docs.oracle.com/javase/1.4.2/docs/api/java/io/package-summary.html RB17: Deitel P, Deitel H (2008). Java como programar. México: Pearson Prentice Hall. 51
  • 61. RB18: Camacho Fernández, D. (Coordinador); Valls Ferrán, J. M.; García Herrero J.; Molina López, J.; Bueno Rodríguez, E (2003). Programación, Algoritmos y Ejercicios Resueltos en Java. Madrid: Pearson Educación S.A. RB19: Stevens P.; Polley R (2002). Utilización de UML en ingeniería de Software con objetos y componentes. Madrid: Pearson Educación S.A. RB9: ¿Qué es la tecnología Java y por qué lo necesito?. Recuperado el 22 de abril del 2012 de http://www.java.com/es/download/faq/whatis_java.xml RB10: Salvador Vargas A. Arreglos en Java. Recuperado el 22 de abril del 2012 de http://www.utim.edu.mx/~salvar73/material/java/Arreglos.pdf RB11: Jenkov J. Java IO: FileWriter. Recuperado el 22 de abril del 2012 de http://tutorials.jenkov.com/java-io/filewriter.html RB12: Clase BufferedReader. Recuperado el 22 de abril del 2012 de http://docs.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html RB13: Métodos en Java. Recuperado el 22 de abril del 2012 de http://www.slideshare.net/mtemarialuisa/mtodos-java RB14: Variables Java. Recuperado el 22 de abril del 2012 de http://www.webtaller.com/construccion/lenguajes/java/lecciones/variables- java.php RB15: Unidad 6: OPP Java Tema 2: Parámetros. Recuperado el 22 de abril del 2012 de http://www.programacionfacil.com/java:parametros RB16: Clase y objetos en Java Lógica de la Programación. Recuperado el 22 de abril del 2012 de http://www.scribd.com/leonardo_cristancho/d/48801584- Clases-y-Objetos-en-Java 52