Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизВопрос по ООП Найти похожие ветки
← →
Константинов © (2004-09-18 22:36) [0]Допустим, есть базовый класс:
TBaseClass = class ( TPersistent )
private
FFont : TFont;
FPen : TPen;
public
constructor Create;
...
end;
...
constructor TBaseClass.Create;
begin
FFont := TFont.Create;
FPen := TPen.Create;
end;
и есть класс потомок:
TMyClass class ( TBaseClass )
published
property Font;
end;
Вопрос: Будет ли создан объект Pen в классе TMyClass?
и еще...
если объявить в TBaseClass свойство-список
private
FList : TList;
public
property Items[Index :integer] : TMyType...
и методы, позволяющее редактировать список
public
function Add ( const Value : TMyType ) : integer;
procedure Delete ( Index : integer );
procedure Clear;
...
function Add ( const Value : TMyType ) : integer;
var P : ^TMyType;
begin
GetMem(P,SizeOf(P^);
P^ := Value;
FList.Add(P);
end;
можно ли импользовать это свойство в потомках, но для
хранения данных другого типа, отличного от MyType?
если да, то как реализовать?
Заранее спасибо.
← →
Sergey_Masloff (2004-09-18 22:44) [1]А написать все это в среде и проверить? Заратустра не позволяет?
А вот это
function Add ( const Value : TMyType ) : integer;
var P : ^TMyType;
begin
GetMem(P,SizeOf(P^);
P^ := Value;
FList.Add(P);
end;
Вообще фигня если TMyType = class...
← →
DiamondShark © (2004-09-18 23:31) [2]
> Вопрос: Будет ли создан объект Pen в классе TMyClass?
Будет, если:
в классе TMyClass конструктор не перекрыт или
в перекрытом конструкторе TMyClass вызван конструктор предка.
> можно ли импользовать это свойство в потомках, но для
> хранения данных другого типа, отличного от MyType?
> если да, то как реализовать?
Можно. Переопределить свойство. Но помнить, что для переопределённых свойств нет полиморфизма.
Если этот самый "другой тип" -- родственник первого, то имеет смысл сделать свойство базового типа, а методы доступа к свойству виртуальными.
← →
basken (2004-09-20 11:12) [3]
> Вопрос: Будет ли создан объект Pen в классе TMyClass?
Будет...
> можно ли импользовать это свойство в потомках, но для
> хранения данных другого типа, отличного от MyType?
> если да, то как реализовать?
Можно. см [2].
Мне, кажется, было бы лучше использовать TObjectList вместо TList в данной ситуации. Та как TObjectList хранит объекты, а TList указатели на объекты.
← →
VMcL © (2004-09-20 11:43) [4]>>basken (20.09.04 11:12) [3]
>TObjectList хранит объекты, а TList указатели на объекты.
Нет. TList хранит указатели типа Pointer, а TObjectList - указатели типа TObject.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c