Si usted nunca ha usado un lenguaje de programación orientado a objetos antes, tendrá que aprender algunos conceptos básicos antes de empezar a escribir ningún código. Este tema le dará a conocer a los objetos, clases, herencia, interfaces y paquetes. Cada discusión se centra en cómo estos conceptos se relacionan con el mundo real, mientras que simultáneamente proporciona una introducción a la sintaxis del lenguaje de programación Java.
¿Que es un objeto?
Los objetos son clave para entender la tecnología orientada a objetos. Mire a su alrededor en este momento y encontrará muchos ejemplos de objetos del mundo real: su perro, su escritorio, su televisor, su bicicleta.
objetos del mundo real comparten dos características: Todos ellos tienen estado y el comportamiento. Los perros tienen estado (nombre, color, raza, hambre) y el comportamiento (ladridos, ir a buscar, moviendo la cola). Las bicicletas también tienen estado (marcha actual, cadencia de pedaleo actual, la velocidad actual) y el comportamiento (el cambio de marchas, el cambio de la cadencia de pedaleo, la aplicación de los frenos). Identificar el estado y el comportamiento de los objetos del mundo real es una gran manera de empezar a pensar en términos de programación orientada a objetos.
Tome un minuto en este momento para observar los objetos del mundo real que se encuentran en su área inmediata. Para cada objeto que se ve, hágase dos preguntas: "¿Qué estados posibles puede estar en este objeto?" y "¿Qué posible comportamiento puede llevar a cabo este objeto?". Asegúrese de anotar sus observaciones. Mientras lo hace, se dará cuenta de que los objetos del mundo real varían en complejidad; su lámpara de escritorio puede tener sólo dos estados posibles (dentro y fuera) y dos comportamientos posibles (encender, apagar), pero su radio de escritorio podría tener otros estados (encendido, apagado, volumen actual, la estación actual) y el comportamiento (encender , apagar, subir el volumen, bajar el volumen, buscar, explorar, y poner a punto). También se puede notar que algunos objetos, a su vez, también contener otros objetos. Estas observaciones del mundo real todo se traducen en el mundo de la programación orientada a objetos.
Los objetos de software son conceptualmente similares a los objetos del mundo real: ellos también consisten en el comportamiento estatal y afines. Un objeto almacena su estado en los campos (variables en algunos lenguajes de programación) y expone su comportamiento a través de métodos (funciones en algunos lenguajes de programación). Métodos operan en el estado interno de un objeto y sirven como mecanismo principal para la comunicación objeto a objeto. Ocultación de estado interno y que requiere toda la interacción que se realiza a través de métodos de un objeto que se conoce como encapsulación de datos - un principio fundamental de la programación orientada a objetos.
Atribuyendo estado (velocidad actual, cadencia de pedaleo actual, y la marcha actual) y proporcionando métodos para cambiar ese estado, el objeto permanece en control de cómo se permite que el mundo exterior para usarlo. Por ejemplo, si la bicicleta solamente tiene 6 engranajes, un método para cambiar de marcha podrían rechazar cualquier valor que es menor que 1 o mayor que 6.
La agrupación de código en objetos individuales de software proporciona una serie de beneficios, incluyendo:
- Modularidad: El código fuente de un objeto puede ser escrito y mantenido independientemente del código fuente para otros objetos. Una vez creado, un objeto puede pasar fácilmente por el interior del sistema.
- Información-ocultación: Al interactuar solamente con métodos de un objeto, los detalles de su implementación interna permanecen ocultos del mundo exterior.
- La reutilización de código: Si ya existe un objeto (tal vez escrito por otro desarrollador de software), puede utilizar ese objeto en su programa. Esto permite a los especialistas para poner en práctica compleja / prueba / depuración, objetos de tareas específicas, que luego se puede confiar para ejecutar en su propio código.
- Enchufabilidad y depuración facilidad: Si un objeto particular resulta ser problemática, simplemente puede eliminarlo de su aplicación y conectar un objeto diferente como su reemplazo. Esto es análogo a la solución de problemas mecánicos en el mundo real. Si se rompe un perno, que se sustituya, no toda la máquina.
¿Qué es una clase?
En el mundo real, a menudo encontrará muchos objetos individuales todos del mismo tipo. Puede haber miles de otras bicicletas en la existencia, todos de la misma marca y modelo. Cada bicicleta se construyó a partir del mismo conjunto de planos y, por tanto, contiene los mismos componentes. En términos de orientación a objetos, se dice que la bicicleta es una instancia de la clase de objetos conocidos como bicicletas. Una clase es el modelo a partir del cual se crean los objetos individuales.
La siguiente clase Bicicleta es una posible implementación de una bicicleta:
class Bicicleta {
int cadencia = 0;
int velocidad = 0;
int engranaje = 1;
void cambiarCadencia(int nuevoValor) {
cadencia = nuevoValor;
}
void cambiarEngranaje(int nuevoValor) {
engranaje = nuevoValor;
}
void acelerar(int incremento) {
velocidad = velocidad + incremento;
}
void aplicarFrenos(int decremento) {
velocidad = velocidad - decremento;
}
void imprimirEstado() {
System.out.println("cadencia:" + cadencia + " velocidad:" + velocidad + " engranaje:" + engranaje);
}
}
La sintaxis del lenguaje de programación Java buscará nuevo para usted, pero el diseño de esta clase está basado en la discusión previa de los objetos de la bicicleta. Los campos de cadencia, velocidad, y el engranaje representan el estado del objeto y los métodos (changeCadence, ChangeGear, aumento de velocidad, etc.) definen su interacción con el mundo exterior.
Usted puede haber notado que la clase de bicicletas no contiene un método main. Esto se debe a que no es una aplicación completa; es sólo el modelo para bicicletas que podrían ser utilizados en una aplicación. La responsabilidad de la creación y utilización de nuevos objetos de bicicletas pertenece a alguna otra clase en su aplicación.
Aquí está una clase BicycleDemo que crea dos objetos separados de bicicletas e invoca sus métodos:
class BicycleDemo {
//metodo main, es aquí donde comienza la aplicacion
public static void main(String[] args) {
// Crear dos diferentes
// objetos bicicleta
Bicicleta bicicleta1 = new Bicicleta();
Bicicleta bicicleta2 = new Bicicleta();
// Invocar metodos de los objetos bicicleta1 y bicicleta2
bicicleta1.cambiarCadencia(50);
bicicleta1.acelerar(10);
bicicleta1.cambiarEngranaje(2);
bicicleta1.imprimirEstado();
bicicleta2.cambiarCadencia(50);
bicicleta2.acelerar(10);
bicicleta2.cambiarEngranaje(2);
bicicleta2.cambiarCadencia(40);
bicicleta2.acelerar(10);
bicicleta2.cambiarEngranaje(3);
bicicleta2.imprimirEstado();
}
}
¿Qué es la herencia?
Diferentes tipos de objetos a menudo tienen una cierta cantidad en común entre sí. bicicletas de montaña, bicicletas de carretera y bicicletas tándem, por ejemplo, todos comparten las características de las bicicletas (velocidad actual, cadencia de pedaleo actual, la marcha actual). Sin embargo, cada uno también define características adicionales que las hacen diferentes: las bicicletas tándem tienen dos asientos y dos conjuntos de manillar; bicicletas de carretera tienen manillar de caída; algunas bicicletas de montaña tienen un anillo de cadena adicional, dándoles una relación de transmisión más baja.
Programación orientada a objetos permite que las clases que heredan estado y el comportamiento de uso común de otras clases. En este ejemplo, Bicicleta se convierte ahora en la superclase de MountainBici , RoadBici , y TandemBici . En el lenguaje de programación Java, se permite a cada clase tener una superclase directa, y cada superclase tiene el potencial para un número ilimitado de subclases:
La sintaxis para crear una subclase es simple. Al comienzo de su declaración de clase, utilice el extends palabra clave, seguido del nombre de la clase a heredar de:
public class MountainBici extiende Bicicletas {
// nuevos campos y métodos que definen
// Una bicicleta de montaña iría aquí
}
public class RoadBici extiende Bicicletas {
// nuevos campos y métodos que definen
// Una bicicleta de camino o carretera iría aquí
}
public class TandemBici extiende Bicicletas {
// nuevos campos y métodos que definen
// Una bicicleta tándem iría aquí
}
Esto da MountainBici y las otras subclases todos los mismos campos y métodos de la Bicicleta , sin embargo, el codigo permite centrarse exclusivamente en las características que las hacen única. Esto hace que el código para sus subclases sean de leer e implementar. Sin embargo, se debe tener cuidado para documentar adecuadamente el estado y el comportamiento que cada superclase, ya que el código no aparecerá en el archivo de origen de cada subclase.
¿Qué es una interfaz?
Como ya se ha aprendido, objetos definen su interacción con el mundo exterior a través de los métodos que se exponen. Métodos forman la interfaz del objeto con el mundo exterior; los botones en la parte frontal del aparato de televisión, por ejemplo, son la interfaz entre el usuario y el cableado eléctrico en el otro lado de la carcasa de plástico. Se pulsa el botón "Encender" para encender el televisor y posteriormente luego de encendido, apagarlo
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 {
// revoluciones de la rueda por minuto
public void cambiarCadencia(int nuevoValor);
public void cambioDeMarcha(int nuevoValor);
public void acelerar(int incremento);
public void aplicarLosFrenos(int decremento);
}
Para implementar esta interfaz, el nombre de su clase cambiaría (a una determinada marca de bicicleta, por ejemplo, como ACMEBicicleta ), y que tendría que utilizar la palabra clave implements en la declaración de clase:
class ACMEBicicleta implements Bicicleta {
int cadence = 0;
int velocidad = 0;
int engranaje = 1;
// El compilador ahora requieren que los métodos
// cambiarCadence, cambioDeMarcha, acelerar, y aplicarFrenos
// deben implementarse. Compilación fallará si los métodos faltan en esta clase.
public void cambiarCadencia(int nuevoValor) {
cadencia = nuevoValor;
}
public void cambioDeMarcha(int nuevoValor) {
engranaje = nuevoValor;
}
public void acelerar(int incremento) {
velocidad = velocidad + incremento;
}
public void aplicarLosFrenos(int decremento) {
velocidad = velocidad - decremento;
}
public void imprimirEstado() {
System.out.println("cadencia:" + cadencia + " velocidad:" + velocidad + " engranaje:" + engranaje);
}
}
La implementación de una interfaz permite a una clase ser más formal sobre la conducta que promete proporcionar. Interfaces forman un contrato entre la clase y el mundo exterior, y este contrato se debe cumplir en tiempo de compilación por el compilador. Si su clase pretende implementar una interfaz, todos los métodos definidos por esa interfaz deben aparecer en su código fuente antes de la clase se compilará correctamente.
¿Qué es un paquete?
Un paquete es un espacio de nombres que organiza un conjunto de clases e interfaces relacionadas. Conceptualmente se puede pensar en paquetes como algo similar a diferentes carpetas en su computadora. Es posible guardar las páginas HTML en una carpeta, las imágenes en otro, y las secuencias de comandos o aplicaciones en otro. Debido a que el software escrito en el lenguaje de programación Java puede estar compuesto por cientos o miles de clases individuales, tiene sentido para mantener las cosas organizadas mediante la colocación de clases e interfaces relacionadas en paquetes.
La plataforma Java proporciona una enorme biblioteca de clases (un conjunto de paquetes) adecuado para su uso en sus propias aplicaciones. Esta biblioteca se conoce como el "Application Programming Interface", o "API" para abreviar. Sus paquetes representan las tareas más comúnmente asociados con la programación de propósito general. Por ejemplo, una String de objetos contiene el estado y el comportamiento de las cadenas de caracteres; un File de objetos permite a un programador para crear, borrar, inspeccionar, comparar o modificar un archivo en el sistema de archivos; un Socket objeto permite la creación y el uso de conectores de red; diversos objetos GUI, botones de control y casillas de verificación y cualquier otra cosa relacionada con las interfaces gráficas de usuario. Hay literalmente miles de clases para elegir. Esto le permite, el programador, centrarse en el diseño de su aplicación en particular, en lugar de la infraestructura necesaria para hacer que funcione.
La plataforma Java especificación del API contiene la lista completa de todos los paquetes, interfaces, clases, campos y métodos proporcionados por la plataforma Java SE. Cargar la página en el navegador y un marcador. Como programador, que se convertirá en su pieza más importante de la documentación de referencia.
No hay comentarios:
Publicar un comentario