7.3 El enfoque orientado a objetos

La idea fundamental que subyace en los lenguajes orientados a objetos es combinar en una única unidad tanto datos como funciones que operan sobre esos datos, tal unidad se denomina objeto. Un objeto es una abstracción de algo en un dominio del problema a resolver.

El mecanismo/concepto fundamental de la programación orientada a objetos es el objeto. Un objeto consta de los atributos (datos) y los métodos (subalgoritmos) que actúan sobre los datos. Los datos no son accesibles directamente a los usuarios del objeto. El acceso a los datos se garantiza sólo por los métodos proporcionados por el objeto. La orientación a objetos se denomina así porque este método ve las cosas que son parte del mundo real como objetos. Un teléfono es un objeto; la silla en que está sentado es un objeto; el libro que está leyendo es un objeto, etc. De igual forma son objetos, una bicicleta, una póliza de seguros, etc. Los objetos individuales de una clase se llaman instancias de esa clase.

Ejemplo: Clase: Mesa. Instancias: Mi mesa, Tu mesa, …

Estas instancias tienen los mismos atributos y posiblemente diferentes valores.

Los objetos que tienen el mismo conjunto de atributos se dice que pertenecen a la misma clase. Los objetos individuales de una clase se llaman instancias de esa clase. Las instancias tienen los mismos atributos pero con valores posiblemente diferentes.

En el paradigma de programación orientado a objetos se encapsula datos (atributos) y métodos (comportamiento) en objetos. Los datos y métodos de un objeto se conectan juntos. Los objetos tienen la propiedad de la ocultación de la información. Esto significa que aunque los objetos pueden conocer como comunicarse con otros objetos a través de interfaces bien definidas, los objetos normalmente no están autorizados a conocer como se implementan otros objetos (los detalles de implementación se ocultan dentro de los propios objetos). Se puede conducir un auto eficientemente sin conocer los detalles de cómo funciona internamente el sistema de transmisión, los frenos o el motor.

Los programadores bajo el paradigma imperativo estructurado procedimental se centran en escribir funciones. Los grupos de acciones que realizan algunas tareas se forman en funciones y las funciones se agrupan para formar programas. Los datos son muy importantes como soporte a las acciones que se ejecutan. Los programadores orientados a objetos se centran en crear sus “propios tipos de variables” denominados clases. Cada clase declara o especifica los datos, así como el conjunto de métodos que manipulan los datos. Igual que se llama variable a una instancia de un tipo predefinido (por ejemplo, int), una instancia de una clase se denomina objeto. Las clases se utilizan entonces para instanciar objetos que al trabajar juntos como un sistema resolverán el problema de interés.

Los métodos (funciones) de un objeto proporcionan la única manera para acceder a sus datos. Si se desean leer los datos de un objeto, se llama a una función miembro del objeto. No se debe/puede acceder a los datos directamente. Los datos están ocultos, así están protegidos de modificaciones accidentales. Los datos y las funciones se dice que están encapsulados en una única entidad. Si se desea modificar los datos de un objeto, se conoce exactamente cuales métodos interactúan con dichos datos. Ninguna otra función puede acceder a los datos. Esto simplifica la escritura, depuración y mantenimiento del programa.

Ejemplo: Listados con objetos del mundo real que se corresponden con objetos en programación orientada a objetos.

Objetos físicos

  • Automóviles en un sistema de simulación de tráficos.
  • Camiones en una empresa transportista.
  • Componentes eléctricos en un programa de diseño de circuitos.
  • Países en un modelo de comercio.
  • Aviones en un sistema de tráfico aéreo.

Elementos de un sistema informático

  • Unidad central, teclado, impresora, unidad de discos, unidad de DVDCDRW, etc.
  • Menús.
  • Ventanas.
  • Objetos gráficos (líneas, rectángulos, circulos, etc.).

Estructuras de datos

  • Pilas.
  • Colas.
  • Listas enlazadas.
  • Árboles binarios.
  • Árboles binarios de búsqueda.
  • Dobles colas.

Tipos de datos definidos por el usuario

  • El tiempo en formato horario.
  • Números complejos.
  • Puntos de un plano.
  • Ángulos de un sistema.
  • Fecha de un día.

Recursos Humanos

  • Empleados.
  • Clientes.
  • Proveedores.
  • Socios.
  • Vendedores.