viernes, 14 de mayo de 2010

Interfaces en Java


Interfaces en Java

Una interfaz en java es un conjunto de métodos abstractos y propiedades.
En ellas se especifica qué se debe hacer pero no su implementación.
Serán las clases que implementen estas interfaces las que describan la lógica
del comportamiento de los métodos.

Ventajas al utilizar interfaces:
  • Se organiza la programación.
  • Obligar a que ciertas clases utilicen los mismos métodos (nombres y parámetros).
  • Establecer relaciones entre clases que no estén relacionadas.
Cómo usarlas?
Java utiliza dos palabras reservadas para trabajar con interfaces que soninterface e implements.
Para declarar una interfaz se debe seguir el siguiente orden:
modificador_acceso interface NombreInterfaz
{
    código de interfaz
}

El modificador de acceso permitido dentro de una interfaz es public o puede no existir.
Los atributos que definamos en el cuerpo de la interfaz serán atributos de tipo constante
en las clases en las que se implemente.

Para implementar una interfaz en una clase se debe seguir el siguiente orden:
modificador_acceso NombreClase implements NombreInterfaz1 [, NombreInterfaz2]

NOTA: Una clase puede implementar varias interfaces,
separando los nombres por comas.
Ejemplo:
Definición de una interfaz:
interface Nave
{
public static final int VIDA = 100;


public abstract void moverPosicion (int x, int y);
public abstract void disparar();
.....
}
Uso de la interfaz definida:

public class NaveJugador implements Nave
{
public void moverPosicion (int x, int y)
{
//Implementación del método
}

public void disparar()

{
//Implementación del método
}
.....
}
En resumen los métodos forman la interfaz del objeto con el mundo exterior, un ejemplo, los botones en el frente del televisor, son la interfaz entre el usuario y el cableado eléctrico en el otro lado de la carcasa de plástico. Presiona el botón "POWER" para encender o apagar el televisor.
En su forma más común, una interfaz es un grupo de métodos relacionados con cuerpos vacíos. El comportamiento de una bicicleta, si se especifica como una interfaz, podría aparecer como sigue:
interface Bicicleta
{
void changeCadence(int newValue); // Revoluciones de la rueda por minuto
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
Para implementar esta interfaz, el nombre de la clase debe cambiar (a una marca concreta de la bicicleta, por ejemplo, como ACMEBicycle), y tendrá que utilizar la palabra clave implements en la declaración de la clase:
ACMEBicycle clase implements Bicicleta (// resto de esta clase implementada
como antes)
Al implementar una interfaz esto permite que la clase se vuelva más formal sobre el comportamiento que se compromete a proporcionar. Para crea una interfaz:

Conceptos Básicos de Programación en Java


¿Qué es Programación Orientada a Objetos (P.O.O.) y que ventajas tiene?

Es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas de ordenador. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento.
La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

¿Qué es un Objeto en Programación?

Un objeto es en realidad un conjunto de métodos (funciones y procedimientos), todos ellos relacionados con un determinado concepto del mundo real. Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad: El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).

El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.

La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

La programación orientada a objetos, expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener, y reutilizar.

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.

El Estado de un objeto es como describir todos los detalles de cierto objeto en un instante determinado así que cada vez que los atributos cambian, se puede decir que el objeto cambia de estado.

¿Qué son los Métodos y los Atributos?
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

¿Qué es Java?
Java es un lenguaje de programación, el paradigma es orientado a objetos y fue desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

¿Por qué Java?
Existen distintas Teorías acerca de por qué los creadores de Java lo nombraron de esta manera, y las más conocidas con:
  1. Los diseñadores en un momento de descanso fueron a tomar un café y cuando llegó la taza caliente echando humo a uno de ellos se le iluminó el coco y se acordó que en la isla de Java producían de los mejores cafés del mundo, y como que le quedó sonando el nombre y lo comunicó a los otros.
  2. Su razón de ser y su nombre se relaciona con la clase de café que tomaban los Programadores de Sun, Java es una clase de café de la península de Sumatra.
  3. El nombre de Java se dio porque los creadores, concretaron el proyecto de crear un lenguaje multiplataforma “inicialmente para electrodomésticos”, en un café....mientras disfrutaban de la caliente bebida.
  4. No está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus creadores: James Gosling,Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más").
  5. El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Java tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas.
  6. La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de cafe caliente. Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE. Otros simplemente dicen que el nombre fue sacado al parecer de una lista aleatoria de palabras.
¿Cuál IDE se utilizará?
El IDE (Integrated Development Environment) o Entorno de Desarrollo Integrado, también conocido como entorno de diseño integrado o el entorno de depuración integrado es una aplicación de software que proporciona las más completas instalaciones para los programadores de computadoras para el desarrollo de software. Un IDE normalmente consta de:
  • Un editor de código fuente
  • Un compilador y / o un intérprete
  • Construir herramientas de automatización de un depurador
A veces, un sistema de control de versiones y varias herramientas integradas para simplificar la construcción de una interfaz gráfica de usuario. Muchos IDEs modernos también tienen un navegador de clases, un inspector de objetos, y un diagrama de la jerarquía de clases, para su uso con objeto de desarrollo de software orientado.
Para nuestro caso utilizaremos el propio IDE desarrollado por Sun Microsystems llamado NetBeans.



¿Qué hace a Java diferente?
Principalmente una característica que lo hace único es que es independiente de la Plataforma, del Sistema Operativo y del Hardware, lo que lo hace compatible con cualquier Computador, y portable, cumpliendo el axioma de Java "Programe una vez, y Ejecute donde sea" - ’’Write Once, Run Everywhere’’’.

¿Cómo se hace esto?
Primero se compila el código fuente escrito en lenguaje Java, para generar un código conocido como “bytecode” (específicamente Java bytecode),las cuales son instrucciones máquina simplificadas específicas de la plataforma Java. Esta pieza está “a medio camino” entre el código fuente y el código máquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en la máquina virtual (JVM), un programa escrito en código nativo de la plataforma destino (que es el que entiende el hardware), que interpreta y ejecuta el código.




Herencia

Básicamente la Herencia en Java nos permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar.
La Clase Padre es conocida también como Superclase, mientras que la Clase Hija es conocida como Subclase.
Java no soporta la herencia múltiple, es como en la vida real pues no podemos tener dos padres o dos madres, pero compensa esto implementando interfaces que emulan la herencia múltiple.
La importancia de la herencia radica en que la clase hija o subclase puede adicionar características y comportamientos, y también redefinir o sobreescribir los métodos heredados de la clase padre.
Por eso una subclase es mas especifica que su superclase y representa un grupo mas pequeño objetos porque tienen caracteristicas mas detalladas que los elementos de la superclase.
En Java, la clase Padre de todas las clases existentes por defecto o creadas por nosotros es la clase Object y cuando una clase no tiene una Superclase explícita, su Superclase es la Clase Object.
En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos heredar.

Ejm:
public class Empleado extends Persona
{//Atributos
private float sueldo;
private String ruc, cargo;
//Constructor
public Empleado(String sexo)
{
super(sexo);
}//Fin de Constructor
}
Lo que significa que la Clase Empleado está heredando de la Clase Persona, la palabra super es utilizada si se necesita llamar a los métodos de la clase padre desde la clase hija o de una que ha reemplazado ese método. Se usa la palabra super seguido del operador punto (.)

Ejm:
import MiClasePadre;
public class MiClaseHija extends MiClasePadre
{
public void Suma_a_i( int j )
{
i = i + ( j/2 );
super.Suma_a_i( j );
}
}
Al heredar de una clase base, heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.