|
Objetos |
Anterior | Siguiente |
Los principios de la definición de objetos
ayudan a los programadores a hacer código más 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 características que tengamos que tener presentes,
tal como se hacía en la programación orientada a procedimiento. Lo cual, desde el punto
de vista económico, que nunca hay que dejar de tener presente, sí resulta viable, ya que
los objetos bien diseñados pueden ser utilizados en muy diversas aplicaciones, con lo
cual el tiempo de desarrollo total se reduce. A continuación 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 helicóptero, una bicicleta, los perros, el coche. Los objetos representan cosas, simples o complejas, reales o imaginarias. Una antena parabólica 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 número complejo, una receta y una cuenta bancaria también son representaciones de cosas intangibles. Todas son objetos. Algunas cosas no son objetos, sino atributos, valores o características 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 tamaño y la velocidad. Los atributos reflejan el estado de un objeto, la velocidad del objeto avión, o el tamaño de un objeto edificio. Normalmente no tiene sentido considerar la velocidad como un objeto. Para la discusión sobre objetos, se va a retomar el ejemplo de la introducción y utilizar la definición de coche (automóvil) 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 términos de qué puede hacer y qué características lo distinguen de otros objetos. Funcionalmente, un coche puede realizar
las siguientes acciones: Hay cosas que se sabe que los coches hacen, pero el cómo lo hacen, la implementación
de ir, parar, girar (a la derecha, a la izquierda) es irrelevante
desde el punto del diseño. Esto es lo que se conoce como abstracción funcional. De forma semejante a la anterior, un
coche tiene las siguientes características o atributos: La manera en que se almacenan o definen esos atributos, también es irrelevante para el
diseño 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 despreocupación de cómo se almacena
el color es lo que se llama abstracción de datos. Los objetos encapsulan sus operaciones y su
estado, son islas de estado y comportamiento. Encapsulación es el término de orientación a objetos que describe la
vinculación de unas operaciones y estado a un objeto particular. La encapsulación está
íntimamente relacionada con la ocultación de la información, definiendo qué partes de
un objeto son visibles y qué partes están ocultas. La encapsulación abarca a la ocultación de la información: ¿Qué ocurre si cambia la implementación? Repitiendo, la encapsulación es la agrupación del estado y comportamiento para formar
objetos, donde algunas partes son visibles mientras que otras permanecen ocultas. La
ventaja de la ocultación de los detalles de implementación es que el objeto puede
cambiar, y el interfaz público proporcionado ser compatible con el original. Entonces los
programas que utilizaban el objeto pueden seguir funcionando sin alteración alguna. Esto es extremadamente útil al modificar código (ya que se restringe la propagación
de cambios). También se fomenta la reusabilidad, ya que el código puede ser utilizado
como una tecnología de caja negra (igual que los circuitos integrados en la industria
electrónica). Y si se vuelve a pensar desde el punto de vista económico, esto viene a
representar una ventaja de indudable valor. Los objetos pueden tener partes pública y privada, a menudo llamadas miembros. Los miembros públicos (interfaz o métodos) de una clase describen qué es lo que pueden hacer los objetos de esa clase. Partes públicas:
Los miembros privados de una clase describen la implementación, el cómo lo hace. Partes privadas:
En sistemas orientados a objeto puros, todo el estado es privado y sólo se puede cambiar a través de operaciones del interfaz público. Por ejemplo, un método 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 cuáles son públicos y cuáles privados. Los objetos contribuyen al comportamiento del
sistema colaborando con otros objetos. Por ejemplo: El modelado de objetos no sólo modela los objetos en un sistema, sino también 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. Los objetos interaccionan enviándose mensajes
unos a otros. El método de envío de mensajes depende de la naturaleza de los objetos
modelados. Los mensajes son tratados por los métodos del interfaz público del objeto que los
recibe. Debido a las normas de encapsulación y de ocultación de la información, no hay
forma de influir (es decir, comunicar) con un objeto. Tras la recepción de un mensaje el objeto actuará. La acción puede ser el envío de
otros mensajes, cambiar el estado, o hacer cualquier otra cosa apropiada para el objeto en
su estado. Los objetos con estados similares y mismo comportamiento se agrupan en clases. La palabra tipo se utiliza a menudo como sinónimo 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 común. Se puede uno referir a un coche (significando cualquier instancia de la clasificación coche), como opuesto a mi coche, que es una instancia determinada de la clase coche. La clasificación 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 sólo se preocupa del traslado de un sitio a otro, la implementación subyacente no importa. |
|