7.2 Modelado del mundo

Uno de los problemas (y tal vez el más importante) del paradigma procedimental es que la disposición independiente de datos y funciones realiza un pobre modelado de cosas del mundo real. En el mundo físico, se trata con objetos tales como personas y autos. Tales objetos no son ni como los datos ni como las funciones. Los objetos complejos del mundo real tienen atributos, comportamiento e identidad.

Un objeto no sólo encapsula su estado (variables) sino también su comportamiento. El comportamiento de un objeto se describe en términos de servicios (operaciones) proporcionados por ese objeto que modifican o inspeccionan el estado. Estos servicios se invocan enviando mensajes del objeto que solicita el servicio al objeto sobre el que se envía el mensaje. Normalmente el único medio para acceder a un objeto es a través de las operaciones. Estas operaciones, por consiguiente, actúan como una interfaz al objeto.

7.2.1 Atributos

Los atributos son las propiedades de los objetos (a veces denominados características). Por ejemplo, en el caso de personas, el color de los ojos, el título de un empleado, y en el caso de autos, la potencia, el número de puertas o el modelo. A su vez los atributos del mundo real son equivalentes a los datos de un programa: tienen un cierto valor específico, tal como azul (color de lo ojos), 150 CV (potencia en caballos de vapor en automóviles) o cinco (para el número de puertas).

Los atributos representan la identificación y propiedades descriptivas. A nivel de lenguaje de programación los objetos que tienen el mismo conjunto de atributos se dice pertenecen a la misma clase.

El estado agrupa los valores instantáneos de todos los atributos de un objeto, donde un atributo es una información que cualifica al objeto que la contiene. Cada atributo puede tomar un valor en un ámbito dado. El estado de un objeto, en un instante dado, corresponde a una selección de valores, entre todos los valores posibles para cada atributo. El estado evoluciona con el tiempo.

Ejemplo: Un auto perteneciente a la clase Auto tiene los atributos: Marca, color, peso y potencia.

Un auto:

  • Audi
  • Azul cielo
  • 1.100 Kg
  • 150 CV

El estado de auto es variable. Algunos componentes son constantes (marca, país de su fabricación, etc.). La cantidad de litros en el tanque de gasolina varía a medida que se usa el auto; el color puede cambiar si su dueño decide pintarlo con un color distinto al de fábrica.

7.2.2 Comportamiento

El comportamiento es algo que un objeto del mundo real hace en respuesta a los mismos estímulos. Por ejemplo, si usted solicita a su empresa un aumento de sueldo, normalmente le contestarán si o no. Si se aplica una acción sobre los frenos de un coche, normalmente, se detendrá. “Aumentar el sueldo” y “detener” son ejemplos de comportamiento. El comportamiento es como una función: una función es llamada para para hacer algo y ese algo se hace.

El comportamiento agrupa todas las competencias de un objeto y describe las acciones y reacciones de ese objeto. Cada elemento de comportamiento se denomina operación. Las operaciones de un objeto se ejecutan a consecuencia de un estímulo externo, representado en forma de un mensaje enviado por sí mismo o por otro objeto.

7.2.3 Identidad

La identidad es una propiedad fijada por la cual se identifica a un objeto de otro. Si tiene dos tazas de café del mismo juego, se dice que son iguales pero no idénticas. Ambas son de igual tamaño, color, forma, material, están vacías (o llenas), etc, es decir, son iguales, pero no son idénticas, ya que usted puede elegir para tomar su café una u otra.

Un objeto posee una identidad que caracteriza su propia existencia. La identidad permite distinguir los objetos de una manera no ambigua, independientemente de su estado. Esto permite distinguir dos objetos en los que todos los valores de sus atributos son idénticos.

7.2.4 Paso de mensajes

Una acción se inicia por una petición de un servicio (mensaje) que se envía a un objeto específico, no como en programación procedimental en la que una llamada de función utiliza un dato específico. El estilo de programación imperativo estructurado procedimental presta especial importancia a las funciones, mientras que el estilo orientado a objetos proporciona especial importancia al objeto. Por ejemplo, se puede llamar a una función para que ponga un dato en un tipo de dato “cola” o bien transmitir un mensaje al objeto “cola” para que realice la acción de recibir o poner un valor en sí misma.

El paso de mensajes proporciona la capacidad de sobrecargar nombres y reutilizar software; esto no es posible utilizando el estilo imperativo. Implícito a la idea de mensaje es la idea de que la interpretación de un mensaje puede variar para objetos de diferentes clases. Es decir, el comportamiento dependerá de la clase de objeto que recibe el mensaje. La mensaje/servicio “poner” puede significar una cosa en objetos de la clase “cola” y otra muy distinta en cualquier otro objeto.

Con frecuencia, hay servicios/mensajes para solicitar cierta información de un objeto. Esta información puede ser relativa al estado de la instancia del objeto, pero también puede implicar un cálculo de algún tipo.