Un mundo de Objetos

15.2

Una de las ventajas ineludibles de la orientación a objetos es la posibilidad de reflejar sucesos del mundo real mediante tipos abstractos de datos extensibles a objetos.
Un objeto es en realidad una clase especial de variable de un nuevo tipo que algún programador ha creado. Los tipos objetos definidos por el usuario se comportan como tipos incorporados que tienen datos internos y operaciones externas.
Los tipos objeto definidos por el usuario contienen datos definido por el usuario(características) y operaciones (comportamiento). Las operaciones definidas por el usuario se denominan métodos. Para llamar a uno de esos métodos se hace petición al objeto: esta acción se conoce como enviar un mensaje al objeto.

15.2.1

Definición de objetos

Un objeto como ya se ha comentado es una abstracción de cosas del mundo real, tales que:


  • todas las cosas del mundo real dentro de un conjunto --denominados instancias-- tienen las mismas características
  • todas siguen las mismas reglas

cada objeto consta de 
  • estado (atributos)
  • operaciones o comportamiento (métodos invocadores por mensajes)
Desde el punto de vista informático, los objetos son tipos de datos abstractos (tipos que encapsulan datos y funciones que operan sobre estos datos.


15.2.2

Identificación de Objetos
 
El primer problema que se nos plantea al analizar un problema que se desea implementar mediante un programa orientado a objetos es identificar los objetos.

La identificación de objetos se obtiene examinando la descripción del problema y localizando los nombres o clausulas nominales. Normalmente, estos nombres y sus sinónimos se suelen escribir en una tabla de la que luego deduciremos los objetos reales.
Según algunos autores, los objetos pueden caer en algunas de las siguientes categorías
  • Cosas Tangibles
  • Roles o papeles
  • Organizaciones
  • incidentes
  • interacciones
  • especificaciones
  • Lugares
Una vez identificados los objetos sera preciso identificar los atributos y las operaciones que actuan sobre ellos.
Los atributos describen la abstracción de características individuales que poseen todos los objetos
Las operaciones cambian el objeto --su comportamiento-- de alguna forma, es decir, cambian valores de uno o mas atributos contenidos en el objeto. Aunque existen un gran numero de operaciones que se pueden realizar sobre un objeto, generalmente se dividen en tres grandes grupos:
  • operaciones manipuladoras
  • operaciones de calculo o proceso
  • operaciones que comprueban (monitorean) un objeto frente a algun suceso
15.2.3

Duración de los objetos

Los objetos son entidades que existen en el tiempo, or ello deben ser creado o instanciados. Esta operación se hace a través de operaciones especiales llamadas constructores, que se ejecutan implícitamente por el compilador o explicitamente por el programador mediante invocación de los mismos.

15.2.4 

Objetos frente a clases

¿cual es la diferencia?

Un objeto es un simple elemento, no importa lo complejo que sea. Una clase, por lo contrario describe una familia de elementos similares. En la practica, una clase es como una plantilla que se utiliza para definir o crear objetos
A partir de una clase se puede definir un numero determinado de objetos. Cada uno de esos objetos generalmente tendrá un estado particular propio y otras características aunque compartan algunas operaciones comunes . Los objetos tienen las siguientes características:
  • Se agrupan en clases
  • tienen datos internos que definen su estado actual
  • soportan la ocultación de datos
  • pueden heredar propiedades de otro objeto
  • pueden comunicarse con otros objetos pasando mensajes
  • tienen métodos que definen su comportamiento
Una clase es un tipo definido que determina las estructuras de datos y operaciones relacionadas con ese tipo. las clases son como plantillas que describen como están construidos ciertos tipos de objetos. Cada vez que se construye un objeto de una clase estamos creando lo que se llama una instancia de una clase y la operación correspondiente se llama instanciación. Por consiguiente los objetos no son mas que instancias de clases en general los términos objeto e instancia de una clase pueden usarse indistintamente

15.2.5

Datos internos

Una propiedad importante de los objetos es que almacenan información de su estado en forma de datos internos. El estado de un objeto es simplemente el conjunto de valores de todas las variables contenidas dentro del objeto en un instante dado. A veces se denominan a las variables que representan a los objetos variables de estado. así por ejemplo si tuvieramos en C++:


Class ventana{
int posx,posy
int tipo_ventana
public
move_x(int dir, int ang)
move_y(int dir, int ang)

}

15.2.6

Ocultamiento de datos

Con el fin de mantener las características de caja negra de POO se debe considerar cómo se accede a un objeto en el diseño del mismo. Normalmente es una buena practica restringir el acceso a las variables estado de un objeto y a otra información interna que se utiliza para definir el objeto. Cuando se utiliza un objeto no necesitamos conocer todos los detalles de la implementación. Esta practica de limitación de acceso a cierta información interna se llama ocultamiento de datos.