viernes, 22 de abril de 2016

Tip para aprendizaje de java



Estoy seguro que la lectura de éste articulo abrirá tu mente para que a partir de hoy le pongas más pecho a tu estudio y salgas adelante con el aprendizaje de la Plataforma Java.

Si aplicas las técnicas que te muestro de aquí en adelante, te aseguro que el aprendizaje de la plataforma Java será mucho más agradable, sencilla y eliminarás aquel paradigma de que la curva de aprendizaje en Java es demasiado alta.

Aunque para muchos el aprender Java es algo difícil y complicado, algo que requiere mucho tiempo y dedicación, no podemos negar su gran aceptación mundial, es muy difícil saber exactamente cuantos programadores Java existen en el mundo, pero la cantidad de adeptos aumenta día tras día, pese a todo lo que se dice de su costoso aprendizaje o de su poca documentación.

Esto nos hace pensar que su aprendizaje no es tan complicado como se dice. Durante años he escuchado decir que Java es tan difícil cuanto a C, que Java es para los investigadores, que su curva de aprendizaje es muy alta, etc, etc, etc, y todo lo negativo que te puedas imaginar.
Lo cierto es que hasta hoy, para muchos Java es un monstruo de ocho cabezas, y aunque YO tarde un poco en aprender, no significa que lo será para tí.
Fijate que en aquella época cuando dí mis primeros pasos en Java, alla por el 2003 habia muy poca información, y la poca información que había estaba en un inglés muy, pero muy técnico, tampoco existían los videos por Internet.
Hoy la situación es otra, estamos en la era de la información. Cuando antes una carrera de 6 años servía para aprender de uno a tres lenguajes de programación cómo máximo, los estudiantes de hoy están preparados para aprender en dos años una cantidad de más de 10 lenguajes, meta-lenguajes, pseudo-códigos o hasta incluso en ese tiempo crear su propio lenguaje.
Es increíble cómo la Internet ha cambiado nuestras vidas, y nos ha colocado en una situación de competencia frente a miles de millones de otros programadores que cada día aprenden más y más rápido sobre todas las innovaciones que nacen a diario.
Pero fuera de toda la abrumadora información que encontramos a diario es importante que tu conozcas los principios que nunca pasan de moda y que te ayudarán para un rápido aprendizaje de la tecnología Java, que es lo que aquí nos interesa, de forma que al ver un video-tutorial no seas sólo un espectador o que al leer un valioso artículo no represente para tí, una perdida de tiempo.
Es por eso que teniendo en cuenta dichos principios preparé hoy una de las técnicas mias que me ha ayudado muchísimo y que te presento a continuación. Esta es una técnica que debes aplicar si es que estás tratando sumergirte dentro de la Tecnología Java.

TÉCNICA: La Práctica

De nada sirve que una persona que desea ser el nadador número uno del mundo, compre un libro y aprenda sólo leyendo, para ser un buen nadador tarde o temprano tiene que tirarse al agua.
 
De la misma forma ocurre con Java, de nada te servirá que compres el mejor Tutorial de Java que te enseñe desde el inicio hasta el final o que pagues por adquirir los videos-tutoriales más creativos que te enseñen cómo es eso de la POO, si tu mismo no ejercitas tu capacidad y pones en práctica lo aprendido.
Desde el primer momento en que deseas saber programar en Java tienes que ejercitarte. Si tu profesor te da un ejercicio, practica, o si te da un ejercitario propuesto de 100 items practicalos todos, si encuentras una solucion en Internet, lo bajas lo imprimes y lo practicas, si encuentras temas en los libros o los videos practicalo, practica siempre.
 

miércoles, 20 de abril de 2016

Historia de Java

Programación

Historia de Java

Java actualmente puede ser considerado uno de los lenguajes más extendido y usado del mundo, pero esto no siempre fue así. ¿Cual es la historia de Java?
Para hablar de la historia de java, primero debemos remontarnos a los años 80, donde C podía considerarse el lenguaje por antonomasia. Era un lenguaje versátil, que podía actuar a bajo nivel y resolvían problemas muy complejos. Era la cima de la programación estructurada, para resolver estos complejos algoritmos, se generaban grandes procedimientos con un código muy complicado de mantener a largo plazo. Por ello empezó a surgir como alternativa la programación orientada a objetos, y con ella nació C++. Entonces, ¿por qué surgio Java?

