Introducción a la programación

La programaci�n orientada a objetos (POO u OOP en ingl�s) es una filosof�a de programaci�n que se basa en considerar que los programas est�n compuestos de unas unidades llamadas objetos, y las acciones que se ejecutan por tanto est�n relacionadas con ellos. Un objeto es un tipo de datos especial que re�ne una estructura de datos (lo que hemos llamado "tipo definido por el usuario"), as� como a los procedimientos que trabajan con estos datos. A partir de un objeto se pueden derivar otros objetos m�s especializados (lo que se conoce como herencia), situaci�n que permite modelar ciertas jerarqu�as que se dan en la vida real.

Pongamos, por ejemplo, que queremos realizar un programa que trate sobre seres vivos. Crearemos un objeto "ser vivo" que tendr� una serie de datos como "tiempo medio de vida" y unos m�todos (se llama m�todo a la funci�n o procedimiento que trabaja con los datos de un objeto) que permitir�n manipular estos datos. Ahora resulta que dentro de los seres vivos tenemos a las plantas y a los animales. Estas dos entidades son una especializaci�n del objeto primitivo "ser vivo". Cada uno de ellos es un ser vivo, pero tienen detalles que les hacen diferentes entre s� y por eso tienen que ser tratados de forma distinta. Dentro de los animales, a su vez, tenemos vertebrados e invertebrados. De nuevo, una especializaci�n, que tiene todas las caracter�sticas de los antecesores y algunas propias. Dentro de los vertebrados, tenemos peces, anfibios, reptiles, aves y mam�feros: una nueva especializaci�n.

Vamos a poner ahora un ejemplo m�s cercano al mundo de la programaci�n. Supongamos que queremos hacer un programa de dibujo. Probablemente querremos poner elementos como ventanas, botones, men�s, barras de desplazamiento... y otros.

Pensando un poco, todo esto se puede llevar a cabo con lo que uno sabe de programaci�n procedural, sin embargo, �no ser�a m�s f�cil (por ejemplo) tener un objeto VENTANA?

Este objeto podr�a tener las siguientes variables: coordenadas del rect�ngulo en el que se va a dibujar, estilo de dibujo... y podr�a tener unas funciones que, leyendo estos datos, dibujaran la ventana, cambiaran su tama�o, la cerraran...

La ventaja que tendr�a esto es que ya podemos crear cuantas ventanas queramos en nuestro programa, puesto que las funciones asociadas tendr�an en cuenta las variables de este objeto y no deber�amos pas�rselas como argumentos.

Igual que con la ventana, se podr�a crear el objeto BOTON, a partir del objeto ventana (pues a fin de cuentas se trata de un rect�ngulo que debemos de pintar), que podr�a tener como variables las coordenadas (heredadas de la ventana), si est� pulsado o no, si est� el rat�n sobre �l o no... y unas funciones que lo dibujaran, lo dibujaran pulsado, detectaran si se ha pulsado el bot�n, hicieran algo si ese bot�n se ha pulsado...

Las funciones de un objeto nos proporcionan un interfaz para manejarlo: no necesitamos saber c�mo est� hecho un objeto para poder utilizarlo.

Cuando creamos un objeto, en realidad estamos creando un 'molde', que recibe el nombre de clase, en el que especificamos todo lo que se puede hacer con los objetos (ahora s�) que utilicen ese molde. Es decir, en realidad lo que uno hace es crear una clase. Cuando va a utilizarla, crea instancias de la clase, y a estas instancias es a lo que se le llama objeto.

No vamos a dar una notaci�n rigurosa para la definici�n de clases puesto que esto es s�lo una introducci�n, y sobre POO se puede hablar bastante. Lo que vamos a dar es una peque�a orientaci�n sobre c�mo emplear la notaci�n de acceso a las partes de un objeto, pues el lector puede as� a partir de aqu� empezar a programar en un entorno como ser�a Delphi, sin saber mucho sobre POO, pero sabiendo lo suficiente como para emplear los objetos que Delphi pone a su disposici�n.

Por ejemplo, en el caso de la ventana, podr�amos definir una clase de la manera siguiente:

  CLASE Ventana
   VARIABLES
    x0, y0, x1, y1: ENTEROS
   FUNCIONES
    Inicializar_Coordenadas()
    Dibujar_Ventana()
    Mover_Ventana()
  FIN CLASE Ventana

Y cuando queramos tener una (o varias) ventanas, las declarar�amos (instanciar�amos) como cualquier otro tipo de variable:

Ventana Ventana1, Ventana2;

A la hora de acceder a las variables que tiene cada una de estas ventanas (cuyos valores son distintos para cada ventana) o de utilizar las funciones de cada una de estas ventanas, habr�a que poner:

Ventana1.x0 = 3;
Ventana2.Dibujar_Ventana();

es decir:

Objeto.Variable
Objeto.Funcion(argumentos)

En la definici�n de una clase se distinguen las partes privadas de las partes p�blicas. Un elemento privado de una clase es aquel que �nicamente puede modificarse/emplearse desde la propia clase. Si, en el ejemplo de la clase Ventana, declaramos las variables x0, y0, x1, y1 como privadas, s�lo desde el c�digo de las funciones de la clase Ventana se podr�a tener acceso/modificar estos valores, mientras que desde cualquier otro punto (funci�n principal del programa, otras funciones del programa) obtendr�amos un error al intentar acceder a estas variables. La motivaci�n de esto es la siguiente: cuando dise�amos un objeto, existen partes del mismo que no deben ser modificadas m�s que por el propio objeto, pues cualquier acceso desde otra parte del programa podr�a causar comportamientos extra�os. As�, declarando ciertas partes del objeto como privadas, se previenen los accesos indebidos que podr�an provocar problemas.

Todo lo contrario sucede con las partes p�blicas de un objeto: son variables o funciones que pueden ser accedidas desde cualquier punto del programa. Esto ser� as� porque su uso/modificaci�n en cualquier parte del programa no desencadenar� comportamientos extra�os en el objeto.

Existen, adem�s, dos funciones especiales llamadas constructor y destructor. La misi�n del constructor es inicializar aquellas variables que sea necesario tener inicializadas (muy probablemente pasando dichos valores al constructor) as� como poner a punto algunos comportamientos necesarios, quiz� llamando a alguna de las funciones de la clase, o bien reservar memoria en el caso de que trate con variables din�micas. La misi�n del destructor ser�, principalmente, la de liberar todos los recursos que hayan podido reservarse por el objeto.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO