Sei sulla pagina 1di 10

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.

Proyecto Integrador: Algoteca.


Objetivo

Al finalizar el proyecto debes ser capaz de integrar diferentes tcnicas del


desarrollo de aplicaciones y el diseo orientado a objetos en una aplicacin web
sencilla.

Descripcin del Proyecto


Debern Desarrollar una aplicacin Web para mantener una coleccin (biblioteca) de
artculos: libros, msica, pelculas, etc. Vamos a suponer que tienen muchos libros o
pelculas en DVD (o videojuegos, o discos BluRay, para no limitarlos) y quieren mantenerla
organizada, al menos con la intencin de saber qu libros o pelculas tienen, para lo cual
harn una aplicacin Web. La idea es que la aplicacin sirva para registrar cada libro o
pelcula y guardar esos datos en una base de datos, ver la lista de sus pelculas y libros y
quiz algunos detalles adicionales (por si no se acuerdan de qu se tratan o a quin se los
prestaron).

Componentes
BASE DE DATOS
La base de datos del proyecto se llamar ALGOTECA, y la cuenta de acceso debe ser:

Username:
Password:

proyecto
final$2016

[Es importante que se cumpla esta especificacin, pues es la configuracin de base de datos que usar en la
computadora donde ejecutar sus proyectos. No los deben cambiar.]

La base de datos incluir las siguientes tablas con sus campos (no se incluyen acentos para
estandarizar y evitar errores en caso de que los omitan):
Tabla ARTICULOS.

ID_ARTICULO. La clave del artculo. Esta la asignarn libremente al momento de


registrar cada artculo. Puede ser algo como: A0001 o DVD007 (contiene letras
y nmeros).
TITULO. El ttulo del libro, pelcula o videojuego.
DESCRIPCION. Una resea o descripcin del libro, o pelcula o lo que sea.
URL_IMAGEN. Una URL de la imagen. Esto es para no almacenar la imagen en la
base de datos o en el servidor Web (que s se puede hacer), y facilitar el desarrollo.
ID_CATEGORIA. La categora a la que pertenece el artculo. Es un nmero entero,
como en la tabla CATEGORIAS.
ID_USUARIO. El ID del usuario al que pertenece ese artculo.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


Tabla USUARIOS.

ID_USUARIO. El ID o nombre clave del usuario. Cada usuario lo elige al registrarse.


PASSWORD. La contrasea del usuario, en cdigo hash.
NOMBRE. El nombre completo del usuario.
SEXO. El gnero del usuario.

Tabla CATEGORIAS.

ID_CATEGORIA. La clave de la categora. Debe ser un nmero entero.


CATEGORIA. La descripcin de la categora. Deben ser, por ejemplo: Libros,
Revistas, Pelculas, etc.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.

Pginas
1. Pgina de login

Esta pgina debe solicitar las credenciales de acceso (username/password). La


aplicacin debe tomar las credenciales y verificar en la base de datos si son correctas.

Esta es la pgina principal. Puede ser index.html


Las contraseas deben registrarse en la base de datos en "hash", nunca en
"plaintext".
En el controlador se verifica si las credenciales son correctas.
Para verificar:
Se convierte a hash la credencial proporcionada.
Se hace una bsqueda (SELECT) en la tabla USUARIOS de la
base de datos con el usuario y contrasea convertida a hash.
Si no son correctas (si no hay registros) se redirige nuevamente a esta
pgina de login (1).
Si son correctas (si hay registros), se guarda el nombre del usuario en
la sesin y se dirige a la pgina de Consulta (3).
A partir de ah, en todas las pginas debe leerse el nombre del usuario
directamente del objeto de la sesin y mostrarlo en todas las pginas.
Al principio de cada pgina, si hay nombre de usuario en la sesin contina
el proceso normal.
Si no hay nombre de usuario en la sesin, se invalida la sesin y redirige a la
pgina de login.
El link Nuevo usuario debe llevar a la pgina Registro de Usuario (2).

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


2. Pgina de Registro de Usuario

Esta es una pgina especial y por lo general requiere permisos de administrador en


una aplicacin tpica. En esta aplicacin ser una pgina comn que deber incluir:

Un formulario de captura para registrar el nombre de usuario, contrasea y


el nombre completo para un nuevo usuario.
Ambos datos se insertarn en la tabla USUARIOS, pero con la contrasea en
hash. Debe usarse el comando INSERT de SQL.
i. La contrasea debe convertirse a hash antes de insertar en la tabla.
El botn Limpiar borra el formulario.
El botn Registrar es submit y enva el formulario al controlador.
Deber redirigir a la pgina de login (1) despus de insertar el registro.