Inicios de JAVA

Java nace en 1991 con el nombre "OAK", posteriormente cambiado por Green por problemas legales, y finalmente con la denominación actual JAVA.
El objetivo de java era crear un lenguaje de programación parecido a C++ en estructura y sintaxis, fuertemente orientado a objetos, pero con una máquina virtual propia. Esto se hizo bajo el principio, de poder ser usado bajo cualquier arquitectura "Write Once, Run Anywhere (escríbelo una vez, ejecútalo en cualquier sitio)".
En 1992 se presenta el proyecto verde, con los prototipos a bajo nivel. Entre 1993 y 1994 se trabaja para poder presentar un prototipo funcional (hotJava) donde se ve todo el potencial que JAVA puede ofrecer.
Historia de java

Establecimiento

En 1995 finalmente, es presentada la versión alpha de java, y un año despues en 1996 es lanzado el primer JDK (JDK 1.0). El desarrollo de java a partir de entonces es imparable, se van presentando nuevos paquetes y librerías hasta la actualidad.

Java hoy en día

A día de hoy, podemos decir, que Java es uno de los lenguajes más importantes del mundo. Con una comunidad extendida en todos los componentes y más de 4 millones de desarrolladores, existen millones de dispositivos que lo usan. Ademas, tras el surgimiento de android, java se establecido como el lenguaje de programación para móviles más extendido del planeta.


Curiosidades de JAVA

El nombre de JAVA tiene una gran polémica con respecto a su origen, se discuten varias teorías:
  • Una de las teorías más difundidas viene del cafe, se dice que una cafetería cercana donde los desarrolladores tomaban cafe se llamaba de la misma forma, de ahí vendria tambien su logo con una taza de cafe humeante.
  • Otra versión dice que viene del acronimo: Just Another Vague Acronym ("sólo otro acrónimo ambiguo más").
  • Aparte de estas teorías, la versión más plausible es que se eligió su denomicación al azar de una lista de posibles nombres.

martes, 19 de abril de 2016

guia de jsf

Guía de aprendizaje de herramientas JSF: construir una aplicación JSF 2.0

Resumen
En esta guía de aprendizaje construiremos y ejecutaremos una aplicación web de JSF 2.0, y resaltaremos las características proporcionadas por el proyecto de herramientas JSF.

Introducción

El proyecto Herramientas JSF proporciona herramientas que simplifican la construcción de aplicaciones web JSF 2.0. Estas incluyen un Editor de fuente HTML que proporciona asistencia de contenido y validación para códigos JSF. En esta guía de aprendizaje crearemos y ejecutaremos una aplicación web JSF 2.0. En la página Novedades destacables se indican todas las características de herramientas disponibles para dar soporte al desarrollo de una aplicación web JSF 2.0.

Configuración

Configurar la instancia del servidor Apache Tomcat

Configure una instancia del servidor Apache Tomcat con la información de la sección 'Configurar' de esta guía de aprendizaje Construir y ejecutar una aplicación web.

Cree un proyecto de JavaServer Faces

Cree una nueva aplicación de web dinámica con el nombre JSFFaceletsTutorial. Establezca el tiempo de ejecución de destino en Apache Tomcat 6.0
En la sección Configuración, pulse el botón Modificar y seleccione la faceta “JavaServer Faces 2.0”. Sáltese el panel siguiente para pasar a la página Posibilidades de JSF.



En la página Prestaciones de JSF, en el desplegable para el Tipo de biblioteca JSF, seleccione Biblioteca de usuario.



Pulse el icono Descargar biblioteca. Se visualiza el diálogo Descargar biblioteca con la lista de proveedores para los archivos JAR de implementación de JSF. Seleccione la biblioteca JSF 2.0 (Mojarra). Pulse Siguiente. Acepte la licencia y pulse Finalizar



La herramienta descarga los archivos JAR, crea una biblioteca de usuario JDT y la añade al proyecto actual. Seleccione el recuadro de selección para la nueva biblioteca si no está seleccionado. A continuación, seleccione el icono Gestionar bibliotecas.





