jueves, 13 de octubre de 2011

Herencia y Polimorfismo

**Entrega 2**

Buenos días, en esta entrada hablaré sobre la herencia y el polimorfismo aplicado a mi proyecto, a continuación unas breves definiciones de lo que es:


Herencia

La herencia es uno de los mecanismos de la programación orientada a objetos, por medio del cual una clase se deriva de otra, llamada entonces clase base o clase padre,(a veces se le denomina superclase pero no es muy comun), de manera que extiende su funcionalidad. Una de sus funciones más importantes es la de proveer Polimorfismo y late binding.

En orientación a objetos la herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.

Polimorfismo

En programación orientada a objetos el polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente.

Se puede clasificar el polimorfismo en dos grandes clases:

  • Polimorfismo dinámico (o polimorfismo paramétrico): es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
  • Polimorfismo estático (o polimorfismo ad hoc): es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados.

Entonces la herencia permite que los atributos y métodos de una clase "padre" puedan ser "heredados" o incorporados a clases "hijas", ademas de esto las clases hijas pueden tener sus métodos y atributos aparte de los que les fueron heredados.  Con respecto a polimorfismo, es el uso de estos métodos heredados de una clase "padre"  pero haciendo uso de estos métodos de una manera diferente.



Herencia y Polimorfismo en mi proyecto

En mi proyecto actualmente con lo que llevo no he aplicado herencia y tengo pensado no usarla porque solo manejare una clase llamada "Contacto" que tendrá los mismos atributos para cada objeto que sea contacto. No habrá atributos o métodos que un objeto si tenga y que otro objeto no.

El polimorfismo al igual que la herencia por el momento aun no tengo pensado implementarlo en mi proyecto, ya que los métodos que estoy usando hasta ahora son de la misma clase y todos los objetos de esta clase usarán de la misma manera los métodos.




Fuentes:




Nota Actual


Esta entrada ya la tenía hecha, pero no la había subido porque no estaba seguro si ocuparía algo de herencia o polimorfismo en relacion con la clase contacto, que era la unica que manejaba, pero con el proyecto ya terminado solo la utilice para la creación de las ventanas, aplicada de este modo:


Para la ventana principal

public class Interfaz extends JFrame implements  ActionListener
{
 static int id;
 static String numero;
 static boolean recarga = false;
 static int indx = 0;
 
       private JPanel panel_2;
       private JButton btn_agregar;
       private JButton btn_modificar;
       .
       .
       .


Para la ventana agregar

public class agregar extends JFrame implements ActionListener{
 
    private JLabel nombre;
    private JLabel apellido;
    private JTextField txt_nombre;
    private JTextField apellido1;
    private JTextField apellido2;
    .
    .
    . 



Para la ventana Modificar

public class modificar extends JFrame implements ActionListener{
 
    private JLabel nombre;
    private JLabel apellido;
    private JTextField txt_nombre;
    private JTextField apellido1;
    private JTextField apellido2;
    .
    .
    .


    

lunes, 10 de octubre de 2011

Documentación Técnica

**Entrega 2**

JavaDoc


Javadoc es una utilidad de Oracle para la generación de documentación de APIs en formato HTML a partir de código fuente Java. Javadoc es el estándar de la industria para documentar clases de Java. La mayoría de los IDEs los generan automáticamente.

Mi documentación técnica la realicé con el software JavaDoc, con base a mis archivos de clase de código fuente. Utilicé este software porque considero que es sencillo y genera una buena documentación .

Para poderla realizar primero abrí la terminal, me desplace hacia la carpeta donde tenia el código de mi proyecto y utilicé el comando javadoc *.java y empezó a generar la documentación.

Generó varios archivos HTML de los cuales el principal es el "index" en donde se muestra la lista de las clases, su descripción, entre otras cosas.

Al abrir el archivo index apareció la siguiente pantalla donde se puede apreciar mejor lo anteriormente mencionado:



Captura de mi Documentación Técnica


Enlace de Descarga:



Referencias:

http://es.wikipedia.org/wiki/Javadoc  - Javadoc

Autogeneración de Código y Diagrama UML

**Entrega 2**

Hola a todos , esta entrada es sobre la auto generación de código de mi proyecto y el diagrama UML que elaboré para esto con el software Umbrello.


DIAGRAMA UML


El diagrama consta básicamente de 2 clases + 3 que son importadas.

Inicio: Contiene la clase Main y maneja la información con respecto a la clase Contacto.

Contacto: Es la clase con la que se maneja la información de un contacto, atributos, constructor , métodos.

Scanner: Es una clase importada para lectura de teclado.

FileWriter y PrintWriter: Son clases de la librería "java.io"para el manejo de archivos.




Código

Después de generar el código usando el asistente, este fue el resultado.  Básicamente las únicas clases que importan son la de inicio y contacto.



Vista Previa de la clase Inicio


Vista Previa de la clase Contacto




Observaciones y Comparación con mi código


El código que obtuve mediante el diagrama UML era similar al que hice, como por ejemplo las variables, y la estructura. Las diferencias fueron las siguientes:

  • En los métodos, se generaron un método "get" y otro método "set", en los métodos que yo utilicé solo eran para recibir información de una clase y no para modificarla.

  • Las notas que agregué en el diagrama las convirtió en comentarios para usarlas en la  documentación utilizando el doble asterisco ** y agregó notas como "@return the value of nombre" para indicar que el método regresaba la variable "nombre" y algunas otras, para facilitar la documentación técnica.

  • Se Agregaron algunas descripciones en inglés sobre los métodos y añadió notas como cuales eran las clases, el constructor y los métodos.


Conclusión

Me pareció interesante utilizar la autogeneración del código ya que de esta manera se genera rápidamente un  esqueleto del programa,  esto ayuda a  agilizar el proceso de programar  teniendo previamente las clases y métodos, ya solo haría faltaría añadir las instrucciones de los métodos.