Está en la página 1de 6

Contenido

Conceptos de programacin orientada a objetos


Objetos
Clases
Herencia
Interfaces
Conceptos de programacin orientada a objetos
1
Objetos
Los objetos son un concepto fundamental para comprender la tecnologa orientada a objetos.
Por ejemplo, miremos a nuestro alrededor e identifiquemos algunos de ellos: perro, silla,
reloj, coche, bicicleta. Los objetos del mundo real comparten dos caractersticas: todos
tienen un estado y un comportamiento. Los perros tienen un estado (nombre, raza, color,
hambre?) y un comportamiento (ladra, busca, mueve la cola). Las bicicletas tambin tienen un
estado (velocidad, cadencia de pedaleo, velocidad de desplazamiento) y un comportamiento
(cambio de velocidad, cambio de cadencia de pedaleo, frenar). El identificar el estado y el
comportamiento de los objetos del mundo real es una forma recomendable para empezar
a pensar en trminos de programacin orientada a objetos (a partir de este momento lo
abreviaremos como POO).

Ejercicio: Cules son el estado y el comportamiento de los siguientes objetos reales?
silla
reloj
coche

Los objetos del mundo real varan en complejidad: algunos pueden tener pocos estados y
comportamientos, mientras que otros pueden tener muchos ms. Por ejemplo, un rbol y una
lmpara tienen pocos estados y comportamientos comparados con un radio y una televisin.
Una lmpara de escritorio puede tener slo dos estados posibles (encendido y apagado)
y dos posibles comportamientos (encender y apagar), pero un radio puede tener otros
estados (encendido, apagado, volumen actual, estacin actual) y comportamiento (encender,
apagar, subir el volumen, bajar el volumen, buscar, explorar y sintonizar). De la misma forma
podemos podemos observar que algunos objetos contienen, a su vez, a otros objetos. Estas
observaciones del mundo real se traducen al mundo de la POO.

Los objetos de software son conceptualmente similares a un objeto real: tienen estados y
comportamientos. Un objeto almacena su estado en atributos (variables en algunos lenguajes
de programacin) y exponen su comportamiento mediante mtodos (funciones en algunos
lenguajes de programacin). Los mtodos actan sobre el estado interno de un objeto y sirven
como el mecanismo principal para la comunicacin entre objetos. La ocultacin del estado
1
Este es un intento de traduccin al espaol de The Java Tutorials, Lesson: Object-Oriented
Programming Concepts.
interno y el requerimiento de que toda la interaccin deba hacerse a travs de los mtodos se
le conoce como encapsulado de datos, que es un principio fundamental en la POO.

Atribuyndole estado y asignndole mtodos, un objeto mantiene el control de cmo el mundo
exterior est permitido para usarlo. Por ejemplo, si una bicicleta slo tiene seis velocidades, un
mtodo para cambiar de velocidad podra rechazar cualquier valor menor a 1 y mayor a 6.

El agrupar el cdigo de los objetos individuales de software proporciona una serie de
beneficios, que incluyen:

Modularidad. El cdigo fuente de un objeto puede ser escrito y mantenido
independientemente del cdigo fuente de otros objetos. Una vez creado, un objeto
puede transmitirse fcilmente por el interior del sistema.
Ocultacin de la informacin. Al interactuar slo con los mtodos de un objeto, los
detalles de su implementacin interna permanecen ocultos del mundo exterior.
Reutilizacin de cdigo. Si un objeto que ya existe (tal vez escrito por otro
desarrollador), puede utilizarse ese objeto en un programa. Esto permite a los
especialistas implementar / probar / depurar objetos complejos para tareas especficas,
en los cuales se puede confiar para ser utilizados en cdigo propio.
Facilidad conexin y depuracin. Si un objeto en particular resulta ser problemtico,
se puede simplemente eliminar de la aplicacin y conectar un objeto diferente para
reemplazarlo. Esto es anlogo a la solucin de problemas mecnicos en el mundo real:
si un tornillo se rompe, slo sto se sustituye y no toda la mquina.
Clases
En el mundo real podemos encontrar muchos objetos del mismo tipo. Por ejemplo, pueden
haber miles de bicicletas de la misma marca y modelo. Cada bicicleta fue construida bajo un
mismo diseo, por lo tanto contienen los mismo componentes. En trminos de POO, decimos
que la bicicleta es una instancia de la clase de objetos conocida como bicicleta. Una clase es el
diseo bajo el cual se crean los objetos individuales.

Ejemplo: Analiza las siguientes clases de objetos:
nmero
libro
telfono
La siguiente clase Bicicleta es una posible implementacin en Java de una bicicleta:

class Bicicleta {

int cadencia = 0;
int desplazamiento = 0;
int velocidad = 1;

void cambiarCadencia(int nuevoValor) {
cadencia = nuevoValor;
}

void cambiarVelocidad(int nuevoValor) {
velocidad = nuevoValor;
}

void acelerar(int incremento) {
desplazamiento = desplazamiento + incremento;
}

void frenar(int decremento) {
desplazamiento = desplazamiento - decremento;
}

void imprimirEstado() {
System.out.println("cadencia: " + cadencia +
", velocidad de desplazamiento: " + desplazamiento +
"velocidad: " + velocidad);
}
}