Pulse en el botón Finalizar para crear la aplicación de JavaServer Faces. Puede que se le solicite que elija la perspectiva J2EE al terminar. Pulse Aceptar.

Se ha creado la aplicación JSF.



Crear páginas de plantillas de facelets

Ahora creará una página de plantilla de facelets. Cree una carpeta llamada templates en la carpeta WEB-INF. Utilice el asistente para crear una página de plantilla llamada BasicTemplate.xhtml bajo esta carpeta. Pulse con el botón derecho sobre la carpeta template, seleccione Nuevo > HTML para lanzar el asistente HTML. En la página Seleccionar plantillas del asistente, seleccione la plantilla Plantilla de facelet nueva. Pulse Finalizar.



















Edite el archivo de plantilla siguiendo las instrucciones de la plantilla. Creará e incluirá las plantillas de cabecera y pie de página. La plantilla final debería tener el aspecto siguiente.


BasicTemplate.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
  <title><ui:insert name="title">Guía de aprendizaje de facelets</ui:insert></title>
</head>

<body>

<div id="header">
    <ui:insert name="header">
        <ui:include src="/WEB-INF/templates/header.xhtml"/>
    </ui:insert>
</div>

<div id="content">
    <ui:insert name="content">
    </ui:insert>
</div>

<div id="footer">
    <ui:insert name="footer">
        <ui:include src="/WEB-INF/templates/footer.xhtml"/>
    </ui:insert>
</div>

</body>
</html>


Cree las plantilla de cabecera y pie de página bajo la carpeta template mediante el asistente HTML nuevo tal como se describe más arriba. En la página Seleccionar plantilla del asistente, elija los archivos de plantilla correspondientes, Cabecera de facelet nueva y Pie de página de facelet nuevo. Haga los cambios en las plantillas tal como se muestran más abajo.




Crear una página JSF

Cree una página JSF con códigos de facelets que utilizarán la plantilla creada en el paso anterior. Utilice el asistente de página HTML para crear una página llamada login.xhtml en la carpeta contenido web de la nueva aplicación. En la página Seleccionar plantillas del asistente, seleccione la plantilla Página de composición de facelet nueva. Pulse Finalizar.


login.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="">
    <ui:define name="cabecera">
        Añada aquí su cabecera o suprima para utilizar el valor predeterminado
    </ui:define>
    <ui:define name="contenido">
        Añada aquí su contenido o suprima para utilizar el valor predeterminado
    </ui:define>
    <ui:define name="pie de página">
        Añada aquí su pie de página o suprima para utilizar el valor predeterminado
    </ui:define>
</ui:composition>
</html>


Validación de atributos de código de facelets y asistencia de contenido

El proyecto de herramientas JSF añade soporte para validar los atributos de códigos de Facelets y también proporciona asistencias de contenido sobre ellos. Fíjese en el aviso sobre el atributo template del código <ui:composition>.




Sitúe el cursor entre las comillas del atributo template y pulse Control + Barra espaciadora para obtener la asistencia de contenido. Debería ver un cuadro emergente con una lista de los directorios bajo la carpeta WebContent. Seleccione /WEB-INF/templates/BasicTemplate.xhtml






Completar la página JSF

Suprima los códigos <ui:define> para la cabecera y el pie de página. La página obtendrá la cabecera y el pie de página de la plantilla. Añada los códigos para el inicio de sesión en la sección content tal como se muestra a continuación. Tenga en cuenta que el release actual del proyecto de herramientas JSF no soporta la representación visual de una página XHTML en el Editor de páginas web JSF. Sin embargo todas las características de productividad disponibles en la Página fuente del Editor de páginas Web para editar una página JSP están disponibles en el editor de fuente HTML para construir una página de facelets JSF en XHTML.


login.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/WEB-INF/templates/BasicTemplate.xhtml">
    <ui:define name="content">
        <h:form>
            <h:panelGrid columns="2">
                <h:outputText value="Name"></h:outputText>
                <h:inputText value="#{loginBean.name}"></h:inputText>
                <h:outputText value="Password"></h:outputText>
                <h:inputSecret value="#{loginBean.password}"></h:inputSecret>
            </h:panelGrid>
            <h:commandButton value="Login" action="login"></h:commandButton>
        </h:form>
    </ui:define>
