viernes, 17 de diciembre de 2010

miércoles, 15 de diciembre de 2010

Semana 12 - Interfaces gráficas de usuario

Realicé dos pantallas en Java utilizando el IDE de Eclipse.

La pantalla principal contiene:
* Una sección para mostrar el listado de libros o revistas dados de alta.
* Un botón para eliminar de la lista un libro o revista.
* Un botón para reservar un libro o revista de la lista.
* Una barra de menus con dos menus: Registro y Ayuda.

En el menú Registro contiene:
* Agregar material (es para dar de alta los libros o revistas).

En el menú Ayuda contiene:
* Acerca de... (no muestra nada).
* Salir (Sale del programa).



Capturas de pantallas:

Pantalla principal



Pantalla principal con el menú Registro activado



Pantalla principal con el menú Ayuda activado



Pantalla Agregar Material



Pantalla Agregar Material mostrando los tipos de materiales a dar de alta


------------------------

Link de descarga de la clase Pantalla2.java:
http://www.box.net/shared/f1jvq21l9s

-------------------------

Referencias:

Ejemplos de:
http://eduardomen.blogspot.com/


Tutoriales para programar interfaces gráficas en Java:

http://www.wikilearning.com/curso_gratis/introduccion_al_lenguaje_java-interfaz_grafica_de_usuario_awt/5054-12

http://doutdex.wordpress.com/2007/06/09/gui-graphical-user-interface-interface-grafica-de-usuario-en-java/

http://casidiablo.net/codigo-java-jmenu-jmenubar-jmenuitem-jpopupmenu/


....

martes, 14 de diciembre de 2010

Semana 11 - Pruebas unitarias

Utilicé Java con el IDE de Eclipse.


Link de descarga del código en .rar:

Link de descarga del código en .jar:


El código en .rar funciona utilizando Eclipse, NetBeans, o cualquier IDE que contenga Java.

El archivo en .jar funciona en cualquier máquina que tenga Java.

---------------------------

Fuentes:

Me basé en los tutoriales de Eclipse:


...

domingo, 12 de diciembre de 2010

martes, 30 de noviembre de 2010

Semana 9 – Patrones de diseño

Los patrones de diseño son soluciones a problemas comunes en el desarrollo de software que nos encontramos en el desarrollo de aplicaciones del mundo real.

Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Los patrones de diseño tuvieron un gran éxito en el mundo de la informática a partir de la publicación del libro Design Patterns escrito por el grupo Gang of Four (GoF) compuesto por Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides, en el que se recogían 23 patrones de diseño comunes.

Ellos, clasificaban los patrones de diseño en tres grupos: Creacionales, Estructurales y de Comportamiento.


PATRONES CREACIONALES

Abstract Factory (Fábrica abstracta): Crea una instancia de varias familias de clases.

Builder (Constructor virtual): Separa la construcción de objetos de su representación.

Factory Method (Método de fabricación): Crea una instancia de varias clases derivadas.

Prototype (Prototipo): Crea nuevos objetos clonándolos de una instancia ya existente.

Singleton (Instancia única): Una clase de las que sólo una sola instancia puede existir.


PATRONES ESTRUCTURALES

Adapter (Adaptador): Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.

Bridge (Puente): Desacopla una abstracción de su implementación.

Composite (Objeto compuesto): Una estructura de árbol de objetos simples y compuestos.

Decorator (Envoltorio): Añade funcionalidad a una clase dinámicamente.

Facade (Fachada): Una clase única que representa un subsistema.

Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.

Proxy: Tiene un objeto que representa a otro objeto.



PATRONES DE COMPORTAMIENTO

Chain of Responsibility (Cadena de responsabilidad): Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.

Command (Orden): Encapsular un comando de la petición como un objeto.

Interpreter (Intérprete): Una manera de introducir los elementos de un lenguaje a un programa.

Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.

Mediator (Mediador): Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.

Memento (Recuerdo): Permite volver a estados anteriores del sistema.

Observer (Observador): Una forma de notificar el cambio a una serie de clases.

State (Estado): Alterar el comportamiento de un objeto cuando su estado cambia.

Strategy (Estrategia): Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.

