Héritage entre deux classes

cs_fadoro Messages postés 3 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 29 avril 2005 - 29 avril 2005 à 20:06
Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 - 30 avril 2005 à 11:02
J'ai codé deux classes sur deux unités séparées: polygone qui permet de tracer un polygonee sur le paintbox et polyregulier, la m^me chose sauf qu'il est regulier. Je voudrais que la classe polregulier, qui est un polygone particulier, hérite de l'attribut liste:tlist, ainsi que des méthodes affichage e, rotation et translation.
J'ai pensé coder de la manière suivante ,mais c'est plein d'erreurs cela ne compile pas: quelqu'un a-t-il une solution qui ne modifie pas trop le code existant(aussi imparfait soit-il)?

unit polyregulier;

interface

uses graphics,classes,point,math,polygone;

type tpolyregulier=class(tpolygone)
O:tpoint;
r,sommet:integer;
constructor create(O:tpoint;r,sommet:integer);
end;

implementation

constructor tpolyregulier.create(O:tpoint;r,sommet:integer);
var i,x,y:integer;
pt:tpoint;

begin
self.O:=O;
self.r:=r;
self.sommet:=sommet;
inherited(tpolygone.create(l:tlist));
for i:=0 to sommet-1 do
begin
x:=O.abs+trunc(r*cos((i*360/sommet)*(PI/180)));
y:=O.ord+trunc(r*sin((i*360/sommet)*(PI/180)));
pt:=tpoint.create(x,y);
l.Add(pt);
end;
end;

end.

sachant que la classe polygone est codée de la manière suivante:

unit Polygone;

interface
uses graphics,point,ligne,classes,math;

type
tpolygone=class
liste: tlist;
constructor create(list:tlist);
procedure affichage (canvas:tcanvas);
procedure rotation(a : real; pt0:tpoint);
procedure translation (x0,y0:integer);
end;

implementation

constructor tpolygone.create(list:tlist);
begin
liste:=tlist.Create;
liste.Assign(list);
end;

procedure tpolygone.affichage(canvas:tcanvas);
var
pta,ptb:tpoint;
i :integer;
begin
pta:=tpoint(liste.Items[0]);
canvas.MoveTo(pta.abs,pta.ord);
for i:=1 to liste.count-1 do
begin
ptb:=tpoint(liste.Items[i]);
canvas.LineTo(ptb.abs,ptb.ord);
end;
canvas.lineTo(pta.abs,pta.ord);
end;

procedure tpolygone.rotation (a : real; pt0:tpoint);
var pta,ptd: tpoint ;
i:integer;
x, y :integer;
begin
for i:=0 to liste.Count-1 do
begin
ptd := tpoint(liste.Items[i]);
x :=trunc ((ptd.abs-pt0.abs)*(cos(degtorad(a)))-(ptd.ord-pt0.ord)*(sin(degtorad(a)))+pt0.abs);
y :=trunc((ptd.abs-pt0.abs)*(sin(degtorad(a)))+(ptd.ord-pt0.ord)*(cos(degtorad(a)))+pt0.ord);
pta := tpoint.create (x,y);
liste.Items[i]:=pta;
end;
end;

procedure tpolygone.translation(x0,y0: integer);
var i:integer;
begin
for i:=0 to liste.count-1 do
begin
TPoint(liste.Items[i]).abs:=TPoint(liste.Items[i]).abs+x0;
TPoint(liste.Items[i]).ord:=TPoint(liste.Items[i]).ord+y0;
end;
end;
end.


Voila, merci davance

1 réponse

Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 1
30 avril 2005 à 11:02
Ne cherche plus! Même pas besoin de lire 2 lignes pour trouver ton erreur. Tu as oublié de préciser public, private, protected pour les propriétés et les méthodes de ta classe.
Ce ne sont peut-être pas les seules erreurs, mais bon c'est déjà un début.
0
Rejoignez-nous