</ui:composition>
</html>

Configurar el bean gestionado

En el Explorador de proyectos, expanda el nodo JSFFaceletsTutorial->WebContent. Efectúe una doble pulsación sobre faces-config.xml . Esto también iniciará el editor de configuración de Faces. Seleccione la pestaña ManagedBean.




Pulse el botón Añadir. Esto iniciará el asistente Nuevo bean gestionado. Seleccione la opción Crear una nueva clase Java. En el siguiente panel del asistente, especifique el paquete como com.tutorial y el Nombre de la clase como LoginBean . Pulse el botón Finalizar.
Esto creará la clase Java y la registrará como un bean gestionado. Guarde el editor de configuración de Faces. Para editar la clase Java, pulse en el hiperenlace Clase ManagedBean en la página Bean gestionado tal como se muestra en la siguiente imagen. Esto iniciará el editor de Java.





Edite la clase Java com.tutorial.LoginBean. Añada el siguiente código y guarde.

LoginBean.java

/**
 * LoginBean.java
 * 
 */

package com.tutorial;

public class LoginBean
{
    private String name;
    private String password;


    public String getName ()
    {
        return name;
    }


    public void setName (final String name)
    {
        this.name = name;
    }


    public String getPassword ()
    {
        return password;
    }


    public void setPassword (final String password)
    {
        this.password = password;
    }
}

Añadir otra página

Cree una página HTML welcome.xhtml nueva en WebContent con el contenido siguiente:

welcome.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/WEB-INF/templates/BasicTemplate.xhtml">
    <ui:define name="content">
        <h:outputLabel value="Welcome #{loginBean.name}"></h:outputLabel>
    </ui:define>
</ui:composition>
</html>

Configuración de reglas de navegación de página

Efectúe una doble pulsación sobre faces-config.xml para abrir el Editor de configuraciones Faces. Pulse la pestaña Regla de navegación. Ahora arrastre los archivos login.xhtml y welcome.xhtml del Explorador de proyectos a la cuadrícula Regla de navegación tal como se muestra.
 Pulse sobre la herramienta Enlazar en la paleta de la derecha. Ahora arrastre una flecha de login.xhtml a welcome.xhtml tal como se muestra.
 Ahora, pulse sobre la flecha y abra la vista Propiedades. Pulse sobre el botón con las elipses junto al campo “De resultado”

 Seleccione “Conexión” en este diálogo. Pulse Aceptar
 Nuestra regla de navegación está ahora configurada.

Ejecutar la página de facelets JSF

Ahora ejecutaremos la página login.xhtml contra el servidor Apache Tomcat. Elija Ejecutar en servidor mediante el menú de contexto mientras selecciona la página login.xhtml en el navegador. Seleccione el servidor Apache Tomcat y configúrelo según sea necesario si no lo ha hecho aún. Pulse Finalizar. Debería ver en la vista Consola que se inicia el servidor Tomcat y, a continuación, debería ver la página de inicio de sesión ejecutándose aparecer en el navegador web tal como se muestra a continuación.


 
¡Felicidades! Ha creado y ejecutado su primera aplicación de facelets JSF.

sábado, 16 de abril de 2016

sistema de ventas



Mantenimiento de Clientes
Mantenimiento de Productos
Mantenimiento de Marca
Mantenimiento de Proveedor
Mantenimiento de Usuarios

Formulario de Factura
 











Formulario de Boleta
Factura
 

















Boleta de venta























 El sistema esta desarrollado en Java con la base de datos MYSQL
 incluye codigo fuente + base de datos y configuracion por tianviwer

Acepto paypal y bcp

cualquier consulta al correo therum06@gmail.com



miércoles, 13 de abril de 2016

