Está en la página 1de 9

Paradigma de programacin orientado a objetos

Contenido
Paradigma de programacin orientado a objetos
Contenido
Principios del paradigma orientado a objetos
Abstraccin
Encapsulamiento
Polimorfismo
Herencia
Conceptos de programacin orientada a objetos
Objetos
Clases
Herencia
Interfaces

Principios del paradigma orientado a objetos


Los principios bsicos del paradigma de programacin orientado a objetos son cuatro:
abstraccin, encapsulamiento (o encapsulacin), polimorfismo y herencia. Veamos a
continuacin de qu trata cada uno de ellos.

Abstraccin
La abstraccin es un concepto que permite extraer la informacin esencial de un objeto. En la
programacin orientada a objetos, la abstraccin ayuda a la fcil conceptualizacin de los
objetos del mundo real en un programa de software.
La abstraccin se encuentra en todas partes! Cualquier cosa que vemos, hacemos y vivimos
tienen algo de abstraccin. Por ejemplo:
En matemticas, la multiplicacin es una especie de abstraccin. El smbolo
es un smbolo abstracto que puede hacer la multiplicacin de dos elementos.
En el arte, el arte abstracto es un tipo de arte que representa la forma destilada
del mundo.
La abstraccin posibilita la conceptualizacin de objetos del mundo real, eliminando los detalles
innecesarios del objeto. Cuando generalizamos todos los objetos que son similares, saldrn a
la vista los detalles poco comunes acerca de estos objetos.

Por ejemplo, cuando modelamos un prototipo genrico para una televisin CRT (cathode-ray
tube o de bulbos) y para una televisin de plasma, buscamos detalles como el tipo de pantalla,

altura, anchura, espesor, etc., que son los elementos necesarios para una televisin. Sin
embargo, un objeto de televisin no tiene porqu tener los detalles de qu tipo de electrones se
necesitan para alimentar el CRT o qu tipo de plasma lquido se utilizar para alimentar los
televisores de plasma. Este tipo de detalles son los detalles innecesarios.
Ejercicio. Describe los siguientes objetos para los contextos mencionados.
1. Persona: hospital, tienda departamental, universidad
2. Libro: biblioteca, librera, curso

Encapsulamiento
El encapsulamiento (o encapsulacin) se define como la ocultacin de la implementacin de los
objetos y se refiere al proceso de crear un objeto lo ms autosuficiente posible: un objeto que
contenga no slo el cdigo, sino tambin los datos. La encapsulacin es el proceso de encerrar
todo el cdigo necesario para una operacin en particular en un mdulo nico y la limitacin de
las dependencias externas a dicho mdulo.
La encapsulacin es la inclusin, dentro de un objeto, de todos los recursos que necesita para
que el objeto funcione, bsicamente operaciones y datos. En la programacin orientada a
objetos, la encapsulacin se logra principalmente mediante la creacin de clases y son estas
clases las que exponen pblicamente las operaciones y las propiedades de los objetos. La
clase es una especie de recipiente (o cpsula) que contiene (o encapsula) el conjunto de
operaciones, atributos y propiedades para proporcionar sus funcionalidades a otras clases. En
ese sentido, la encapsulacin tambin permite a una clase cambiar su implementacin interna
sin perjudicar el funcionamiento general del sistema. Entonces, la idea de la encapsulacin es
ocultar cmo una clase hace lo que hace y permite solicitar qu hacer.

Polimorfismo
El polimorfismo es un trmino genrico que significa "muchas formas". Ms precisamente,
polimorfismo significa la capacidad de solicitar que las mismas operaciones se realicen por una
gama amplia de diferentes tipos de cosas.
El polimorfismo permite que dos o ms objetos respondan al mismo mensaje. Una operacin
llamada nombre podra ser implementada por un objeto de la clase de Curso. Aunque la
aplicacin de este mensaje nombre puede devolver la clave y el nombre del curso, su
protocolo es el mismo que la operacin nombre de un objeto de la clase Estudiante. El
polimorfismo permite que un objeto emisor pueda comunicarse con diferentes objetos de una
manera consistente sin tener que preocuparse acerca de cuntas diferentes implementaciones
existen de un mensaje.
Una analoga de polimorfismo en la vida diaria es cmo responden los estudiantes a la
campana de una escuela secundaria. Cada estudiante conoce el significado de la campana.
Cuando la campana suena (mensaje), tiene su propio significado para los diferentes

