Pages

Mostrando entradas con la etiqueta Primera Entrega. Mostrar todas las entradas
Mostrando entradas con la etiqueta Primera Entrega. Mostrar todas las entradas

Esqueleto de las clases

Servlets
Verificador

public class Verificador extends HttpServlet 
        private Connection conn;
 private ResultSet rs;
 private String usuario;
 private String password;
  private Boolean valida;
  private Manejador bd;
  private PreparedStatement pst;
  private HttpSession session;
  private Datos datos;
  private Usuario dummy;
  private CarroWeb carro;

*public void init(ServletConfig config){}
public Boolean validaDatos(HttpServletResponse resp){}
public HttpSession creaNuevaSesion(HttpServletRequest req){}
*public void doGet(HttpServletRequest request, HttpServletResponse response){}
*public void doPost(HttpServletRequest request, HttpServletResponse response){}
* Son metodos predefinidos de los servlets e init hace la funcion del constructor.


Registro
public class Registro extends HttpServlet 
       
 private Usuario dummy;
  private Connection conn;
  private PreparedStatement pst,pst2;
  private Manejador bd;
  private HttpSession session;

*public void init(ServletConfig config){}
public void agregarUsuario(HttpServletResponse resp){}
*public void doGet(HttpServletRequest request, HttpServletResponse response){}
*public void doPost(HttpServletRequest request, HttpServletResponse response){}
* Son metodos predefinidos de los servlets e init hace la funcion del constructor.


CarroWebServlet
public class CarroWebServlet extends HttpServlet 
 
 private CarroWeb carroActual;
 private HttpSession session;
 private Articulo libro;
 private ArticuloGadget gadget;
 private String tipoGadget,tipoLibro,remover;

*public void init(ServletConfig config){}
public void removerItem(HttpServletRequest request,HttpServletResponse response){}
public void agregarItem(HttpServletRequest request,HttpServletResponse response){}
public ArticuloGadget Gadget(HttpServletRequest request){}
public Articulo Libro(HttpServletRequest request){}
*public void doGet(HttpServletRequest request, HttpServletResponse response){}
*public void doPost(HttpServletRequest request, HttpServletResponse response){}
* Son metodos predefinidos de los servlets e init hace la funcion del constructor.


Error
public class Error 
        public static StringBuffer buffer;
 public static PrintWriter salida;
public static HttpServletResponse despliegaError(HttpServletResponse resp,String ex){}


Clases
Usuario
public class Usuario 

 private String user;
  private String password;
 private String nombre;
  private String apellidoMaterno;
  private String apellidoPaterno;
  private int edad;
  private String correo;
  private String telefono;
  private String calle;
  private String colonia;
  private String cp;
  private String numero;
  private float credito;
  private Boolean admin;
public Usuario(Object obj){} // Construye a partir de un objeto dado.
public set(type t){} // Para ahorrar espacio se resumen los metodos set de cada atributo
public type get(){} // Para ahorrar espacio se resumen los metodos get de cada atributo.


Articulo
public class Articulo 

        protected String nombre;
 private String autor;
 protected float  precio;
 protected String estado;

public set(type t){} // Para ahorrar espacio se resumen los metodos set de cada atributo
public type get(){} // Para ahorrar espacio se resumen los metodos get de cada atributo.
public Articulo(Object obj){} // Construye a partir de un objeto dado.


ArticuloGadget
public class ArticuloGadget extends Articulo
     private String comentario;

public set(type t){} // Para ahorrar espacio se resumen los metodos set de cada atributo
public type get(){} // Para ahorrar espacio se resumen los metodos get de cada atributo.
public ArticuloGadget(){} // constructor que solo usa super();


CarroWeb
public class CarroWeb 

 private List listadoLibros;
 private List listadoGadgets;
 private Float total, nuevaCantidad;
 private String respuesta;
 private RemovedorDatos rm;
 private String usuario;
public CarroWeb(){}
public set(type t){} // Para ahorrar espacio se resumen los metodos set de cada atributo
public type get(){} // Para ahorrar espacio se resumen los metodos get de cada atributo.
public void Remueve(Articulo libro){}
public void Remueve(ArticuloGadget gadget){}
public void RemueveTodo(){}
public float Total(){}
public String CompletaCompra(float credito){}


RemovedorDatos
public class RemovedorDatos 

 private Connection conn;
 private PreparedStatement pst;
 private Manejador bd;

