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.