Hasta ahora todos los problemas planteados hemos llamado a los métodos desde donde definimos un objeto de dicha clase, por ejemplo:
var Persona1: TPersona; begin Persona1 := TPersona.Create; Persona1.Cargar; Persona1.Imprimir; Persona1.EsMayorDeEdad; Persona1.Free;
Utilizamos la sintaxis:
[nombre del objeto].[nombre del método]
Es decir antecedemos al nombre del método el nombre del objeto y el operador punto.
Ahora bien que pasa si queremos llamar dentro de la clase a otro método que pertenece a la misma clase, la sintaxis es la siguiente:
[nombre del método]
O en forma larga:
self.[nombre del método]
Es importante tener en cuenta que esto solo se puede hacer cuando estamos dentro de la misma clase.
Plantear una clase Operaciones que en un método solicite la carga de 2 enteros y posteriormente llame a otros dos métodos que calculen su suma y producto.
program Proyecto130;
{$APPTYPE CONSOLE}
type
TOperacion = class
Valor1: Integer;
Valor2: Integer;
procedure Cargar;
procedure Sumar;
procedure Restar;
end;
procedure TOperacion.Cargar;
begin
Write('Ingrese primer valor:');
ReadLn(Valor1);
Write('Ingrese segundo valor:');
ReadLn(Valor2);
Sumar;
Restar;
end;
procedure TOperacion.Sumar;
var
suma: Integer;
begin
suma := Valor1 + Valor2;
WriteLn('La suma de ', Valor1, ' y ', Valor2, ' es ', suma);
end;
procedure TOperacion.Restar;
var
resta: Integer;
begin
resta := Valor1 - Valor2;
WriteLn('La resta de ', Valor1, ' y ', Valor2, ' es ', resta);
end;
var
operacion1: TOperacion;
begin
operacion1 := TOperacion.Create;
operacion1.Cargar;
operacion1.Free;
ReadLn;
end.
Nuestro método Cargar además de cargar los dos enteros en los campos procede a llamar a los métodos que calculan la suma y resta de los dos valores ingresados.
La llamada de los métodos de la misma clase se hace indicando el nombre del método.
Desde donde definimos un objeto de la clase TOperaciones llamamos a sus métodos antecediendo el nombre del objeto:
var operacion1: TOperacion; begin operacion1 := TOperacion.Create; operacion1.Cargar; operacion1.Free; ReadLn; end.
program Proyecto131;
{$APPTYPE CONSOLE}
type
TEdades = Array[1..5] of Integer;
THijos = class
Edades: TEdades;
procedure Cargar;
procedure mayorEdad;
procedure calcularPromedio;
end;
procedure THijos.Cargar;
var
f: Integer;
begin
WriteLn('Ingreso de Edades');
for f:=1 to 5 do
begin
Write('Ingrese la edad:');
ReadLn(Edades[f]);
end;
mayorEdad;
calcularPromedio;
end;
procedure THijos.mayorEdad;
var
f: Integer;
may: Integer;
begin
may := Edades[1];
for f:=2 to 5 do
if Edades[f] > may then
may := Edades[f];
WriteLn('La edad mayor de los 5 hijos es ', may);
end;
procedure THijos.calcularPromedio;
var
suma: Integer;
f: Integer;
promedio: Integer;
begin
suma := 0;
for f:=1 to 5 do
suma := suma + Edades[f];
promedio := suma div 5;
WriteLn('La edad promedio de los 5 hijos es ', promedio);
end;
var
hijos1: THijos;
begin
hijos1 := THijos.Create;
hijos1.Cargar;
hijos1.Free;
ReadLn;
end.