Showing posts with label POO. Show all posts
Showing posts with label POO. Show all posts

May 19, 2011

Taller Proyecto!

Descripcion...
Buene mi proyecto trata sobre una cartera de clientes con la cual puedo agregar,borrar, buscar y desplegar la tabla con la busqueda realizada. Ademas puedo tomar el pedido que el cliente quiera realizar, por cuestiones de tiempo no pude terminar lo que una base datos con las articulos disponibles y comparar si esxie el articulo o no.

Patrones de diseño...
Como patron de diseño implemente el llamado Prototipo, este patron mas que nada es aplicar herencia a nuestro programa. Esto lo utilice al heredar la base de datos a todas las clases, asi como tambien utilizar jFrame en todas mis ventanas. Eston son considerados patrones de diseño que ya vienen con Java.


Eventos, Excepciones y Errores...
como ejemplo de eventos en mi programa lo que utilice fueron los actionListeners e ItemListeners para tomar mediante clicks a un boton lo que el cliente va escogiendo.




Interfaz grafica....
En mi interfaz grafica lo que utilice fue JFrame, como componentes utilice lo que fue botones, campos de texto, checkbox y etiquetas o labels.
En las ventanas implemente lo que fue ActionListeners e ItemListeners. Tambien las ventanas las diseñe de dos maneras diferentes, en algunas ventanas no utilice Fowlayout mientras que en otras utilice Gridlayout y BOrderlayout.
Tambien lo que realice fue diseñar una ventana con una tabla dentro de ella que muestra las consultas que se realizan.




Sistemas Ditribuidos
Considero que mi sistema si se puede utilizar como sistema distribuido ya que se puede tener una base de datos general en algun servidor y cada tienda o lugar que tenga el software tendra su tabla, ademas de poder distribuir los metodos para hacer las eficiente el sistema y mas veloz.

May 10, 2011

Java RMI...

Java RMI siginifica Sistema de Invocacióon remota de Java.

Este sistema lo que permite hacer es que mientras estemos ejecutando algún programa de java en alguna máquina virtual, permite al objeto que se este ejecutando llamar a los métodos de otro objeto diferente que esté en una maquina virtual diferente.

Cabe aclarar que para utilizar RMI los dos programas deben estar codificados en java, si están en diferentes lenguajes lo que se podría utilizar es IDL.

Una forma mas sencilla de definir RMI es utilizar las funciones de un programa, desde otro programa que se encuentra en otra máquina.

Las ventajas de utilizar este sistema es: tener el mismo programa distribuido en distintas máquinas y con esto dividir la carga entre varios hosts y hacer mucho mas rapido y eficiente el sistema.

Otra ventaja sería exportar un objeto y tenerlo disponible en la red y esperar alguna conexión al puerto TCP y con esto un cliente puede conectarse e invocar los distintos métodos que contenga el programa.

Un ejemplo de este sistema es un chat, ya que todos podemos tener el sistema y nos conectamos a un host y podemos invocar los métodos que tiene el programa.

Aquí abajo dejo los links de los cuales obtuve la información, en el segundo link podrán encontrar un ejemplo explicando como realizarlo y la explicacion de las líneas.

http://www.programacion.com/articulo/invocacion_remota_de_metodos_rmi_107

http://casidiablo.net/rmi-%C2%BFque-es-un-ejemplo-sencillo-con-rmi/

May 8, 2011

Pruebas unitarias con JUnit!

Las pruebas unitarias comprueban que el código realizado hace lo que se espera que haga, éstas son creadas por los desarrolladores del software y son fáciles de ejecutar.

Estas pruebas nos permiten hacerle mejoras a nuestro código y con una mayor confianza ya que sabremos más facil donde puede encontrarse el error. Con estas pruebas podemos hacer pruebas continuas a todo nuestro código y cada vez hacerlo mejor y más ordenado y entendible para nosotros.

Con estas pruebas nos aseguramos que cada clase funciona correctamente por separado, ya después con pruebas de integración se puede asegurar el funcionamiento correcto de todo el sistema.

Las características de una buena Prueba Unitaria son:
1- Debe ser automatizable
2- Debe cubrir la mayor parte del código, sino es que todo.
3- Que se puede ejecutar cualquier cantidad de veces, no sólo una vez.
4- Debe tomarse con la misma seriedad como si fuese el código o la documentación.

JUnit

Es un conjunto de bibliotecas que son utilizadas para la creacion de pruebas unitarias. Estas bibliotecas fueron creadas por Erich Gamma y Kent Beck

Estas bibliotecas proveen al usuario de un conjunto de herrmientas, clases y métodos que facilitan la creación de pruebas unitarias o de integración.

Para poder utilizar estas librerias debemos descargarlas de la misma página de JUnit, ya que es software libre. Aqui les dejo el link de Descarga


