You are on page 1of 11

Objetos

Los principios de la definicin de objetos ayudan a los programadores a hacer cdigo ms robusto,
mantenible y seguro; porque se pueden aislar a cada uno de esos objetos y tratarlo como un ente nico, con
su propia personalidad, sin que haya cientos de caractersticas que tengamos que tener presentes, tal como
se haca en la programacin orientada a procedimiento. Lo cual, desde el punto de vista econmico, que
nunca hay que dejar de tener presente, s resulta viable, ya que los objetos bien diseados pueden ser
utilizados en muy diversas aplicaciones, con lo cual el tiempo de desarrollo total se reduce.
A continuacin se muestran algunas de las propiedades que se pueden aplicar a los objetos, tal como se han
definido:

Los objetos son cosas

Los objetos pueden ser simples o complejos

Los objetos pueden ser reales o imaginarios

Casi todo puede ser considerado un objeto. El dinero, el helicptero, una bicicleta, los perros, el coche. Los
objetos representan cosas, simples o complejas, reales o imaginarias. Una antena parablica es un objeto
complejo y real. Un objeto Profesor, representa los detalles y actividades de una persona, no es esa persona
en s misma, es pues, imaginario. Una frase, un nmero complejo, una receta y una cuenta bancaria
tambin son representaciones de cosas intangibles. Todas son objetos.
Algunas cosas no son objetos, sino atributos, valores o caractersticas de objetos. Es decir, no todas las
cosas son objetos, ni son consideradas normalmente como objetos. Algunas de ellas son simplemente
atributos de los objetos como el color, el tamao y la velocidad. Los atributos reflejan el estado de un
objeto, la velocidad del objeto avin, o el tamao de un objeto edificio. Normalmente no tiene sentido
considerar la velocidad como un objeto.

ALGORITMOS Y ESTRUCTURAS DE DATOS


1

El objeto coche
Para la discusin sobre objetos, se va a retomar el ejemplo de la introduccin y utilizar la definicin de
coche (automvil) para definir algunos conceptos.

Para definir el objeto coche, hay que ser capaces de abstraer las funciones y atributos de un coche; es decir,
hay que ser capaz de definir coche en trminos de qu puede hacer y qu caractersticas lo distinguen de
otros objetos.
Abstraccin funcional
Funcionalmente, un coche puede realizar las siguientes acciones:

Ir

Parar

Girar a la derecha

Girar a la izquierda

Hay cosas que se sabe que los coches hacen, pero el cmo lo hacen, la implementacin de ir, parar, girar
(a la derecha, a la izquierda) es irrelevante desde el punto del diseo. Esto es lo que se conoce como
abstraccin funcional.

Abstraccin de datos
De forma semejante a la anterior, un coche tiene las siguientes caractersticas o atributos:

Color

ALGORITMOS Y ESTRUCTURAS DE DATOS


2

Velocidad

Tamao

Carburante

La manera en que se almacenan o definen esos atributos, tambin es irrelevante para el diseo del objeto.
Por ejemplo, el color puede definirse como la palabra rojo, o como un vector RGB (255,0,0). La forma en
que el objeto almacena el atributo color es irrelevante para el programador. Este proceso de
despreocupacin de cmo se almacena el color es lo que se llama abstraccin de datos.

Encapsulacin de Objetos
Los objetos encapsulan sus operaciones y su estado, son islas de estado y comportamiento.

El comportamiento del objeto est definido por las operaciones

El estado est definido por los datos o atributos del objeto

Encapsulacin es el trmino de orientacin a objetos que describe la vinculacin de unas operaciones y


estado a un objeto particular. La encapsulacin est ntimamente relacionada con la ocultacin de la
informacin, definiendo qu partes de un objeto son visibles y qu partes estn ocultas.
La encapsulacin abarca a la ocultacin de la informacin:

Algunas partes son visibles (el interfaz pblico)

Otras partes son ocultas (o privadas)

ALGORITMOS Y ESTRUCTURAS DE DATOS


3

Qu ocurre si cambia la implementacin?


Repitiendo, la encapsulacin es la agrupacin del estado y comportamiento para formar objetos, donde
algunas partes son visibles mientras que otras permanecen ocultas. La ventaja de la ocultacin de los
detalles de implementacin es que el objeto puede cambiar, y el interfaz pblico proporcionado ser
compatible con el original. Entonces los programas que utilizaban el objeto pueden seguir funcionando sin
alteracin alguna.
Esto es extremadamente til al modificar cdigo (ya que se restringe la propagacin de cambios). Tambin
se fomenta la reusabilidad, ya que el cdigo puede ser utilizado como una tecnologa de caja negra (igual
que los circuitos integrados en la industria electrnica). Y si se vuelve a pensar desde el punto de vista
econmico, esto viene a representar una ventaja de indudable valor.

