{$codepage utf8} {$mode objfpc} Unit Numeros02; Interface Uses sysutils,math; Type EDatosInvalidos = class(Exception) End; TClassNumero = class of TNumero; TNumero = class private ParteReal,ParteImag:double; Procedure PonComp(indice:integer;r:double); Function ObtComp(indice:integer):double; public decimales:integer; Constructor Crear(i:double);virtual;abstract; Constructor Crear(r,i:double;dec:integer=0);virtual;abstract; Function ObtCad(dec:integer=0):string;virtual;abstract; Function PonCad(n:string):integer;virtual;abstract; Procedure PonCadE(n:string);virtual;abstract; Procedure Adicion(n:TNumero);virtual;abstract; Procedure Sustracion(n:TNumero);virtual;abstract; Procedure Division(n:TNumero);virtual;abstract; Procedure Cuadrado(n:TNumero);virtual;abstract; Procedure Cuadrado;virtual;abstract; Function modulo:double;virtual;abstract; Function argumento:double;virtual;abstract; Procedure Potencia(n:integer);virtual;abstract; Procedure Multiplicacion(n:TNumero);virtual;abstract; Property Real:double index 1 read ObtComp write PonComp; Property Imag:double index 2 read ObtComp write PonComp; End; Implementation Procedure TNumero.PonComp(indice:integer;r:double); Begin if indice=1 then ParteReal:=r; if indice=2 then ParteImag:=r End; Function TNumero.ObtComp(indice:integer):double; Begin if indice=1 then ObtComp:=ParteReal; if indice=2 then ObtComp:=ParteImag End; End.