public RemovedorDatos(){}
public void RemueveGadget(ArticuloGadget gadget){}
public void RemueveLibro(Articulo libro){}
public void RestaCredito(float cantidad, String usuario){}


Manejador
public class Manejador {
 
 private String bdDriver, dataSource;
 private String bdName, user, pass;
 private Connection conn;
 private String encryp;

public Manejador(){}
public Connection abreBD() {}
public String getEncryp(){}
public void Cierra(Connection conn){}


Datos
public class Datos 
 
 private Connection conn;
 private ResultSet rs2;
 private Manejador bd;
 private Usuario dummy;
 private PreparedStatement pst2;
 private Articulo item;
 private ArticuloGadget gadget;

public Datos(){}
public Usuario consigueDatosUsuario(String usuario) {}
public Articulo consigueDatosArticulo(String nombre) {}
public ArticuloGadget consigueDatosGadget(String nombre) {}
public List consigueArticulos() {}
public List consigueGadgets(){}

Modelado de Clases del Proyecto

Para el proyecto del carro web de compras las clases que se consideran importantes a implementar son las siguientes.
-Desgraciadamente aun no tengo claro si el uso de bases de datos me oblige a utilizar nuevos atributos, asi que hasta no investigarlos los agregare.


Clase:
    public Accesos
             importancia:
              esta clase es sumamente importante porque sin ella el sistema no se puede accesar,
              posiblemente se utilize como interface, ya que puede usarse para el
               Log In, Log Out y la  Autentificacion de Usuario.

Atributos

  •     protected-Usuario(clase)   usuario
Metodos
            VerificarUsuario(String nombre, String password)
                Recibe como parametro la respuesta del llenado del formulario de
                verificacion de usuario y despues se hace una consulta
                a la base de datos, y se le asignan valores a la clase Usuario.
 



Clase:
    public Usuario
                importancia:
                   con esta clase se manejaran los datos del usuario, 
                   importantes ya que para ellos fue creado el sistema.
Atributos
  •   private-String     nombres
  •   private-String     apellidoMaterno
  •   private-String     apellidoPaterno
  •   private-String     password
  •   private-double    efectivoDisponible
  •   private-int          idUsuario
  •   private-boolean  administrador
Metodos
         Usuario(String nombres, String apellidoMaterno, String ApellidoPaterno,
                      String password, double efectivoDisponible,
                        int idUsuario, boolean administrador )
              El usuario es creado recibiendo como parametros los atributos
               que son sustraidos de la base de datos.

            VerificarDatos(void)
                El usuario puede ver los valores registrados en su cuenta.
     

           ModificarDatos(dato a modificar)
                se accede a la base de datos 
                y se modifica el valor de dato que se requiere.
     



Clase:
    public ManejadorBD
             importancia:
              Sin el majeador de la base de datos este software no tiene razon de ser.

Atributos

  •     protected-Conecction   
Metodos
            VerificarUsuario(String nombre, String password)
                Recibe como parametro la respuesta del llenado del formulario de
                verificacion de usuario y despues se hace una consulta
                a la base de datos, y se le asignan valores a la clase Usuario.

Primer Programa Orientado a Objetos

En esta entrada del blog se registrara el primer programa orientado a objetos para la clase del taller.

Se especifico que el programa deberia contener:


Por lo menos la creacion de dos objetos.
La clase debera contener por los menos dos atributos.
Utilizar el paradigma de OO.
Por lo menos un metodo.


Bien pasemos a la pequeña descripcion.

Decidi crear como ejemplo una clase Monitor 
y tambien la clase PruebaMonitor para realizar las pruebas.


Los atributos que contiene son:

