PROGRAMACIÓN ORIENTADA A OBJETOS


Introducción

Desde sus inicios, la programación ha estado gobernada por varias metodologías. En cada punto crítico en la evolución de la programación se creaba un nuevo enfoque para ayudar al programador a manejar programas cada vez más complejos.

Los primeros programas se realizaban en lenguaje máquina, con este lenguaje se podían elaborar programas muy pequeños y de poca complejidad. A continuación se diseñó el lenguaje ensamblador o assembler que permitió mediante el uso de código nemotécnico, generar programa un poco más largos y eficientes.

A fines de los años 50 aparece el Fortran, primer lenguaje de alto nivel, que incorpora el uso de variables e instrucciones de decisiones e interativos, sin embargo, generan programas poco ordenados y de difícil comprensión.

Durante los años ‘60 y ‘70 aparecen nuevos estilos de programación como la Programación Estructurada, la Programación Modular, el Diseño Descendente, etc. Estas metodologías se basan en un módulo principal que se divide en una serie de subprogramas o procedimientos individuales que a su vez se suddividen en otros procedimientos hasta llegar a niveles de código sencillos y elementales.

Esto lleva a la formación de equipos de programadores, asignándoles a cada miembro del equipo un conjunto de procedimientos independientes que luego se ensamblan en un programa completo.

Estas metodologías hicieron que la programación sea más ordenada, inteligible y eficiente. Sin embargo, esta nueva forma de programas trajo algunos inconvenientes, se trabajaba en función de datos y procedimientos, ambos independientes el uno del otro. Por ejemplo una estructura de datos como una "Pila" se define teniendo en cuenta dos cosas:

  1. Un conjunto de datos como un arreglo o una lista enlazada de punteros. El arreglo se definiría de la siguiente forma:

    int Pila [100];
    int top;
  2. Un conjunto de operaciones (funciones o procedimientos) que modifican esos datos, como Push(Pila,Valor), Pop(Pila, Dato), Inicia (Pila), etc.


Sin embargo "Pila" es un arreglo, no es una pila, sólo las funciones y procedimientos la definen como tal.

Por otro lado, si definimos una variable adicional como:

int Fin;

Y luego las funciones y procedimientos como IniciaCola (Pila), InsertaEnCola (Pila,Dato), etc., a pesar de llamarse Pila, este arreglo se va a comportar como una Cola. En otras palabras, los datos no definen las cosas con las que deseamos trabajar mientras que no declaremos las funciones que lo manejan.

En los años ‘90 surge otro estilo de Programación denominada Programación Orientada a Objetos (OOP).

Un programa Orientado a Objetos trabaja básicamente, con elementos denominados "Objetos". Un objeto es, en términos de código de programa, una extensión del concepto de registro, sin embargo; la diferencia es que los campos pueden ser funciones y procedimientos que permiten manejar los objetos, esto permite, por ejemplo, que al definir una "Pila", lo hagamos de la siguiente manera:

Objeto Pila:
    Entero Elemento [100];
    Entero top:
    Inicia ()
        ___________
        ___________
        ___________
    Push (Entero Dato)
        ___________
        ___________
        ___________
    Pop (Entero Dato)
        ___________
        ___________
        ___________
    Fin Objeto Pila;
        ___________
        ___________
        ___________

La ejecución de un programa que maneja este objeto se hace de forma similar a la siguiente:

Pila.Inicia ();
Lee (Dato);
Pila.Push (Dato);

Como podrá apreciarse, el objeto "Pila" es en sí una pila.

Los mecanimos básicos de la Programación Orientada a Objetos son:

ObjetoClase
AtributoHerencia
MétodoEncapsulamiento
MensajePoliformismo

Objeto

Un objeto es una unidad elemental en la Programación Orientada a Objetos, está formada por una combinación de características o datos denominados "atributos", y una colección de operaciones que muestran el funcionamiento del objeto y que operan sobre sus Atributos, denominadas "funciones miembro" o "métodos".

Clase

Las clases son plantillas o modelos que definen un objeto.

Una clase describe los métodos y atributos que definen las características comunes a todo objeto que se define a partir de ésta.

En términos de código de programación, una clase es el tipo de dato que se empleará para definir las variables que en este caso serán los objetos.

Atributo (Miembro Dato)

Característica que define un objeto. En términos de código de programación, un atributo es un campo que representa el estado del objeto.

Por ejemplo, en el objeto Pila, un atributo es el campo "top" que define la ubicación del último dato introducido en la pila y "Elemento" es un arreglo que contiene los datos apilados.

Herencia

La herencia es la propiedad que permite a la clases (u objetos) constituirse a partir de otras clases.

Se dice que una clase que hereda las propiedades de otra (Clase Base) es una clase derivada o subclase.

Las siguientes figuras muestran este concepto:

Clase Base


Clases Derivadas


Método (función Miembro)

Determina cómo se va a comportar un objeto, en términos de código de programación, un método es una función (o procedimiento) que permite realizar una operación sobre un objeto.

Encapsulamiento

El término encapsulamiento se refiere a la ocultación de datos.

La encapulación de datos es una técnica empleada en la mayoría de metodologías de programación. Cuando se emplea una función a la que se le entrega información vía únicamente por sus parámetros y de la que se obtiene un resultado sin saber cómo exactamente lo consiguió y sin esperar que su proceso altere alguna variable del programa que la utilizó y que tampoco el programa pueda modificar las variables empleadas por la función, se dice que la función encapsula sus datos.

En otras palabras, la técnica de encapsulación de datos prohibe el uso de variables globales en todo nivel. Esta técnica hace posible que en una función se pueda denominar, definir y utilizar cualquier tipo de variable sin preocuparse por alterar voluntaria o involuntariamente los datos empleados por otros segmentos del programa.

La encapsulación de datos es empleada en forma estricta por la Programación Orientada a Objetos.

Mensaje

Un mensaje es un proceso mediante el cual se invoca una operación sobre un objeto. Cuando se ejecuta un Programa Orientado a Objetos, los objetos están constantemente recibiendo, interpretando y respondiendo mensajes a otros objetos.

Estructuralmente, un mensaje consta de tres partes:

Por ejemplo:


Poliformismo

El polimorfismo es una propiedad de los objetos que se refiere al hecho que una misma operación puede tener diferente comportamiento en diferente objetos, es decir que diferentes objetos reaccionan en modo diferente al mismo mensaje.

Este concepto está muy relacionado con el manejo de punteros a objetos, por lo que la implementación se hará más adelante.



Volver a contenidos AtrásSiguiente