Professional Documents
Culture Documents
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:
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.
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
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.
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 es el objeto, su abstraccin
Miembros Privados
La implementacin
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.
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 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.
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.
Los objetos rara vez caen dentro de grupos completamente distintos. A menudo existe solapamiento entre
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:
La herencia es la caracterstica clave de los sistemas orientados a objeto para propiciar la reusabilidad:
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.
Clase Libro
Clase Pizarra
Clase Tiza
Clase Diploma
Clase Borrador
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.
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:
La anterior una ventana habitual y la siguiente una ventana especial y particular de nuestra visin del
interfaz.