  • Estado del monitor, un boolean por ende puede ser True o False
  • Contraste, un int de rango 0 a 100
  • Id, un String para diferenciar un monitor de otro.
En cuanto a los metodos, se explican en el codigo, pero a grosso modo son:
  • Encender Monitor, no recibe parametros
  • Apagar Monitor, no recibe parametros
  • Subir Contraste, recibe la cantidad entera de contraste a subir.
  • Bajar Contraste, recibe la cantidad entera de contraste a bajar
  • Get Id, no recibe parametros.
He aqui el codigo de la clase Monitor


Este es el codigo para probar los objetos de la clase monitor.


Ahora veamos que el codigo se ejecuta tal cual es llamado junto al main de la clase PruebaMonitor para verificar que se ejecute correctamente.



Casos De Uso Para El Proyecto

En esta entrada presentare la tabla que escribi con el formato que la Doctora Sara nos sugirió.

Lo que mas destaca es el hecho de que si el usuario o el administrador no hace Log In practicamente no se puede hacer nada.

Ambos actores usuario y administrador, comparten muchas caracteristicas a excepcion del administrador que como es obio tiene mayor cantidad de permisos en cuanto a modificacion y uso del sistema.

Definicion del Proyecto

Despues de mucho meditarlo, decidi implementar un software de un carro de compras web.

Porque?
Bueno existen dos buenas razones, la primera es que deseo implementar sobre la web, en segunda despues de una platica con un empresario me comento sobre la falta de profesionalismo departe de los programadores en cuanto a carros de compra web, lo cual me impulsa a comprobar el porque es tan dificil hacer uno.

Descripcion detallada.

El usuario podra acceder a una pagina de incio en la cual necesitara registrarse o acceder a su cuenta, despues pasara a el menu de usuario donde podra validar sus datos, nombre, edad, apellido, trabajo, cantidad de efectivo disponible e historial de transacciones. Si todos los datos son correctos y el cliente esta conforme, tendra la opcion de pasar a realizar sus compras en determinada tienda o sucursal.
Estando en la sucursal o tienda de su preferencia, podra buscar los articulos que necesita o simplemente inspeccionar que articulo tiene disponible la tienda, si el cliente encuentra algun articulo de su agrado puede agregarlo su carro web de compras. El usuario podra verificar en cualquier momento el estado de su carro de compras, la cantidad de articulos que tiene y sus precios, al verificar el estado de su carro se le proporcionara el usuario el coste total de los articulos actualmente seleccionados para que tome en cuenta el efectivo que dispone. Tambien desde la opcion de verificacion podra remover articulos de su carro de compras.

Tambien estara el usuario especial, un administrador el cual podra modificar a placer la base de datos para agregar articulos, modificarlos, borrarlos, y agregar efectivo a los usuarios.

Porque el administrador podra agregar efectivo a los usuarios?
la respuesta a ello, es porque no se manejan tarjetas de credito, ni depositos, la forma de abonar dinero es directamente con el administrador(digase empresa) para que al momento de su "deposito" el administrador personalmente le agrege dicha cantidad a la cuenta del usuario.

En cuanto a los articulos a vender, la idea es que sean libros principalmente pero se pueden agregar mas  articulos dependiendo las necesidades.



Carro de compras web




- Funciones -

  Acceder como usuario. 
Log in/out


  Verificar datos de la cuenta. 
Comprobacion de datos


  Modificar datos de la cuenta. 
Modificacion de datos


  Añadir objetos al carro. 
Añadir compra


  Quitar objetos del carro. 
Remover compra


