Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Вопрос по ООП   Найти похожие ветки 

 
Константинов ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
14-1095206568
Мазут Береговой
2004-09-15 04:02
2004.10.03
Хакеры иногда бывают полезны.


3-1094470495
Heretic
2004-09-06 15:34
2004.10.03
Наверное сложный вопрос для понимания. :)


3-1094448164
AreSS
2004-09-06 09:22
2004.10.03
Помогите с DbGrid и RaveReports!!!


1-1095648629
JetMan
2004-09-20 06:50
2004.10.03
Как найти последний день месяца?


14-1095312521
professor
2004-09-16 09:28
2004.10.03
Перебор паролей - это взлом?