En esa página pueden elegir el paquete que sea adecuado para su sistema operativo (Y)

Fuentes

http://www.slideshare.net/ggarber/pruebas-unitarias
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=Junit4Eclipse
http://es.wikipedia.org/wiki/JUnit

May 3, 2011

Tutorial Java...

Este post es solo para dejar un link a unos tutoriales de java. En estos videos pueden encontrar muchas cosas sobre lo que estamos utilizando para nuestros proyectos, desde como instalar eclipse, crear una clase, polimorfismo, herencia, GUI's, JDBC (para las bases de datos con MySQL), etc.

Espero les sea de gran ayuda, es un canal de youtube. Los videos estan muy completos, de ahi e sacado muchas cosas para aplicarlas a mi proyecto

http://www.youtube.com/user/niktutos

MySQL...

Bueno esta entrada es solo para dejarles un link a un tutorial para crear las bases de datos y tablas.

Ahi encontraran como crear paso a paso las bases de datos y tablas desde la terminal de ubuntu. Se encuentran los comandos mas sencillos y los que mas se utilizan espero que se les sea de gran ayuda (Y)

http://dev.mysql.com/doc/refman/5.0/es/database-use.html

March 31, 2011

Avance medio Curso...


Descripción

El proyecto que estoy realizando es sobre un software administrativo con el cual manejare los datos de los clientes frecuentes, esta información la manejare con bases de datos. La información que estará en estas base de datos es: nombre del cliente, domicilio, teléfono y mail

El software también manejará el uso de un inventario de los productos que manejará la empresa. De igual manera, bases de datos controlarán el número en existencia de los productos o materiales que tenga la bodega

Otra operación que realizará el software será la colocación de pedidos de cada cliente.

Herramientas

* Como plataforma de desarrollo utilizaré Ubuntu
*Como lenguaje, utilizaré Java.
*MySQL para las bases de datos.
*Emacas para realizar el código de mi proyecto.

Descripción de clases


  • Cliente: Los atributos de esta clase son: nombre, direccion, telefono, e-mail. Como método tendrá sólo el constructor.
  • Cartera: Esta clase más que nada será la base de datos, en la cual estará la información de cada cliente así como también el pedido que realizó. Como atributos tiene: password, usuario, driver. Y los métodos serán: BDConex (es la conexión a la base de datos) y MostrarContenido.
  • Login: Esta clase será para accesar a la ventana principal del software. Los atributos son: usuario y pass. Como métodos tiene: Comparación (este método para comparar con la información de una base de datos, para saber si el usuario existe o no), Acceso (mostrara un mensaje de entrada al usuario o en caso de estar incorrecto mostrara un mensaje de error).
  • Nota: Esta clase es para colocar el pedido que el cliente realiza. Los atributos son: NombreCliente, Articulo, Cantidad, Costo y Total. Los métodos que se encuentran aquí son: Busqueda (para encontrar el artículo en la base de datos del inventario), Calcular (para realizar los cálculos del precio del artículo, si es que lleva más de uno) y Monto (para calcular el total).
  • Factura: Esta clase hereda los atributos de nota, ya que será sólo para imprimir los datos en un pdf. De métodos tendrá: Imprimir (imprimirá en un pdf el nombre del cliente, los artículos, el precio unitario, la cantidad de artículos y el monto total)
  • Inventario: Esta es una base de datos en la que se encuentran los productos en existencia. Los atributos son: usuario, password, articulo, cantidad. Y cómo métodos son: alta (para dar de alta artículos), baja(para eliminar artículos cada vez que se realiza un pedido)
  • VentanaPrincipal: En esta clase es donde se darán de alta los clientes, además podrá modificarse la información de un cliente en caso de que se necesite. Los atributos de esta clase son: cliente y nota. Y los métodos que utiliza son: alta, modificar y pedido.


Herencia

Como podran ver la herencia la manejo en lo que es la clase Nota y la clase Factura, ya que herada todos los atributos, para manejar lo que es la impresión de la factura.


Documentación

Para realizar la documentación utilizare javadoc ya que me parece sencilla de utilizar esta herramienta.


Detección de eventos y errores ...

Hasta el momento los errores, eventos y excepciones en mi proyecto son:

Al hacer click en los botones de Login y de las ventanas para hacer las consultas.

Los eventos que me faltan por considerar al hacer click los botones son: moverme a través de los campos de las ventanas mediante tabs, otro evento a considerar es que al dar enter lo tome como si se hiciera click en el botón de Aceptar. Ya que todo esto hasta el momento sólo lo realizo mediante clicks en los campos y en los botones

Algunos errores que tengo en el proyecto es tener en la base de datos clientes con el mismo nombre o productos con mismo nombre o código de id.

*¿Cómo los manejaré?
Bueno en lo que son los eventos que me faltan por considerar los puedo corregir utilizando listeners en mi código para tambien considerar esos eventos.