  Verificar los objetos del carro. 
Checar articulos a comprar





Sobre la implementacion.

Pienso usar como lenguaje de programacion Java.
Concretamente pienso utilizar Servlets y Java Server Pages para la implementacion final, tambien usare el Rdbms Mysql para el uso de bases de datos.


Referencia:

Imagen carro de compras web
http://www.jevaplastic.com.mx/persona-con-carrito-de-compras-245x300.gif

referencia de Mysql
http://www.mysql.com/

referencia de los JSP
http://www.desarrolloweb.com/articulos/831.php

referencia de los Servlets de java
http://www.oracle.com/technetwork/java/javaee/servlet/index.html

Instalacion de Herramientas de Trabajo

Sistema Operativo a usar: GNU/Linux en su distribución Arch.


He usado esta distribución de linux durante 6 meses y por eso he decidido desarrollar mi sistema sobre Arch.


Las herramientas que instalare son:

Emacs
Para el desarrollo de mi sistema he preferido usar un editor de textos practico, ya que los IDE's suelen auto generar mucho código y mas aun si se utilizan servlets o paginas web.
Bien, para instalar emacs no se necesita mucho simplemente
instalaremos desde los repositorios.


verificaremos en donde se instalo.



                                    


Openjdk


Es el kit en su versión libre para desarrollo de java. Personalmente apoyo al software libre así que usaremos el open. También funciona si se instala el Sunjdk que es mantenido por la empresa Sun Microsystems.
Con este jdk podremos ejecutar y compilar los programas en java, en esta caso los Servlets.
Para este caso instalaremos la version 6, porque la 7 no esta totalmente actualizada y es mejor experimentar con ella después.

Para instalar el entorno de desarrollo de java simplemente usamos el gestor de paquetes para descargar lo necesario.


Yo cuento con el jdk por eso me dice que si lo quiero reinstalar, pero si no se cuenta con el, les dará la opción para descargarlo e instalarlo automáticamente.

Para comprobar que si esta instalado el sdk podemos verificar si están instalados en el sistema buscando su dirección con el comando which.




Tomcat

Tomcat es una herramienta que se utiliza para servir paginas html, java server pages y servlets. ( se le pueden agregar plug-ins para que soporte php, rails entre otros, sin embargo para eso es mejor usar apache )
Desde tomcat podemos ejecutar nuestros servlets, paginas html y jsp.
Para mas informacion podemos visitar la pagina oficial de tomcat.

Instalación

Hay distintas maneras de instalar tomcat, para comodidad y mayor rapidez al modificar los archivos de tomcat descargaremos la versión portable.

Primero descargaremos el .tar.gz con el comando wget para no entrar al navegador.


Esperamos a que la descarga termine.




Después utilizaremos el comando tar con parámetros para 
z [descomprimir el gunzip]
x [para extraer el archivo]
v [para visualizar lo que esta pasando]
f [forzar la sobre-escritura si ya fue extraído anteriormente]


Gracias al parámetro v podemos ver lo que esta pasando.




Ahora ya podemos iniciar tomcat, para ellos nos movemos a la carpeta bin ( dentro de tomcat ) e iniciamos el script startup.sh


Al ejecutarlo nos dará el informe de los directorios que utilizara.




Listo ahora solo ingresemos mediante nuestro localhost en el puerto 8080
( Por lo general tomcat viene con este puerto por defecto, si estan usando otro servidor como apache es posible que tengan conflicto de puertos ).



Si les apareció esa ventana significa que todo esta bien, solo faltaría configurar los usuarios para el tomcat, lo cual es fácil, solo hay que ir a la carpeta de conf dentro de tomcat. Deberá contener lo siguiente:



Utilizando emacs en su modo consola abriremos el archivo tomcat-users.xml 



Este pequeño archivo contiene la descripción de los roles o actividades que pueden realizar los usuarios, en la parte final aparece un ejemplo bajo comentario.


La etiqueta role marca el comienzo de la descripción de un rol o actividad.
Esta acepta como atributo el nombre del rol dentro de tomcat, utilizaremos algunos importantes como son: 
  • manager-gui para acceso a la interfaz grafica en HTML y el estado del servidor
  • manager-script acceso a la interfaz de texto y el estado del servidor
  • admin-gui para tener permisos en la interfaz grafica del Host manager
  • admin-script para tener permisos en la interfaz de texto del Host manager.
Los roles deberían quedar así.


Despues agregamos a los usuarios con la etiqueta user.
Esta acepta como atributos:
  • username especificar el nombre del usuario
  • password especificar la contraseña del usuario
  • roles especificar los roles a desempeñar por el usuario



Ahora vamos a tomcat en la sección manager App para verificar que todo este bien


Nos pedira autentificarnos con el usuario y contraseña que acabamos de escribir en el tomcat-users.xml, ingresamos los datos y aparecera una pantalla nueva.


Listo! ahora ya podemos iniciar la creación de nuestros Jsp y Servlets.


Referenciasde informacion e imagenes:

Referencias de emacs
 http://www.gnu.org/software/emacs/   
 https://wiki.archlinux.org/index.php/Emacs
 https://ccrma.stanford.edu/guides/package/emacs/emacs.html
 imagen  http://picandocodigo.net/wp-content/uploads/2010/01/emacs-23.png

Referencias de Tomcat
 http://tomcat.apache.org/
 http://faqhosting.com.ar/?p=123
 http://www.osmosislatina.com/tomcat/instalacion.htm
 imagen http://nullpointerexception.tk/wp-content/uploads/images/tomcat.png

Referencias jdk
 http://openjdk.java.net/
 imagen http://openjdk.java.net/images/duke-thinking.png
                     
Referencias Archlinux
 https://wiki.archlinux.org/index.php/Main_Page
 imagen http://www.muylinux.com/wp-content/uploads/2011/03/Arch-Linux.png