Analisis de sistemas

 

  • Jefe de Proyecto/Scrum Master/Arquitecto Software
    • Es el interlocutor válido con el profesor, que actuará como gerente del proyecto y origen de los requisitos de usuario.
    • Diseña la arquitectura de los componentes, servidores de aplicación, bases de datos, y de todos los sistemas software que intervengan en el despliegue de la aplicación para ponerla en funcionamiento.
    • Coordinación del proyecto, planificación ágil, asignación de tareas, gestión de la Wiki.
    • Planifica, controla y organiza el trabajo. 
  • Analista/Ingeniero de Requisitos
    • Análisis de requisitos y diseño, casos de uso, diagramas de robustez, diagramas de secuencia
  • Administrador de sistemas:
    • Instala y configura los entornos de desarrollo, servidores y sistemas software de los que depende la aplicación (base de datos, servidor web, servidor de aplicaciones, sistema de control de versiones, etc.)
    • Analiza, diseña y mantiene el esquema de base de datos de la aplicación; ayuda en la codificación de las clases de entidad que tengan que ver con el acceso a la base de datos
  • Diseñador de interfaz de usuario
    • Gurú balsamiq, maquetación CSS, gestión interfaces
    • Analiza, diseña y codifica la interfaz de usuario (clases de vista) en HTML y JavaScript.
  • Codificador de pruebas
    • Planifica, codifica y configura la ejecución de casos de prueba unitarias, funcionales y de integración.
  • Analista/Programador
    • Codifica los componentes de software; programa las clases en Groovy
    • Implementación MVC Grails/Groovy, gestión de plugins


Participante Rol
Carlos M. Cornejo Crespo Jefe de Proyecto/Scrum Master/Arquitecto Software
Antonio Falcón Aragón Analista/Ingeniero de Requisitos
Antonio Fco. Martín Romero Administrador de sistemas
Jose Luis Falcón Ramírez Diseñador de interfaz de usuario/Integración con la Vista
Antonio Fco. Martín Romero Codificador de pruebas
Carlos Villegas Núñez Analista/Programador/Gurú GRails

Entregable 1 - Planificación y configuración

En cada sprint el trabajo del equipo de desarrollo se va a organizar en un conjunto de tareas, que identificarán cada unas de las funcionalides a implementar. A continuación se definen:
ScrumMaster - Gestiona la planificación de tareas y asume responsabilidades de estudio/integración con plugins/funcionalidades que surgen de otras tareas. Gestión de documentación.
  • Planificar tareas
  • Documentación/Entregables
Análisis - Identifica necesidades UML en el análisis y dirige el modelado guaido por casos de uso
  • Casos de Uso
  • Diagramas de Robustez
  • Diagramas de Secuencia
Integración con la Vista
  • Maquetación Balsamiq
  • Integración HTML/GSP
  • Estudio de taglibs y layout SiteMesh
  • Maquetación CSS
Implementación - Da cuerpo al diseño con Grails, generando las estructuras de datos necesarias en cliente y lógica de negocio. 
  • Domain/Controller/Services/Hibernate mapping
Pruebas - Recopila todas la pruebas software aplicables al proyecto.
  • Pruebas Unitarias.
  • Pruebas Integración.
  • Pruebas Funcionales.
Capa de acceso a BD - Da soporte a la capa de acceso a datos con MySQL. Genera scripts de startup y actualiza la BD.
  • Scripts actualización del DDL/DML/DCL
  • Creación startup bash.


Sprint Duración
Sprint 0 - Planificación y configuración hasta 17/04/2011
Sprint 1 - Consulta de habitación disponible hasta 27/04/2011
Sprint 2 - Reserva de habitación disponible hasta 11/05/2011
Sprint 3 - Cancelar reserva hasta 18/05/2011
Sprint 4 - Consumos (bebida/teléfono) hasta 25/05/2011
Sprint 5 - Llegada de cliente con reserva hasta 1/05/2011
Sprint 6 - Cálculo de factura y salida del cliente + Entrega Proyecto hasta 8/06/2011

Reuniones

Reunión del día 19/04/2011

Contexto:
Videoconferencia con skype y duración 1.5h.
Participantes:
  • José Luis Falcón Ramírez
  • Antonio Falcón Aragón
  • Carlos M. Cornejo Crespo
  • Antonio Fco. Martín Romero
  • Carlos Villegas Núñez
Temas tratados:
Hemos repasado el conjunto de tareas que nos hemos asignado. Hemos solucionado algunas dudadas referentes al uso de los tickets y funcionamiento de assembla.
Hemos decido subir los fuentes de:
  • maquetaciones 
  • robustez