Los atributos cadencia, desplazamiento y velocidad representan el estado del
objeto y los mtodos cambiarCadencia, cambiarVelocidad, acelerar, frenar y
imprimirEstado definen su interaccin con el mundo exterior.

La clase Bicicleta no contiene un mtodo main porque no es una aplicacin completa, es
slo el modelo de bicicletas que se pueden utilizar en una aplicacin. La responsabilidad de
crear y usar nuevos objetos Bicicleta pertenece a alguna otra clase en la aplicacin.

La siguiente clase EjemploBicicleta crea dos objetos Bicicleta independientes y llama a
sus mtodos:


class EjemploBicicleta {

public static void main(String[] args) {

// Se crean dos objetos Bicicleta diferentes
Bicycle bici1 = new Bicicleta();
Bicycle bici2 = new Bicicleta();

// Se invocan los mtodos sobre esos objetos
bici1.cambiarCadencia(50);
bici1.acelerar(10);
bici1.cambiarVelocidad(2);
bici1.imprimirEstado();

bici2.cambiarCadencia(50);
bici2.acelerar(10);
bici2.cambiarVelocidad(2);
bici2.cambiarCadencia(40);
bici2.acelerar(10);
bici2.cambiarVelocidad(3);
bici2.imprimirEstado();
}
}

El resultado de esta prueba imprime, para las dos bicicletas, la cadencia final de pedaleo, la
velocidad de desplazamiento y la velocidad:

cadencia: 50, velocidad de desplazamiento: 10, velocidad: 2
cadencia: 40, velocidad de desplazamiento: 20, velocidad: 3
Herencia
Objetos de diferentes tipos a veces tienen algo en comn. Por ejemplo, las bicicletas de
montaa, de carrera y BMX comparten las caractersticas de las bicicletas (velocidad de
desplazamiento, cadencia de pedaleo, velocidad). Sin embargo, cada una de ellas tiene
caractersticas adicionales que las hacen diferentes: Las de montaa tienen generalmente
engranes adicionales, las de carrera tienen un manubrio diferente y las BMX solamente tienen
una velocidad.

La POO permite a las clases heredar el estado y comportamiento de otras clases. En
nuestro ejemplo, la clase Bicicleta ahora es una superclase de BicicletaDeMontaa,
BicicletaDeCarrera y BicicletaBMX. En Java, a cada clase se le permite tener una
superclase directa y cada superclase puede tener un nmero ilimitado de subclases:

Ejercicio: Pensemos ahora en las siguientes superclases:
nmero
telfono
vaso

La sintaxis para la creacin de una subclase es sencilla. Al principio de la declaracin de la
clase, se utiliza la palabra reservada extends, seguida por el nombre de la clase de la cual se
est heredando:

class BicicletaDeMontana extends Bicicleta {

// Los nuevos atributos y mtodos que definen una
// bicicleta de montaa van aqu

}

Esto le da a BicicletaDeMontaa todos los atributos y mtodos de Bicicleta, pero
permite que su cdigo se concentre exclusivamente en las caractersticas que la hacen nica.
Esto hace que el cdigo de las subclases sea fcil de leer. Sin embargo, se debe tener cuidado
de documentar apropiadamente el estado y el comportamiento que define cada superclase, ya
que el cdigo no aparece en el archivo fuente de cada subclase.
Interfaces
Como vimos anteriormente, los objetos definen su interaccin con el mundo exterior mediante
los mtodos que exponen. Los mtodos de los objetos son la interfaz con el mundo exterior.
Por ejemplo, los botones de un televisor o un reproductor de Blu-Ray son la interfaz entre
nosotros y los circuitos que hay dentro de los aparatos.

En su forma ms comn, una interfaz es un grupo de mtodos relacionados con cuerpos
vacos. El comportamiento de una bicicleta, si se especifica como una interfaz, podra ser la
siguiente:

interface Bicicleta {

void cambiarCadencia(int nuevoValor);

void cambiarVelocidad(int nuevoValor);

void acelerar(int incremento);

void frenar(int decremento);
}

Ejercicio: Define las siguientes interfaces:

Telfono
Radio
Refrigerador

Para implementar esta interfaz se debe cambiar el nombre de la clase (por ejemplo por una
marca determinada de bicicleta, como BicicletaPatito) y utilizar la palabra reservada
implements en la declaracin de la clase:

class BicicletaPatito implements Bicicleta {

// el resto de esta clase se implementa como antes
}

La implementacin de una interfaz permite a una clase ser ms formal acerca del
comportamiento que promete proporcionar. Una interfaz es una contrato entre la clase y el
mundo exterior y este contrato se cumple al tiempo de la compilacin. Si una clase implementa
una interfaz, todos los mtodos definidos por esa interfaz deben aparecer en el cdigo fuente
para que la clase se compile con xito.

También podría gustarte