unit unit_figura_base;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
grafica, tpenna;
type FiguraBase=class
private
pennino:TipoPenna;
procedure setPennino(p:TipoPenna);
protected
procedure setPennaInfoglio();
var inizializzata:boolean;
foglio:Ttavola;
public
constructor crea(seme:Ttavola);
procedure setPuntoInizio(x,y:integer); virtual;
procedure setPuntoFine(x,y:integer); virtual;
procedure traccia(); virtual;
function denominazione:string; virtual;
function perimetro: double; virtual;
function area: double; virtual;
procedure setFoglio(nuovoSeme: Ttavola);
function figuraInizializzata:boolean;
property penna:TipoPenna read pennino write setPennino;
end;
implementation
constructor FiguraBase.crea(seme:Ttavola);
begin
foglio:=seme;
inizializzata:=false;
pennino.spessore:=1;
pennino.colore:=$7E7E7E;
setPennaInfoglio();
end;
procedure FiguraBase.setPuntoInizio(x,y:integer);
begin
{ non fa nulla; prototipo}
inizializzata:=true;
end;
procedure FiguraBase.setPuntoFine(x,y:integer);
begin
{ non fa nulla; prototipo}
end;
procedure FiguraBase.traccia();
begin
{ non fa nulla; prototipo }
end;
function FiguraBase.denominazione:string;
begin
denominazione:='Figura base';
end;
procedure FiguraBase.setPennaInfoglio();
begin
foglio.spessore:=pennino.spessore;
foglio.tinta:=pennino.colore;
end;
procedure FiguraBase.setPennino(p:TipoPenna);
begin
pennino:=p;
end;
procedure FiguraBase.setFoglio(nuovoSeme: Ttavola);
begin
foglio:=nuovoSeme;
end;
function FiguraBase.figuraInizializzata:boolean;
begin
figuraInizializzata:=inizializzata;
end;
function FiguraBase.perimetro: double;
begin
perimetro:=0.0;
end;
function FiguraBase.area: double;
begin
area:=0.0;
end;
end.