También hemos comentado la necesidad de subir las capturas en png de los casos de uso, maquetaciones y robustez que se añadirán a la wiki.
Hemos configurado el plug-in Subversive SVN Connectors del IDE Eclipse.
Instalación del plugin de authentication

Reunión 11/05/2011

Contexto:
Reunión informal en clase durante 30 mins.
Participantes:
  • José Luis Falcón Ramírez
  • Antonio Falcón Aragón
  • Carlos M. Cornejo Crespo
  • Antonio Fco. Martín Romero
  • Carlos Villegas Núñez
Durante la reunión hemos hablado de la necesidad de completar las tareas para evitar dependencias entre componentes, y de esta forma cada compañero puede ir avanzando sin verse afectado por la demora.
Después hemos repasado la planificación, tras introducir cambios en la tipología de tickets/finalización tickets padre. 
También se trató de los problemas de versionado con las herramientas proporcionadas con el IDE SSTS. Se han detectado comportamientos que retrasan el trabajo.

Entregable 2 - Requisitos y arquitectura

En esta sección se define la estructura del sistema que comprende los elementos software con sus propiedades visibles y no software, además de las relaciones de dichos elementos, mediante sus respectivas interfaces.

Arquitectura Física

La arquitectura física no es más que la asignación de los componentes software necesarios para el correcto funcionamiento del sistema, sobre elementos hardware. En nuestro caso, observemos el siguiente diagrama de despliegue.
Arquitectura V1.png
En la imagen anterior abstraemos el funcionamiento de nuestra aplicación, identificando tres módulos atómico como son:
  1. El WAR de la aplicación
  2. El servidor de despligue, en este caso un Tomcat
  3. Servidor de Bases de Datos, como puede ser MySQL

Hardware Recomendado

  • CPU: Cualquier arquitectura x86
  • Memoria RAM: 2GB
  • HDD: 320GB

Software Base

  • SSOO: Windows XP/7/Ubuntu/Linux
  • Máquina Virtual de Java, superior a 1.5
  • MySQL Server 5
  • Tomcat 5.5
  • Navegador Web: Firefox 4, Chrome 10, IE 8

Arquitectura Lógica

La arquitectura lógica especifica la forma en que los artefactos software son unidades de composición, para que mediante la combinación de todos ellos se consiga implementar los requisitos del sistema.
Integración con log4j
En esta sección repasaremos como configurar log4j con nuestro proyecto grails.
Archivos a modificar:
grails-app/conf/Config.groovy

log4j = {
appenders {
console name: 'stdout', layout: pattern(mineIs: '%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{2}] %m%n')

rollingFile name:'mineIs', file: "../loggy.log", append: true,
layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{2}] %m%n')
}

info mineIs:'milog', additivity:false
}
Añadimos el ámbito de log o cargamos logger dentro de class

Entregable 3 - Documento de análisis

Casos de Uso

Consulta Habitación Disponible

Caso de Uso: Consultar Habitación/es Disponible/s. 
Descripción: El sistema comprueba si existen habitaciones disponibles 
según un período de días establecido. 
Precondición: 
Postcondición: El sistema procesa la operación según indicaciones del usuario 
y muestra por pantalla las habitaciones disponibles. 
Escenario Principal: 
1. El sistema solicita los siguientes datos al usuario: Fecha Entrada,
 Fecha Salida, Nº Habitaciones, NºAdultos, NºNiños.
2. El actor Usuario introduce los datos y pulsa en Consultar Disponibilidad.
3. El sistema comprueba que el rango de fechas sea válido.
4. El sistema comprueba que hay suficientes habitaciones disponibles 
para esa categoría, en ese período de fechas.
5. El sistema muestra un listado de las habitaciones disponibles. 
Flujos Alternativos: 
3a. Si el rango de fechas no es válido:
1. El sistema muestra el error y se reinicia el Caso de Uso.
4a. Si no hay habitaciones disponibles de esa categoría:
1. El sistema comprueba la disponibilidad de habitaciones con 
diferente categoría en ese rango de fechas.
2. El sistema muestra un listado con las habitaciones.
*a. En cualquier momento el cliente cancela la consulta:
1. El sistema reinicia el Caso de Uso. 