Definicin de Objetos
Los objetos pueden tener partes pblica y privada, a menudo llamadas miembros.
Miembros Pblicos
Los miembros pblicos (interfaz o mtodos) de una clase describen qu es lo que pueden hacer los objetos
de esa clase.
Partes pblicas:

Llamadas mtodos

Qu puede hacer el objeto

Qu es el objeto, su abstraccin

Miembros Privados

ALGORITMOS Y ESTRUCTURAS DE DATOS


4

Los miembros privados de una clase describen la implementacin, el cmo lo hace.


Partes privadas:

La implementacin

Cmo hace lo que hace

Detrs de la barrera de encapsulacin

En sistemas orientados a objeto puros, todo el estado es privado y slo se puede cambiar a travs de
operaciones del interfaz pblico. Por ejemplo, un mtodo frenar puede cambiar el estado del atributo
velocidad.
Las clases representan el tipo al que pertenecen los objetos. Definen tanto los miembros operaciones como
el estado, especificando cules son pblicos y cules privados.

Interacciones entre Objetos


Los objetos contribuyen al comportamiento del sistema colaborando con otros objetos. Por ejemplo:

El volante interacciona con el objeto intermitente

El objeto acelerador interacciona con el objeto motor

El modelado de objetos no slo modela los objetos en un sistema, sino tambin sus interrelaciones. Para
realizar su tarea, un objeto puede delegar trabajos en otro. Este otro puede ser parte integrante de l o ser
cualquier objeto del sistema.

Intercambio de Mensajes
Los objetos interaccionan envindose mensajes unos a otros. El mtodo de envo de mensajes depende de
la naturaleza de los objetos modelados.

Los objetos interaccionan por paso de mensajes

Un objeto enva un mensaje a otro

El otro puede contestar, cambiar su estado, o reaccionar de la manera apropiada

Los objetos slo pueden interaccionar a travs de su interfaz pblico

ALGORITMOS Y ESTRUCTURAS DE DATOS


5

Los mensajes son tratados por los mtodos del interfaz pblico del objeto que los recibe. Debido a las
normas de encapsulacin y de ocultacin de la informacin, no hay forma de influir (es decir, comunicar)
con un objeto.
Tras la recepcin de un mensaje el objeto actuar. La accin puede ser el envo de otros mensajes, cambiar
el estado, o hacer cualquier otra cosa apropiada para el objeto en su estado.

Clasificacin de Objetos
Los objetos con estados similares y mismo comportamiento se agrupan en clases. La palabra tipo se
utiliza a menudo como sinnimo de clase.

Un objeto es una instancia particular de algo, un determinado coche, o tienda, o moneda. Al tratar con
objetos, es conveniente clasificarlos en grupos con estado similar y comportamiento comn. Se puede uno
referir a un coche (significando cualquier instancia de la clasificacin coche), como opuesto a mi coche,
que es una instancia determinada de la clase coche.
La clasificacin puede ser arbitraria. Por ejemplo, una clase Transporte puede incluir objetos tren, objetos
coche o incluso, objetos caballo. El hecho de que esos objetos Transporte funcionen de forma diferente es
irrelevante para el problema que se intenta resolver. Si Transporte slo se preocupa del traslado de un sitio
a otro, la implementacin subyacente no importa.

ALGORITMOS Y ESTRUCTURAS DE DATOS


6

Unas definiciones clsicas, antes de nada.


Clase
Una clase define un miembro real o una entidad abstracta. Es el tipo o clasificacin de datos. Una clase
define el comportamiento y atributos de un grupo de objetos de caractersticas similares.

Objeto
Un objeto es una instancia o variable de una clase. Se dice que pertenece a la clase. Un objeto se distingue
de otros miembros de la clase por sus atributos.

Clases Relacionadas
Una clase describe un conjunto de objetos con un comportamiento comn y atributos relacionados.
Probablemente a estas alturas de la lectura la clase coche resulte ya pesada, as que se hace necesario un
cambio de aires y utilizar otra clase de objetos.

Una clase relacionada es Ftbol, que es una especializacin de la clase Pelota.

Otra clase relacionada es Equipo_deportivo, que es una generalizacin de la clase Pelota

Los objetos rara vez caen dentro de grupos completamente distintos. A menudo existe solapamiento entre

ALGORITMOS Y ESTRUCTURAS DE DATOS


7

el comportamiento de los grupos de objetos. Esto se ve incluso en la clase Pelota.