Para crear un hash hay diferentes tcnicas que se usan en criptografa. En este caso,
para simplificar el desarrollo, pueden usar el mtodo hashCode() de la clase String,
que no tiene todo el rigor criptogrfico, pero sirve para fines de este proyecto. Por
supuesto, si deciden utilizar el API de criptografa de Java (y generar un hash MD5
o SHA, por ejemplo) se tomar en cuenta para la calificacin por haber hecho un
esfuerzo adicional al requerido.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


3. Pgina de Consulta

Una vez autentificado el usuario, la primera pgina que se mostrar es la pgina de


consulta. Esta pgina deber incluir:

Un campo de texto para hacer una bsqueda en el campo del ttulo.


La bsqueda har un SELECT en el campo Ttulo de la tabla
ARTICULOS, siempre con el ID de usuario constante (del usuario
que tiene la sesin).
Es conveniente usar LIKE para buscar en el Ttulo, pero = para buscar
el usuario.
Una tabla que muestre todos los artculos de la coleccin que coincidan con
la bsqueda.
El nombre de cada artculo debe ser un link que enviar a la pgina
de Detalle (4), donde se enve como parmetro el ID del artculo.
Al hacer una bsqueda, la vista se debe actualizar para mostrar solo
los registros que coinciden con esa bsqueda, para el usuario de la
sesin.
Si no se hace una bsqueda (por ejemplo la primera vez que se entra a la
pgina), no debe mostrar ningn artculo.

Esta pgina tiene una particularidad: debe tomar los datos de la tabla ARTICULOS, pero
ah solo est registrado el ID del artculo. Existen varias maneras de obtener los nombres de
las categoras en lugar de los nmeros de categoras usando un JOIN en la base de datos
para unir la tabla ARTICULOS y CATEGORIAS, o bien reemplazando en Java el nmero
con el texto. Si en la tabla muestran el nmero de categora en lugar del texto, se considera
correcto. Si alguien logra mostrar el texto en lugar del nmero, se considerar en la
calificacin como un esfuerzo adicional.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


4. Pgina de Detalle

La pgina de detalle deber mostrar toda la informacin del artculo seleccionado.

En una sola pgina se mostrar toda la informacin del artculo: ID, Ttulo,
Descripcin, etc.
El select (combo box) de Categora debe mostrar las distintas categoras como
texto, no como valor, pero seleccionar (selected) el que corresponda al artculo.
El URL de la imagen no se mostrar como texto. En lugar de eso se deber
construir un objeto de imagen HTML (<IMG>) que muestre la imagen
correspondiente.
El link Regresar manda a la pgina de Detalle.

Por cuestin de tiempo no se requerir la funcionalidad para Eliminar o


Guardar (modificar), pero en caso de que algn equipo la incluya se considerar
en la calificacin.

En caso de agregar la funcionalidad, el botn Eliminar deber llevar a


ejecutar en el modelo la instruccin DELETE de SQL, mientras que el botn
Guardar deber hacer UPDATE de SQL en la tabla. Si lo incluyen tendrn
que investigar la sintaxis de SQL para estas instrucciones.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


5. Pgina de Registro de Artculo

Esta pgina cumplir un propsito, bsicamente:

Insertar un nuevo elemento a la base de datos de la coleccin a travs de un


formulario HTML. Todos los campos debern ser capturados, enviados a un
Servlet controlador e insertados en la base de datos a travs del modelo, en
la tabla ARTICULOS con la instruccin INSERT.
El select de Categoras debe mostrar el nombre de la categora, pero el valor
debe ser el ID de la categora.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.


6. Pgina de Registro de Categora

Esta pgina deber:

Insertar un nuevo elemento a la base de datos de la coleccin a travs de un


formulario HTML. Todos los campos debern ser capturados, enviados a un
Servlet controlador e insertados en la base de datos a travs del modelo, en
la tabla CATEGORIAS con la instruccin INSERT.

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.

Especificaciones Adicionales

Debe usarse el patrn MVC.