Reserva de Habitación

Caso de Uso: Reservar Habitación/es.
Descripción: El sistema realiza la reserva de la habitación seleccionada, 
según el rango de fechas establecido. 
Precondiciones: 
* La habitación seleccionada debe estar disponible en las fechas indicadas.
* El usuario debe estar registrado en el sistema.
Postcondición: El sistema procesa la operación y entrega al usuario el Código 
de la reserva realizada. 
Escenario Principal: 
1. El sistema muestra la habitación y el coste final para la estancia 
seleccionada.
2. El actor Usuario acepta la reserva.
3. El sistema establece el estado de la habitación en Reservada para esos días.
4. El sistema devuelve al cliente el código y los detalles de la reserva. 
Flujos Alternativos: 
2a. Si el usuario no acepta la reserva:
1. Se reinicia el Caso de Uso.
3a. Si el proceso de reserva falla:
1. El sistema muestra el error y se reinicia el Caso de Uso..
*a. En cualquier momento el usuario decide cancelar la reserva:
1. El sistema reinicia el Caso de Uso. 

Cancelar Reserva

Caso de Uso: Cancelar Reserva. 
Descripción: El sistema comprueba si el usuario ha realizado una reserva
 con antelación y la cancela, aplicando el coste de penalización adecuado. 
Precondición:
* El usuario está registrado en el sistema.
* El usuario ha realizado una reserva, y tiene el código de la misma.
Postcondición: 
* El sistema cancela la reserva
* Se cobra al cliente el coste de penalización, en caso de haberlo.
Escenario Principal: 
1. El actor Usuario solicita la cancelación de la reserva.
2. El sistema comprueba el nº de días que faltan hasta el día reservado.
3. El sistema calcula el coste de penalización.
4. El sistema realiza el cobro sobre la tarjeta de crédito del usuario.
5. El sistema cancela la reserva y vuelve a marca la habitación como Disponible. 
Flujos Alternativos: 
2a-5a. Si el proceso falla:
1. El sistema muestra el error y se reinicia el Caso de Uso.
*a. En cualquier momento el cliente cancela la operación:
1. Se reinicia el Caso de Uso.

Realizar Llamada Telefónica

Caso de Uso: Realizar Llamada Telefónica.
Descripción: El cliente realiza una llamada telefónica. 
Precondición: El cliente ocupa una habitación del hotel.
Postcondición: El sistema calcula la duración y el coste de la llamada. 
Escenario Principal: 
1. El cliente comienza la llamada indicando si es nacional o internacional.
2. El cliente habla por teléfono.
3. El cliente termina la llamada.
4. El sistema calcula la duración de la llamada y el coste total de la misma. 

Consumir Bebida

Caso de Uso: Consumir Bebida/s. 
Descripción: El cliente consume una bebida del minibar. 
Precondición: El cliente ocupa una habitación del hotel.
Postcondición: El sistema calcula el coste de las consumiciones que el 
cliente ha realizado. 
Escenario Principal: 
1. El cliente elige el tipo de bebida que va a tomar.
2. El cliente consume la bebida.
3. El sistema calcula el coste de la consumición, dependiendo del tipo de 
bebida y de la categoría de la habitación. 

Llegada de Cliente

Caso de Uso: Llegada de Cliente. 
Descripción: El cliente llega al hotel. 
Precondición: El cliente ha realizado la reserva de la habitación previamente.
Postcondición: El sistema asigna la habitación determinada al cliente, marcando 
su estado como ocupado. 
Escenario Principal: 
1. El sistema solicita los datos del cliente.
2. El cliente facilita los datos al sistema.
3. El sistema busca una habitación concreta, según la reserva del usuario, y 
la marca como ocupada, asignándosela al cliente. 
4. El sistema reinicia el contador de llamadas de la habitación.
Flujo Alternativo:
2a. Los datos son erróneos:
1. El sistema reinicia el C.U.
2b. El cliente no ha realizado reserva
1. Finaliza el C.U, quedando sin efecto sobre el sistema.
3a. El proceso falla:
1. Se reinicia el C.U.
4a. El proceso falla
1. Se reinicia el C.U.