Template Method (Método plantilla): Aplazar los pasos exactos de un algoritmo para una subclase.

Visitor (Visitante): Define una nueva operación a una clase sin cambios.



------------------------

Los ejemplos explicados a continuación no los apliqué a mi proyecto, pero si mencioné ejemplos.

EJEMPLOS DE PATRONES:





------------------------

Fuentes:


...

domingo, 28 de noviembre de 2010

Semana 8 - Diagramas UML de Clase y Actividad en el proyecto

*** MODIFICADO ***

Programa que administra una biblioteca.



Me apoyé en un libro facilitado por un profesor de la FCFM:

Joseph Schmuller, Aprendiendo UML en 24 horas.
Prentince Hall.


...

Semana 7 - Diagramas de actividad de UML

*** MODIFICADO ***

Explicación de los diagramas de actividades y ejemplos:


-------------------------
 
Fuentes:

Joseph Schmuller, Aprendiendo UML en 24 horas.
Prentince Hall.


...

lunes, 8 de noviembre de 2010

Semana 6 - Diagramas de clase de UML

*** MODIFICADO ***

Diagramas de clase de UML

Programa que administra una biblioteca.




El programa contará con la clase principal BIBLIOTECA que cargará lo necesario para ejecutar el programa.

--------------------------

La clase MATERIAL contiene los campos y métodos para los libros y revistas que se prestarán.

La clase LIBRO se hereda de la clase material, hereda sus campos y métodos.
La clase REVISTA también se hereda de la clase material heredando sus campos y métodos.

Los métodos que tendrán los libros y revistas serán: darse de Alta, Baja y Cambios.

--------------------------

La clase PERSONA contiene los campos y métodos de los alumnos y profesores que pueden pedir prestado los libros y revistas.

La clase ALUMNO se hereda de la clase persona, hereda sus campos y métodos.
La clase PROFESOR también se hereda de la clase persona heredando sus campos y métodos.

Los métodos que tendrán los alumnos y profesores serán: llevar un libro o revista, y devolver el libro o revista.

--------------------------

La clase PRESTAMO realizará el préstamo entre la persona y el material a prestar.

--------------------------


Me apoyé en presentaciones:



También me apoyé en un libro facilitado por un profesor de la FCFM:

Joseph Schmuller, Aprendiendo UML en 24 horas.
Prentince Hall.

domingo, 7 de noviembre de 2010

Semana 5 - Definición de proyectos individuales: presentaciones de temas

Tema: Administración de una Biblioteca




Lo presentado anteriormente puede estar sujeto a cambios si así lo requiera a la hora de programar.


...

sábado, 6 de noviembre de 2010

Semana 4 - Documentación y herramientas de desarrollo

Mi elección fue Eclipse (Java).

Versión que utilicé: Eclipse – Europa (3.3.2)


Sitio web donde me apoyé en descargas y tutoriales:


LINKS DE DESCARGA:

Eclipse versión Europa (3.3.2):

Tutorial en PDF:

Tutoriales en videos (16 lecciones):


-------------------------------


Con los tutoriales creé un proyecto que contiene: clases, atributos, métodos, campos, constructores, arreglos de lista, clases de prueba, ciclos, condiciones, etc.

Se trata de una aplicación que administra una librería, en donde se dan de alta libros que tengamos, personas, y cuáles de esas personas han tomado prestado nuestros libros.

El proyecto contiene tres clases en java:

-       Persona: Que tiene de atributos su nombre y el máximo de libros que haya tomado prestados en una pedida.

-       Libro: Que contiene de atributos el título, autor y persona que lo tomó prestado.

-       Mi Librería: Que contiene un nombre, una lista de libros y una lista de personas.




-------------------------------

Pantalla de bienvenida:



Proyecto Mi Librería:






  
Capturas de las clases:
 
Clase Persona





Clase Libro


Clase Mi Librería



En el programa hacemos que existan 2 libros (Grandes Esperanzas y Guerra y Paz) y 2 personas (Jim y Sue) y que cada una de estas personas tome prestado un libro y lo devuelva.


Captura de la clase ejecutada desde Eclipse:




Al finalizar las 16 lecciones, exporté el proyecto para crear la aplicación en .jar y poderlo ejecutar desde la consola:




-------------------------------

COMENTARIOS PERSONALES:

Lo que más me gustó de Eclipse fue el tan usado “Ctrl + 1” llamado Quick Fix, que facilita mucho la programación al desplegar listas de sugerencias al tener errores de compilación.

Lo que no me agradó tanto fue que primero empecé a trabajar con una versión de Eclipse más reciente, Eclipse – Galileo (3.5.0) y tuve muchos problemas con las librerías que no se importaban bien y eso causó problemas a la hora de compilar. Por eso trabajé con la versión 3.3.2.


...

viernes, 8 de octubre de 2010

Semana 3 - Herencia y Polimorfismo

Herencia

Una característica clave en la programación orientada a objetos es la reutilización de software, ya que esto es muy útil, porque si se pudiera reutilizar algo de software que ya existe, que fue probado, depurado y utilizado muchas veces, nos ahorraríamos tiempo y esfuerzo para desarrollar y probar de nuevo.

La herencia es cuando una clase (subclase) se deriva de otra (superclase), de manera que extiende su funcionalidad.

Una subclase hereda todos los miembros (campos, métodos y clases anidadas) de su superclase, como por ejemplo:



Si tenemos una clase Vehículo, esta es una superclase, ya que hereda 2 subclases y además contiene 3 campos. Las subclases Automóvil y Camión heredan a Vehículo, quiere decir que estas también tendrán los 3 campos de Vehículo y además sus campos propios.


Fuentes:

Me apoyé en tutoriales Java para la consulta de la definición herencia:

En este link, se explica otro ejemplo utilizando bibicletas, que también está entendible:

(Imagen) Con este ejemplo me quedó más clara la definición de herencia:



Polimorfismo

Es la capacidad de que una acción o método realice diferentes cosas en el objeto del que está actuando. Es decir, que varias subclases utilicen un mismo método pero de forma distinta.

Por ejemplo:




En la figura anterior se tiene la clase FiguraGeo en donde se tienen las funciones de Área y Perímetro. Las clases Triángulo, Círculo y Cuadrado, heredan de la clase FiguraGeo sus métodos. Y en la clase Main es donde se calcula el área y perímetro según la figura que corresponda, y es aquí en donde se aplica el polimorfismo, ya que se está utilizando el método CalculaAP de manera distinta según la subclase que la utilice.


Fuentes:

Al igual que en la herencia, en el polimorfismo me auxilié de tutoriales Java, en :

En este link, se continúa el ejemplo de las bicicletas pero con el polimorfismo:

(Imagen) Con este ejemplo me quedó más clara la definición de polimorfismo:



VIDEOS

Este video explica de manera muy básica las definiciones de herencia y polimorfismo utilizando ejemplos básicos como animales, figuras geométricas y autos.




En este otro video explican herencia y polimorfismo en Python 3:





________________________________________



Herencia y Polimorfismo aplicado al tema de reservaciones y vuelos en una aerolínea



*** HERENCIA ***

Superclase:
  • Tripulación

Subclases:
  • Capitan
  • Auxiliar_de_vuelo
  • Sobrecargo



* TRIPULACION

Atributos:
Métodos:

·          idCrew
·          Nombre
·          ApellidoPaterno
·          ApellidoMaterno
·          Dirección
·          Teléfono
·          RFC
·          Alta de tripulación
·          Baja de tripulación
·          Modificación de tripulación

* CAPITAN

Atributos:
Métodos:

  TRIPULACION
·          Licencia


* AUXILIAR_DE_VUELO

Atributos:
Métodos:

  TRIPULACION
·          Licencia
·          Categoria (copiloto o auxiliar)


* SOBRECARGO

Atributos:
Métodos:

  TRIPULACION
·          Categoria




*** POLIMORFISMO ***

Al dar de alta a un capitán, un auxiliar de vuelo o un sobrecargo, se utilizan los mismos métodos pero con parámetros diferentes:

AltaCapitan(idCrew, Licencia)
AltaAuxiliar(idCrew, Licencia, Categoria)
AltaSobrecargo(idCrew, Categoria)

...