Saltar a contenido

Visibilidad y objetos (instanciación)

Visibilidad

El principio de ocultación es una propiedad de la orientación a objetos que consiste en aislar el estado de manera que sólo se puede cambiar mediante las operaciones definidas en una clase. Este aislamiento protege a los datos de que sean modificados por alguien que no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

Da lugar a que las clases se dividan en dos partes:

  1. Interfaz: captura la visión externa de una clase, abarcando la abstracción del comportamiento común a los ejemplos de esa clase.
  2. Implementación: comprende cómo se representa la abstracción, así como los mecanismos que conducen al comportamiento deseado.

Existen distintos niveles de ocultación que se implementan en lo que se denomina visibilidad. Es una característica que define el tipo de acceso que se permite a atributos y métodos:

  • Público: se pueden acceder desde cualquier clase y cualquier parte del programa.
  • Privado: sólo se pueden acceder desde operaciones de la clase.
  • Protegido: sólo se pueden acceder desde operaciones de la clase o de clases derivadas en cualquier nivel.

Norma general al definir visibilidad

  • El estado debe ser privado. Los atributos de una clase se deben modificar mediante métodos de la clase creados a tal efecto.
  • Las operaciones que definen la funcionalidad de la clase deben ser públicas.
  • Las operaciones que ayudan a implementar parte de la funcionalidad deben ser:
  • privadas (si no se utilizan desde clases derivadas), o
  • protegidas (si se utilizan desde clases derivadas).

Objetos. Instanciación

Una clase es una abstracción que define las características comunes de un conjunto de objetos relevantes para el sistema.

Cada vez que se construye un objeto en un programa informático a partir de una clase se crea lo que se conoce como instancia de esa clase. Cada instancia en el sistema sirve como modelo de un objeto del contexto del problema relevante para su solución, que puede realizar un trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema, sin revelar cómo se implementan estas características.

Un objeto se define por:

  • Su estado: es la concreción de los atributos definidos en la clase a un valor concreto.
  • Su comportamiento: definido por los métodos públicos de su clase.
  • Su tiempo de vida: intervalo de tiempo a lo largo del programa en el que el objeto existe. Comienza con su creación a través del mecanismo de instanciación y finaliza cuando el objeto se destruye.

La encapsulación y el ocultamiento aseguran que los datos de un objeto están ocultos, con lo que no se pueden modificar accidentalmente por funciones externas al objeto.

Ejemplos de objetos

  1. Objetos físicos: aviones en un sistema de control de tráfico aéreo, casas, parques.
  2. Elementos de interfaces gráficas de usuario: ventanas, menús, teclado, cuadros de diálogo.
  3. Animales: animales vertebrados, animales invertebrados.
  4. Tipos de datos definidos por el usuario: datos complejos, puntos de un sistema de coordenadas.
  5. Alimentos: carnes, frutas, verduras.

Caso particular: clase abstracta

Existe un caso particular de clase, llamada clase abstracta, que, por sus características, no puede ser instanciada. Se suelen usar para definir métodos genéricos relacionados con el sistema que no serán traducidos a objetos concretos, o para definir métodos de base para clases derivadas.