estudiantes (objetos). Algunos estudiantes van a casa, algunos van a la biblioteca y algunos
van a otras clases. Cada estudiante responde a la campana, pero cmo responden a ella
puede ser diferente.
En la programacin orientada a objetos, el polimorfismo se logra mediante el uso de diferentes
tcnicas llamadas sobrecarga de mtodos, sobrecarga de operadores y reemplazo de mtodos.
Ejercicio. Cmo se aplicara el polimorfismo en los siguientes escenarios?
1. Aparatos electrodomsticos
2. Restaurantes y bares
3. Transporte pblico

Herencia
La herencia permite a una clase tener el mismo comportamiento que otra clase y ampliar o
adaptar ese comportamiento para proporcionar una accin especial para necesidades
especficas.
Una de las relaciones ms importantes entre los objetos en el mundo real es la especializacin,
lo que puede ser descrito como una relacin "es un". Cuando decimos que un perro es un
mamfero, queremos decir que el perro es un tipo especializado de mamfero. Tiene todas las
caractersticas de cualquier mamfero (que tiene cras vivas, las alimenta con leche, tienen
pelo), pero especializa estas caractersticas a las caractersticas de la familia canis domesticus.
Un gato tambin es un mamfero, por lo tanto esperamos que comparta ciertas caractersticas
con el perro, que se generalizan en mamferos, pero que difieren en las caractersticas que se
especializan en los gatos.
La especializacin y la generalizacin de las relaciones son recprocas y jerrquicas. La
especializacin es lo contrario a la generalizacin: los mamferos generalizan lo que es comn
entre los perros y los gatos y los perros y los gatos especializan a los mamferos a sus subtipos
especficos.
Veamos el siguiente ejemplo. Tanto la clase Licenciatura como la clase Posgrado tienen
comportamientos similares, como la gestin de un nombre, una direccin, una especializacin y
un promedio. En lugar de poner este comportamiento en ambas clases, se coloca en una
nueva clase llamada Estudiante. Tanto Licenciatura como Posgrado se convierten en
subclases de la clase Estudiante y ambas heredan el comportamiento de Estudiante.
Ambas clases Licenciatura y Posgrado puede ahora aadir un comportamiento adicional
que es exclusivo de ellas. Por ejemplo, el programa de Posgrado puede ser ya sea de
maestra o doctorado. Por otro lado, la clase Licenciatura podra mantener el registro del
ao de los estudiantes.

Las clases que heredan de una clase se llaman subclases. La clase de la cual hereda una
subclase es la superclase. En el ejemplo anterior, Estudiante es la superclase de
Licenciatura y Posgrado y stas son subclases de Estudiante.
Ejercicio. Contesta las siguientes preguntas:
1. Qu tienen en comn Wii, XBOX y PlayStation?
2. Cules seran las subclases de las consolas de videojuego anteriores?
3. Qu caractersticas tienen en comn un iPhone 5, un Galaxy S III y un
Lumia?
4. Cul sera la superclase de los telfonos celulares anteriores?

Conceptos de programacin orientada a objetos


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
abreviamos como POO).
Ejercicio. Cules son el estado y el comportamiento de los siguientes objetos?

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
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.
Agrupar el cdigo de los objetos 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.
Ejercicio. 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 e
imprimirEstado definen su interaccin con el mundo exterior.
La clase Bicicleta no contiene un mtodo main porque no es una aplicacin, 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
Bicicleta bici1 = new Bicicleta();
Bicicleta 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, Esta relacin de herencia se muestra en la Figura
1. En Java, a cada clase se le permite tener una superclase directa y cada superclase puede
tener un nmero ilimitado de subclases:
Figura 1. La superclase Bicicleta y sus subclases BicicletaDeMontaa, BicicletaDeCarrera y
BicicletaBMX.

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);
}
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.
Ejercicio. Define las siguientes interfaces:

Telfono
Radio
Refrigerador

También podría gustarte