Los prototipos mostrados en este documento son solo una sugerencia. Son libres de
usar el formato y diseo que mejor les convenga, siempre y cuando se cumpla con
toda la funcionalidad requerida.
Los campos de captura deben, por lo menos, ser limpiados para evitar XSS (puede
usarse URLEncoder.encode()).
Toda la navegacin debe hacerse a travs del controlador (o controladores, en caso
de que decidan usar ms de uno).
Todas las pginas deben mostrar en alguna parte el nombre del usuario que ingres.
Todas las pginas deben tener un link o botn de Cerrar sesin o Logout, que
invalide la sesin.
Deben incluir una pgina de error genrica.
Para insertar datos iniciales en las categoras usarn estos queries de SQL que
ejecutarn directamente en la base de datos:
INSERT INTO categorias VALUES (1, Peliculas)
INSERT INTO categorias VALUES (2, Libros)
(se ejecutan en la ventana de NetBeans que se abre cuando le dan clic
a View Data).
Si requieren alguna pgina adicional no mostrada en estos prototipos, tienen la
libertad de hacerlo.

Aspectos a Evaluar

Lo ms importante es el diseo lgico y la funcionalidad, sin embargo se asignarn


puntos adicionales por incluir elementos grficos (diseo visual).
El proceso de pruebas que seguir es el que describo a continuacin:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Registrar un nuevo usuario.


Iniciar sesin con el nuevo usuario.
Agregar varios artculos.
Buscar artculos especficos por ttulo.
Entrar a ver el detalle de algn artculo.
Cerrar sesin.
Entrar con un usuario de los que me proporciona el equipo.
Buscar todos los artculos.
Buscar artculos especficos por ttulo.
Entrar a ver el detalle de algn artculo.

[En algunos pasos cometer errores intencionalmente para comprobar cmo los manejan. Hagan
pruebas con distintos errores que piensen que puedan ocurrir.]

Diseo Orientado a Objetos Ing. Romeo A. Snchez L.

Entregables

Cdigo fuente (proyecto de NetBeans) en un archivo ZIP. Todo el cdigo fuente


debe incluir comentarios, por lo menos indicando los autores.
Script SQL para insertar los registros de las tablas ARTICULOS, USUARIOS y
CATEGORIAS.
o Para obtener el script SQL de cada registro, en la ventana de ejecucin SQL
de NetBeans:

Clic derecho en el primer registro, y Show SQL Script for INSERT.


Copiar la instruccin SQL y pegarla en un archivo de texto.
Repetir la operacin para cada registro de la tabla que quieran compartirme para
probar (ir registro por registro les da la oportunidad de excluir los registros que no
quieran compartir).
Todos los SQL de todos los registros vendrn en el mismo archivo, sin importar que
vengan de diferentes tablas.
Guardar el archivo con el nmero de equipo y extensin *.SQL, por ejemplo:
Equipo2.sql
Si por alguna razn agregan una tabla que yo no haya especificado, deben enviarme
el archivo .GRAB que se genera en NetBeans al entrar a Grab Structure, al igual
que los datos.

Reporte en PDF con los elementos conocidos:


o Portada con datos generales de la materia y el equipo, incluyendo los
nombres y nmeros de matrcula de los integrantes.
o Tabla de contenidos (algunos le llaman ndice.)
o Introduccin, explicando en qu consiste el proyecto.
o Desarrollo del Reporte, detallando por cada componente (pgina de vista,
controlador, modelo) sus caractersticas y funcionalidad, cmo crearon el
hash, etc. Esta es la parte ms importante del reporte y debe darme un
panorama completo de qu hicieron en el proyecto y cmo lo hicieron.
Incluyan toda la informacin que consideren relevante para que yo (o
cualquier que la lee) la entienda.
Deben detallar en qu consisti la participacin de cada integrante
del equipo. Quiero saber quin hizo cada parte.
[La calificacin que dar ser la misma para todo el equipo. Es decir, el hecho de
que alguien haya hecho ms que otros no le dar mayor puntuacin, ni el que
alguien no haya hecho casi nada le restar puntos. Es un trabajo en equipo y la
calificacin ser la misma para todos.]

Anexos:
Lista de usuarios y contraseas. Esto es para que yo pueda probar
con los usuarios que agregaron ustedes. Al menos tres usuarios
distintos. No usen sus contraseas reales, por favor.
Diagramas UML (de clase, de secuencia y de actividades, por lo
menos.)
Capturas de pantalla, con las diferentes pginas mostrando datos.
o Bibliografa.
Presentacin de PowerPoint donde expliquen cmo se desarroll el proyecto. Esta
presentacin es la que usarn para las ltimas sesiones de exposicin de proyectos
frente al grupo.
o

10