Clases y objetos
Definici�n de clase
Definici�n de Objeto
Una primera clase
Un primer programa
Un segundo programa
El
an�lisis es la base de la programaci�n estructurada, es decir, la descomposici�n de una
tarea en tareas m�s peque�as. Existen los datos por una lado, con caracteristicas de
constantes y variables, locables o globales. Por otra parte cada funci�n tiene sus
propias variables, convirtiendose en m�dulos independientes. De esa
forma un programa no es otra cosa que una colecci�n de funciones que son llamadas
sucesivamente por la funci�n principal y que trabajan sobre los datos propios o generales
del programa.
La
Programaci�n Orientada a Objetos es el siguiente paso en la evoluci�n de los lenguajes
de programaci�n. En ella se combinan en un solo elemento autoconsistente funciones
y datos. El ente que permite esa agrupaci�n es la clase.
De
esta manera podemos definir las clases como una agrupaci�n de datos
y funciones (m�todos) que pueden ser trasmitidas a otras clases por medio de la herencia.
La
clase tendr� una definici�n y una instrumentaci�n. La definici�n est� formada
por el nombre de la clase, su condici�n de acceso, los datos de la clase y las
definiciones de las funciones (m�todos). Despues del nombre se situaran los
simbolos {} entre los que se ponen los datos y los m�todos. Despues del s�mbolo }
pondremos ; lo que se�aala el fin de la clase.
As�
tendremos:
| [condici�n de acceso] [class] [nombre de la clase] {<private>
: <datos>
<funciones>
<protected>: <datos>
<funciones>
[public] : <datos>
<funciones>
}; |
La
secci�n �private�. En esta secci�n de la clase se
situar�n aquellos datos y funciones que s�lo pueden ser utilizados dentro de la propia
clase. Es la restricci�n m�s fuerte que disponemos en la programaci�n orientada a
objeto (POO) y al mismo tiempo es la mejor manera de proteger nuestro c�digo. Va seguido
de :.
La secci�n �protected�.
Este es un nivel intermedio de acceso que nos brinda la POO. Los datos y
funciones situados en esta secci�n pueden ser utilizados por las funciones de la propia
clase y por las clases herederas de ella pero no por los objetos que construimos a partir
de la clase.
La secci�n �public�. De la
misma forma que private da inicio a la secci�n de su nombre el inicio de la secci�n
public esta marcado por la propia palabra reservada public, seguida igual que private de
dos puntos (:), al mismo tiempo que se da inicio a public se da fin a la secci�n private.
Los datos y funciones que se situan en est� secci�n pueden ser utilizados por:
las funciones de la propia clase, por los objetos que se generan a partir de esa clase y
por las clases que heredan de ella. Es el m�ximo nivel de utilizaci�n que nos
brinda la POO.
Los
objetos: Los objetos no son m�s que la realizaci�n concreta de una
clase. En la clase est�n los elementos generales validos a todos sus objetos, pero
al mismo tiempo en el objeto se encontraran los valores especificos de los datos y
funciones que presentan las clases. As� podemos tener una clase que tiene datos de
velocidad, tiempo, cantidad de elementos, pero todos ellos no son m�s que sitios de
memoria donde pueden ponerse valores. En el objeto tendremos ya que esas variables
adoptan valores especificos que son los que le dan existencia propia a cada objeto.
Para definir un objeto simplemente ponemos el nombre de la clase seguido del nombre del
objeto.
Veamos
la clase Cronometro como ejemplo de una clase m�nima.
#inclue<dos.h>
#include <conio.h>
#include <time.h> //Bibliotecas de C++ utilizadas en la clase
class Cronometro
{ private: time_t tiempo; //variable del tipo propio de C++ time_t
utilizado para almacenar el tiempo
public: void Arranca()
{tiempo = time(NULL); //inicializaci�n de la variable tiempo
}
void Muestra()
{ tm *tcadena; //variable de tipo tm utilizado
para trasformar el tiempo en una cadena de caracteres
tcadena = localtime(&tiempo); //localtime es
una funci�n de C++ que trasforma los datos time_t en tm
printf("La hora es: %s",asctime(tcadena));
//impresi�n del tiempo en el formato de cadena
getch(); //funci�n de C++ que espera que se oprima
enter para continuar
}
};
|
Una vez hecho esto guardamos el texto en un fichero que llamaremos "crono.h"
.
Ahora para trabajar con Objetos de la clase Cronometro, hacemos nuestro primer programa:
| #include
<crono.h> void main()
{ Cronometro Reloj;
Reloj.Arranca();
Reloj.Muestra();
} |
Como
vemos hemos definido para hacer el programa la biblioteca, creada por nosotros, crono.h
donde est� la clase Cronometro.
Para
crear el objeto Reloj le anteponemos el nombre de la clase, en este caso Cronometro.
El
llamado a las funciones Arranca() y Muestra() se realiza desde el objeto Reloj con las
sentencias:
Reloj.Arranca();
y Reloj.Muestra();
De
esa manera vemos que el dato tiempo no es utilizado directamente en el programa sino
atrav�s de las funciones.
Podemos
hacer un segundo programa con varios relojes:
| #include
<crono.h>
void main()
{ Cronometro Reloj1, Reloj2;
Reloj1.Arranca();
Reloj2.Arranca();
Reloj1.Muestra();
delay(2000);
Reloj2.Muestra();
} |
La
salida que tendremos ser�n dos tiempos con una diferencia de 2 segundos con lo que
comprobamos que cada objeto tiene su propio dato tiempo y que las funciones de cada objeto
llaman a su propio dato y no a otro.
Cada
objeto se comporta como un ente totalmente independiente.