sábado, 25 de febrero de 2012

POO / Java Apuntes-#2

Continuando con los post de Programación Orientada a Objetos utilizando Java, ahora explicaremos otros conceptos:


¿Que es herencia?

Herencia provee un poderosos y natural mecanismo para organizar y estructurar tu software. Esta sección explicará como las clases heredan estado y comportamiento de las superclases, y explica como derivar una clase de otra utilizando la sintáxis simple provedia por el Lenguaje de Programación Java.


Diferentes tipos de objetos frecuentemente tienen ciertas cifra en común con otros. Las Bicicletas Motañesas, las bicicletas de carretera, las bicicletas de fila, por ejemplo, todas tienen las características de las bicicletas (velocidad actual, ritmo de pedaleo actual, equipo actual). Cada una define ciertas características  que las hacen diferentes: bicicletas de fila tienen dos asientos y dos juegos de manubrios; las bicicletas de carretera tienen manubrios de caída; algunas bicicletas montañesas tienen una anillo de cadena adicional, dandoles un menor radio de equipo.


La programación orientada a aobjetos permite que las clases sean heredadas comunmente usando estados y comportamientos de otras clases. En este ejemplo La Bicicleta ahora se convierte en la superclase de BicicletaMontañesa, BicicletaCarretera, BiciletaFila. En el Lenguaje de Programación Java, cada clase permite tener directamente una superclase, y cada superclase tiene el potencial de tener ilimitado número de subclases:




La sintáxis para crear subclases es simple. Al inicio de la declaración de las clases usa la palabra clave extends, seguido del nombre de la clase de la cual heredará:


class BicicletaMontañesa extends Bicicleta{


  // Nuevos campos y métodos a definir
  // una bicicleta montañesa podría ir acá


}

Esto le da a BicicletaMontañesa los mismos campos y métodos que Bicicleta, todavía permite agregar código exclusivamente para las características que la hacen única. Esto hace que el código para las subclases sea fácil de leer. A la vez, se debe tener cuidado para documentar apropiadamente  los comportamientos para cada definición de  superclase, desde que el código no aparezca en la fuente en el archivo de cada subclase.

¿Que es una interfaz?

Como se ha aprendido, los objetos definen su interacción con el mundo externo a través de métodos que ellos exponen. Los métodos forman la interfaz del objeto con el mundo exterior; Los botones colocados en el frente del televisor, por ejemplo, son interfaces entre tu y la instalación eléctrica en el otro lado de la caja plástica. Presionas el botón de encendido para encender o apagar la television.

En su forma común, una interfaz es un grupo de metodos relacionados con sus cuerpos vacíos. Un comportamiento de la bicicleta, si se especifica como una interfaz, puede aparecer como a continuación:




Interface Bicicleta {
//  Revoluciones por minuto de la llanta
   void cambiarRitmo(int nuevoValor);
   void cambiarEquipo(int nuevoValor);
   void aumentarVelocidad(int incremento);
   void aplicarFrenos(int decremento);
}

Para implementar esta interfaz, el nombre de la clase debera cambiarse (para una marca particula de bicicleta, por ejemplo, como una BicicletaACME), y se utiliza la palabra clave implements en la declaración de la clase.


class BicicletaACME implements Bicicleta {

  // el resto de la clase
  // implementado como antes
}

Implementando una interfaz permite a una clase ser mas formal acerca del comportamiento que promete proveer. Las interfaces forman un contrato entre la clase y el mundo exterior, este contrato esta forzado en el tiempo de cosntrucción por el compilador. Si tu clase pide implementar una interfaz, todos los métodos definidos por la interfaz deberán aparecer en el código fuente de la clase para que pueda compilarse correctamente.

¿Que es un paquete?

Un paquete es un namespace (espacio de nombres), que organizar un conjunto de clases relacionadas e interfaces. Conceptualmente puedes pensar en paquetes es similar a tener diferentes carpetas en la computadora. Puedes guardar páginas HTML en una carpeta, imágenes en otra, y scripts de aplicaciones en otras. Debido a que el software esta escrito en el lenguaje de programación Java puede estar compuesto por cientos o miles de clases individuales, eso da sentido a guardar las cosas organizadas colocando clases relacionadas e interfaces dentro de paquetes.

La plataforma de Java provee una enrome librería de clases (conjunto de paquetes) habilitadas para usarlas en tus propias aplicaciones. Estas librerías son conocidas como “Interfaz de Programación de Aplicaciones”, o “API” por sus siglas en inglés (Application Programming Language). Sus paquetes representan las tareas más comunmente asociadas con los propósitos generales de programación. Pro ejemplo, un objeto String (cadena) contiene estado y comportamiento para un caracter de strings; un objeto de Archvio permite al programador fácilmente crear , eliminar, inspeccionar, comparar, o modificar un archivo en el sistema de archivos; un objeto Socket (conector) permite la creación y el uso de una red de sockets; varios objetos GUI (Graphic User Interface o Interfaz Gráfica de Usuario) controlan los botones y checkboxes y cualquier otro relacionado a las interfaces gráficas. Hay literlamente miles de clases para seleccionarlas. Esto te permite, como programador, enfocarte en el diseño de una aplicación particular, en vez de la infraestructura para hacerla.

La Java Platform API Specification contiene la lista completa de todos los paquetes, interfaces, clases, campos y métodos distribuidos por la Java SE platform (Plataforma de Java Standard Edition). El link: http://docs.oracle.com/javase/7/docs/api/index.html

No hay comentarios:

Publicar un comentario