La clase PelotaDeTenis es como la clase Pelota, pero modifica su comportamiento para ser utilizada en el
tenis. Por contra, la clase Equipamiento_Deportivo es una generalizacin de Pelota, pero las
caractersticas comunes de todos los objetos del campo de juego se encuentran en ella.
La jerarqua mostrada se explota en la orientacin a objetos para propiciar la reusabilidad a travs de un
mecanismo que es la herencia.

Herencia
La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de otra ya
existente. La herencia permite a un conjunto de clases relacionadas permanecer bajo un nico paraguas, de
forma que puedan ser consideradas y manejadas colectivamente.
La herencia permite el refinamiento o especializacin de una clase existente:

Se pueden definir los miembros

Se pueden ocultar los miembros

Se pueden aadir nuevos miembros

La herencia es la caracterstica clave de los sistemas orientados a objeto para propiciar la reusabilidad:

Es la parte orientada de los sistemas de objetos

Implementa las relaciones es-un (type of) o es-una-clase-de (instance of)

ALGORITMOS Y ESTRUCTURAS DE DATOS


8

La clase Pelota es la clase padre (o base, o superclase) en la jerarqua de abajo. Sus mtodos y atributos
son heredados por las clases derivadas (hijas o subclases). Para los objetos de las clases derivadas no es
evidente si los mtodos son nativos a Rugby o Ftbol, o si han sido derivados de una clase de nivel
superior.
Ftbol es una clase de Pelota. Ftbol tiene todos los atributos y operaciones de Pelota. No obstante, la
clase Ftbol ha ocultado (hecho privada) la operacin desinflar (sacndola del interfaz pblico) y
sobrecargando el mtodo lanzar con una implementacin apropiada para el ftbol.

La herencia es una forma de especializacin en la que las clases hijas son refinadas para tener el
comportamiento y atributos adecuados para la aplicacin de que se trate. Al poder las clases derivadas
aadir, redefinir y ocultar miembros, la herencia se convierte en reusabilidad programable.
Otra razn para redefinir un mtodo es que la clase base proporcione una implementacin no ptima. A la
luz del contexto en que se usen, las subclases pueden proporcionar una implementacin ptima. Por
ejemplo, mejores algoritmos y tcnicas de almacenamiento pueden ser posibles en determinadas clases
derivadas.

Modelado con Objetos


Los problemas se pueden modelar en los trminos especficos del dominio. Una de las ventajas de la
aproximacin orientada a objetos es que permite que el problema sea representado en trminos especficos
del dominio. Esto permite a los diseadores construir modelos que se proyectan directamente en el
problema de la aplicacin.
Sistema escuela

Clase Libro

Clase Pizarra

Clase Tiza

Clase Diploma

ALGORITMOS Y ESTRUCTURAS DE DATOS


9

Clase Borrador

Sistema interfaz grfico de usuario

Clase Pantalla

Clase Ventana_De_Texto

Clase Botn

Clase Barra_De_Desplazamiento

Clase Ventana_De_Dialogo

La ventaja de crear modelos cercanos al dominio es que son fciles de comprender, hay menor
probabilidad de cometer errores y descuidos, y los modelos pueden ser verificados por los usuarios que
definen los requisitos.

Clases Abstractas
Una clase abstracta es una descripcin incompleta de algo. Un conjunto de operaciones y atributos que por
s solos no describen nada.

Las clases abstractas no pueden ser instanciadas

No es posible crear objetos o variables

Describen partes de objetos

Creadas por generalizacin, caractersticas comunes, pero no completas

Utilizadas en polimorfismo para definir operaciones comunes

Las clases abstractas se utilizan junto con la herencia

Hay mucho inters en torno al polimorfismo. Los mtodos pueden ser polimrficos si se aplican objetos de
distintas clases para conseguir el mismo significado semntico. Por ejemplo, lanzar puede ser
implementado tanto para un objeto PelotaDeTenis como para el objeto Bisbol.
He aqu un ejemplo de clase abstracta. En un sistema de clase GUI (interfaz grfica de usuario), los
mtodos para la GUI pueden ser abstrados para conseguir la definicin de mltiples interfaces. Por
ejemplo, si se supone que la clase ventana de dilogo es una clase abstracta; esto permite que la
implementacin de la clase sea manejada por el programador.
Los siguientes seran ejemplo de la clase VentanaDeDialogo:

ALGORITMOS Y ESTRUCTURAS DE DATOS


10

La anterior una ventana habitual y la siguiente una ventana especial y particular de nuestra visin del
interfaz.

ALGORITMOS Y ESTRUCTURAS DE DATOS


11

You might also like