En lo que es tener nombres repetidos, lo que puedo hacer es diferenciarlos mediante un id o algo por el estilo.

Saludos!!

March 30, 2011

Patrones de Diseño!!

Los patrones de diseño son esqueletos de las soluciones a los problemas que se presentan más comúnmente en el desarrollo de algún software. Esto quiere decir que brindan una solución que ya se encuentra probada y documentada a problemas de desarrollo de software.

Existen distintos tipos de patrones:
*Creacionales: éste se utiliza para solucionar problemas de inicialización y de configuración de objetos.
*Estructurales: se ocupan de cómo las clases y objetos se agrupan.
*De Comportaniento: describe la comunicación entre objetos y clases.

Algunos ejemplos de patrones de diseño son los siguientes:

Prototipo (Prototype)
Tipo: Creación

Este patron de diseño consiste en crear nuevos objetos, pero son duplicados de una instancia que tenemos como prototipo

Este patrón se utiliza para evitar subclases y para evitar estar creando objetos, ya que esto puede hacer lenta la aplicación.

Para utilizar este patrón de diseño se necesita tener una clase abstracta con el método clone(), esto para no estar volviendo a escribir el mismo código para hacer uso del operador new() y estar creando demasiados objetos. En vez de esto, se llama al método clone(), de la clase prototipo, y se crea el duplicado de esa instancia.

Estrategia (Strategy)
Tipo: Comportamiento

En este patrón el objeto cliente puede elegir el algoritmo que mas le convenga de un conjunto de algoritmos y tiene la posibilidad de intercambiarlo según sus necesidades

Con esto el objeto cliente puede elegir el algoritmo que desee o el que crea mas conveniente.

Este partrón lo vemos aplicado cuando un programa ofrece un servicio o una función y puede ser realizada de distintas maneras

March 15, 2011

Diagrama UML!

Taller de POO!

Este es el diagrama que realizamos en clase de taller de POO. Para ver la imagen más grande hagan click en ella

February 24, 2011

January 27, 2011

Proyecto POO

Bueno la idea que tengo par mi proyecto es hacer un sistema administrativo

el progama permitira ver las ganancias de cada venta que se haga altas de los clientes, para que cada cleinte pueda accesar a la base de datos de los objetos que tenemos en inventario y poder colocar algun objeto que no tengamos para poder traerlo despues;  tambien se podra ver cuantos objetos quedan e ir quitandolo de la bodega cad vez que se hace alguna venta de algo, Hacer una lista de los objetos que se deben pedir para surtir la bodega. Bueno esta es la idea de lo que hare

Esto lo pienso realizar en python, o sino en java para conocer este lenguaje del cual se muy poco

El programa tendra una clase, con la cual podre dar de alta a cada cliente, darlos de baja tambien en que caso de ya no sean consumidores de esta tienda y consultar sus ultimas compras, esto es ver cuanto fue la cantidad que han comprado,

Crear una clase para crear un inventario, otra clase para hacer una lista de los objetos que faltan

Y una clase para crear como objeto los clientes, y otra para crear los pedidos.

Esta es la idea que hasta el momento tengo.

January 24, 2011

POO! 1ra actividad

Dra. Sara Garza
Taller de Programación Orientada a Objetos    Martes M1-M2

Bueno este mi primer programa de programación orientada a objetos, el programa se trata sobre un cine en el cual te indica en pantalla los boletos que se compraran, los boletos restantes, la cantidad a pagar o ganancia.

El programa lo realice en python
Atributos
cantidadboletos
precio

Métodos
Disponibles() --> verifica si hay boletos disponibles en caso de no haber, despliega un mensaje en pantalla
Venta() --> pregunta cuantos boletos se desean comprar
Restantes()--> indica cuantos son los boletos que quedan para esa sala
Ganancia() --> muestra la cantidad de dinero que se generó en esa compra


#!/usr/bin/python

cantidadboletos = 100
precio = 30.50 
class classCine:
 def Disponibles(self,):
  print "Bienvenidos!\n"
  if (cantidadboletos == 0):
   print "No hay boletos disponibles"

 def Venta(self):
  self.compra = input ("Cuantos boletos quieres comprar? --> ")
  

 def Restantes(self):
  self.Restan = cantidadboletos - self.compra  
  print "\nlos boletos que restan son : %d\n" % self.Restan

 def Ganancia(self):
  self.entrada = self.compra * precio
  print "la ganancia es de %d \n\n" % self.entrada

cliente1 = classCine()
cliente1.Disponibles()
cliente1.Venta()
cliente1.Restantes()
cliente1.Ganancia()
cliente2 = classCine()
cliente2.Disponibles()
cliente2.Venta()
cliente2.Restantes()
cliente2.Ganancia()