1. Creamos un nuevo proyecto.
2. Agregamos en la forma un botón y un Memo.
3. Creamos una clase con el clasico ejemplo de Mamifero.
TMamifero = class(TObject)
Nombre: string;
Patas: integer;
function MuestraDatos:string;
end;
4. Ahora escribimos algo de código en la función
MuestraDatos (puedes hacerlo posicionandote en la función y presionando con Ctrl+Shift+C)
{ TMamifero }
function TMamifero.MuestraDatos: string;
begin
result := nombre + ' tiene ' + inttostr(patas) + ' patas';
end;
5. En el evento onClick del botón escribimos este código.
procedure TForm1.Button1Click(Sender: TObject);
var
Mamifero: TMamifero; //Asignamos una variable del tipo TMamifero
begin
Mamifero := TMamifero.Create; //Creamos el objeto
with Mamifero do begin
Nombre := 'Perro';
Patas := 4;
Memo1.Lines.Add(MuestraDatos); //Mostramos en el memo el resultado de la función MuestraDatos
end;
end;
Bueno, hasta aquí podrán observar que hemos creado una clase base
TMamifero, ahora vamos a crear una clase que va a heredar de la clase base sus caracteristicas.
6. Creamos una clase de nombre
TPerro la cual decenderá de la clase
TMamifero.
TMamifero = class(TObject)
Nombre: string;
Patas: integer;
function MuestraDatos:string; virtual;
end;
TPerro = class(TMamifero)
Raza: string;
function MuestraDatos:string; override;
end;
Esta clase hereda de la clase TMamiferos El Nombre y las Patas, pero se agrega a ella el dato Raza y la función
MuestraDatos que tiene el mismo nombre que la función base. Hay que notar que se han escrito dos palabras reservadas (virtual en la clase base y override en la clase derivada) adelante de cada una de las funciones, esto es necesario cuando una función en la clase base es redefinida en la clase derivada.
7. Ahora escribimos algo de código en la función
MuestraDatos de la clase derivada, la cual requerimos que tenga diferente retorno (puedes hacerlo posicionandote en la función y presionando con Ctrl+Shift+C)
function TPerro.MuestraDatos: string;
begin
result := nombre + ' tiene ' + inttostr(patas) + ' patas y es de raza ' + Raza;
end;
8. Agregamos mas código a nuestro evento del Botón
procedure TForm1.Button1Click(Sender: TObject);
var
Mamifero: TMamifero;
Perro: TPerro;
begin
//Clase base
Mamifero := TMamifero.Create;
with Mamifero do begin
Nombre := 'Perro';
Patas := 4;
Memo1.Lines.Add(MuestraDatos);
end;
//Clase derivada
Perro := TPerro.Create;
with Perro do begin
Nombre := 'Bobby';
Patas := 4;
Raza := 'Chihuahua';
Memo1.Lines.Add(MuestraDatos);
end;
end;
Ejecutamos el programa y veremos la diferencia entre las dos funciones declaradas.
8. Podemos notar que las dos funciones MuestraDatos son realmente similares, pero aquí es donde vamos a ver los beneficios de la herencia de clases.
Reescribimos el código de la función de la clase derivada MuestraDatos de esta forma:
function TPerro.MuestraDatos: string;
begin
result := inherited MuestraDatos + ' y es de raza ' + Raza;
end;
Agregamos la palabra reservada
inherited para heredar el comportamiento de la función
MuestraDatos de la clase base dentro de la función de la clase derivada, ejecutamos el programa y vean el resultado.
Con esto terminamos este tutorial, esperando que sea de utilidad.
Salud OS