對不起,我是OOP的新手,所以我不知道我需要做什麼。如何製作這個面向對象?
我,說,繼承一個Object.They 10個不同的對象有不同的量和類成員的類型,但他們都有一個共同的特性 - 可見。
type TSObject=class(TObject);
protected
Visible:boolean;
end;
type
TObj1=class(TSObject)
private
a:integer;
...(More members)
end;
TObj2=class(TSObject)
private
b:String;
...(More members)
end;
...(Other 8 objects)
對於他們每個人我有一個變量。
var Obj1:TObj1;
Obj2:TObj2;
Obj3:TObj3;
....(Other 7 objects)
規則1:只有一個對象可以一次(其他人將被釋放)來初始化可見。
對於這個規則我有一個全局變量
var CurrentVisibleObj:TSObject; //Because they all inherit TSObject
最後有改變的知名度的過程。
procedure ChangeObjVisibility(newObj:TSObject);
begin
CurrentVisibleObj.Free; //Free the old object
CurrentVisibleObj:=newObj; //assign the new object
CurrentVisibleObj:= ??? //Create new object
CurrentVisibleObj.Visible:=true; //Set visibility to new object
end;
有我的問題,我不知道如何對其進行初始化,因爲派生類是未知的(TObj1,TOBJ2,Tobj3 ......哪一個?)。
我該怎麼做?
我簡化說明,在該項目有TFrames各自具有不同的控制和我必須設置可見/不相同的方式可見(通過只留下一個初始化幀)。
對不起再次爲冠軍,我非常新 OOP的。
我用另一種方式傳遞類的類型。我覺得更好,但是你寫的東西需要花時間,對此我很感激。+ 1&Accept。 – 2010-04-09 17:44:51
將類傳遞給ChangeObjVisibility將爲每個類的初始化創建一些限制。我更喜歡傳遞一個已經初始化的對象,而不是因爲這個原因傳遞classtype。它使設計更加靈活。 – 2010-04-09 20:21:14