Calcular Factura

Caso de Uso: Calcular Factura. 
Descripción: Se calcula el precio total de la estancia y se presenta la 
factura al cliente. 
Precondición: El cliente tiene asociada una reserva y ocupa una habitación 
del hotel.
Postcondición: Se presenta la factura al cliente. 
Escenario Principal: 
1. Se calcula el coste total de las llamadas realizadas.
2. Se calcula el coste total de las bebidas consumidas.
3. Se calcula el coste total de la factura (reserva, llamadas, bebidas).
4. Se devuelve al cliente la factura, detallando los costes por apartados.
Flujo Alternativo
1-4a. El proceso falla:
1. Se reinicia el C.U.

Salida de Cliente

Caso de Uso: Salida de Cliente. 
Descripción: El cliente termina su estancia en el hotel. 
Precondición: Se ha realizado la facturación al cliente.
Postcondición: Se eliminan los datos de reserva del cliente. 
Escenario Principal: 
1. Se presenta la factura.
2. Se inicializa el tiempo de llamadas de la habitación.
3. Se reponen las bebidas del minibar.
4. Se marca la habitación como libre, incrementándose el número de 
habitaciones libres del hotel.
Flujo Alternativo
1-4a. El proceso falla:
1. Se reinicia el C.U.

Entregable 4 - Documento de diseño

Diagrama de Clases

Con el siguiente diagrama queremos representar el comportamiento estático de nuestro sistema, identificando aquellas relaciones entre entidades que se correspondan con la realidad a implementar.
UML

Diagramas de Secuencia

A continuación se muestran la relación de diagramas de secuencia enmarcados en las necesidades de diseño de cada Sprint.

Sprint 1 - Consulta Habitación Disponible

Diagrama de secuencia de consulta de habitación disponible

Sprint 2 - Diagrama de Secuencia de Reserva de Habitación

Diagrama de secuencia de reserva de habitacion

Sprint 3 - Diagrama de Secuencia de Cancelar Reserva

Diagrama de secuencia de Cancelar Reserva

Sprint 4 - Diagramas de Secuencia de Consumiciones

Realizar Llamada Telefónica
Diagrama de secuencia de Cancelar Reserva
Consumir Bebida
Diagrama de secuencia de Cancelar Reserva

Sprint 5 - Diagrama de Secuencia de Llegada de Cliente

Diagrama de secuencia de Llegada Cliente

Sprint 6 - Diagrama de Secuencia de Calcular Factura

Diagrama de secuencia de Calcula Factura

Sprint 7 - Diagrama de Secuencia de Salida de Cliente

Diagrama de secuencia de Salida de Cliente

Diagramas de Robustez

Sprint 1 - Consulta Habitación Disponible

Diagrama de robustez de consulta de habitación disponible

Sprint 2 - Reserva de Habitación

Diagrama de robustez de reserva de habitación

Sprint 3 - Cancelar Reserva

Diagrama de robustez de Cancelar Reserva

Sprint 4 - Realizar Consumiciones

Realizar Llamada Telefónica
Diagrama de robustez de Cancelar Reserva
Consumir Bebida
Diagrama de robustez de Cancelar Reserva

Sprint 5 - Llegada de Cliente

Diagrama de robustez de Llegada de Cliente

Sprint 6 - Calcular Factura

Diagrama de robustez de Calcular Factura

Sprint 7 - Salida de Cliente

Diagrama de robustez de Salida de Cliente

Mockups Interfaces

Página principal

Mock PrincipalSanxer.png

Sprint 1 - Consulta Habitación Libre

Mock ConsultaLibresSanxer.png

Sprint 1 - Consulta Habitación Libre Alternativo

MockConsultaLibres AlternativoSanxer.png

Sprint 2 - Reserva

Mock ReservasSanxer.png

Sprint 2 -Reserva Realizada

Mock Reserva realizadaSanxer.png

Sprint 3 -Cancelar Reserva

Mock Cancelacion.png


Sprint 4: Consumos

Mock Consumibles.png


Sprint 5: Llegada de Cliente

Mock LlegadaCliente.png


Sprint 6: Facturación

Mock Facturacion detalles.png

Entregable 5 - Casos de prueba