PROGRAMACIÓN ORIENTADA A OBJETOS
UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MEDELLÍN FACULTAD DE MINAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN Y DE LA DECISIÓN
Travel World:
EQUIPO # 12 Eladio Salazar Suarez Cristian David Quinchia Ramirez Sebastian Pulgarin Velez Yesid Alejandro Pelaez 2018-II
PROGRAMACIÓN ORIENTADA A OBJETOS
Tabla de Contenido 1. MODELO VERBAL DEFINITIVO 2. DIAGRAMA DE CLASES 3. DIAGRAMA DE OBJETOS 4. LISTA DE FUNCIONALIDADES 5. IMPLEMENTACIÓN EN JAVA
PROGRAMACIÓN ORIENTADA A OBJETOS
1. Modelo Verbal Definitivo
En este proyecto queremos crear una aplicación en la cual se podrá comprar vuelos nacionales en la cual contamos con diferentes empresas y lugares de destino que podrán elegir y comprar sus boletos Explique en este espacio en que consiste el proyecto que pretende realizar, defina el alcance del proyecto, los actores involucrados y el beneficio de la propuesta que se presentará.
2. Diagrama de Clases Espacio para el diagrama de clases. Nota: cree un directorio llamado “diagramas” en la carpeta compartida en Google Drive y utilice el complemento de google drive llamado Draw.io para la elaboración de los diagramas.
3. Diagrama de Objetos Espacio para el diagrama de objetos. Nota: cree un directorio llamado “diagramas” en la carpeta compartida en Google Drive y utilice el complemento de google drive llamado Draw.io para la elaboración de los diagramas.
4. Lista de Funcionalidades Describa cada una de las funcionalidades que implementa el proyecto.
PROGRAMACIÓN ORIENTADA A OBJETOS
5. Implementación en Python Cree un proyecto en Pyhton sobre el cual se definan e implementen todas las funcionalidades listadas anteriormente, teniendo en cuenta las siguientes observaciones: ●
●
●
●
● ● ●
●
● ●
El proyecto no tendrá interfaz gráfica (ventanas, iconos, botones, etc.) El proyecto estará compuesto únicamente de un menú principal el cual consta con diferentes opciones numéricas (tal cual lo visto en los talleres en clase). Sugerencia agrupe las opciones del menú por categorías para que no quede una lista muy larga de opciones desplegada inicialmente. Cree una opción de “generar datos ficticios”, la cual pobla la aplicación con datos ficticios y permitirá ejecutar las diferentes opciones del programa sin necesidad de agregar uno a uno objetos de cada clase. Cree una opción de “generar datos ficticios desde un txt”. Esta opción pobla los datos de UNA SOLA de las clases de la aplicación extrayendo la información de un archivo .txt. La función “guardar” o “crear” de la clase seleccionada en el punto anterior, deberá almacenar los datos ingresados por teclado, en el mismo .txt usado para generar los datos ficticios anteriores. La aplicación deberá contener por lo menos “7 funcionalidades interesantes” diferentes a las tradicionales: crear, editar, borrar y leer. Debe existir por lo menos una clase que herede de otra clase. En el caso de que alguna funcionalidad requiera verificar el rol de un usuario, por ejemplo: que solo administradores pueden ver un reporte. Se sugiere: ○ Desplegar en el principal una opción que diga “ingrese el tipo de usuario” y que con base en esa información despliegue las opciones correspondientes a ese tipo de usuario. ○ Adicionar un parámetro “password” a cada funcionalidad, que verifique que la contraseña es correcta y pueda ejecutar la funcionalidad. ○ Entre otras. Debe mantener un estilo de codificación (“Coding style”) en todo el programa. Para este caso será OBLIGATORIO seguir este estilo de codificación: https://www.python.org/dev/peps/pep-0008/ Cree un archivo README.TXT donde explique cómo ejecutar el programa, cual es el archivo principal que se debe invocar, entre otros. Comprima en un .rar todo el proyecto de Python, incluyendo el README.TXT y subalo a minaslap (Plazo máximo 23 de octubre a las 20:00 https://minaslap.net/mod/assign/view.php?id=10275). Solo se tendrá en cuenta el proyecto cargado a esa dirección, sin excepciones.
PROGRAMACIÓN ORIENTADA A OBJETOS
● ●
●
●
●
Por ningún motivo agregue comandos PRINT dentro de las clases del diagrama de clases. Se debe utilizar una clase mensaje, para almacenar los mensajes de la aplicación (se sugiere se almacenen en un diccionario). Solo se deben almacenar textos, en esta clase no se pueden ejecutar funciones PRINT, ni ciclos, ni ifs, etc. La aplicación debe soportar el uso de 2 idiomas. Por lo tanto, al iniciar la aplicación lo primero que se le pregunta al usuario es el idioma que quiere escoger. Esto solo se le pregunta una vez durante toda la ejecución de la aplicación. Haga una tabla en excel, con 3 columnas. Columna 1 nombre de la funcionalidad, Columna 2 nombre del archivo donde está implementada la funcionalidad, Columna 3 línea desde la cual inicia la implementación de la funcionalidad. Agregue el archivo a la carpeta compartida de Google Drive. Liste las funcionalidades interesantes al final. Tome un pantallazo de la sección inicial de la aplicación (cuando se esté ejecutando) y guárdelo en la carpeta compartida de Google Drive.
Sugerencia: aproveche el espacio en semana universitaria para solucionar dudas. Finalmente aproveche la clase del 10 de octubre para llevar dudas puntuales. Se espera que para esa clase todos los equipos ya tengan implementado el 90% o más de su respectivo proyecto.
PROGRAMACIÓN ORIENTADA A OBJETOS
Entregable No. 2 6. IMPLEMENTACIÓN EN JAVA WEB Cree un proyecto en Java sobre el cual se definan e implementen todas las funcionalidades desarrolladas en el Entregable 1, teniendo en cuenta las siguientes observaciones: ● ● ● ●
●
● ● ●
● ● ●
El proyecto TENDRÁ interfaz gráfica, la cual será desarrollada en HTML - JSP - JSTL CSS - JavaScript. El proyecto deberá tener un header y un footer. El proyecto deberá tener una página inicial donde aparecerán todas las opciones de la aplicación (con sus enlaces respectivos) y un login en caso de ser necesario. Cree una opción de “generar datos ficticios”, la cual pobla la aplicación con datos ficticios y permitirá ejecutar las diferentes opciones del programa sin necesidad de agregar uno a uno objetos de cada clase. Para esto se sugiere almacenar los datos en Session según los ejercicios vistos en clase y en los talleres. Cree una opción de “generar datos ficticios desde un txt”. Esta opción pobla los datos de SOLO UNA de las clases de la aplicación extrayendo la información de un archivo .txt. La aplicación deberá contener por lo menos “7 funcionalidades interesantes” diferentes a las tradicionales: crear, editar, borrar y leer. Debe existir por lo menos una clase que herede de otra clase. En el caso de que alguna funcionalidad requiera verificar el rol de un usuario, por ejemplo: que solo administradores pueden ver un reporte. Se sugiere, desarrollar un formulario en la página de inicio y si los datos son válidos almacenar el tipo de usuario en Session y desplegar las opciones correspondientes al tipo de rol con el cual se conectó al sistema. Debe mantener un estilo de codificación (“Coding style”) en todo el programa. Cree un archivo README.TXT donde explique cómo ejecutar el programa, cual es el archivo principal que se debe invocar, entre otros. Comprima en un .rar todo el proyecto de Java, incluyendo el README.TXT y subalo a https://minaslap.net/mod/assign/view.php?id=10350 (Plazo máximo 4 de diciembre a las 23:00). Solo se tendrá en cuenta el proyecto cargado a esa dirección, sin excepciones. En caso de que no pueda adjuntar el proyecto por problemas en moodle, envielo a
[email protected] en los plazos establecidos.
PROGRAMACIÓN ORIENTADA A OBJETOS
● ● ●
Recordar utilizar una clase mensaje, para almacenar los mensajes de la aplicación. Recuerde permitir manejar 2 idiomas diferentes. Tome 3 pantallazos de la secciones más representativas de la aplicación (cuando se esté ejecutando) y guárdelo en la carpeta compartida de Google Drive (utilizar la extensión de Chrome “Full Page Screen Capture”).
Nota: recuerde tener en cuenta las recomendaciones realizadas al entregable I. Se deberán ver reflejadas en el código del nuevo proyecto.