Главная страница
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.47 MB
Время: 0.026 c
1-1095331130
Users
2004-09-16 14:38
2004.10.03
Внедрение в EXE CRC. Проблема с маяком


14-1095162390
Knight
2004-09-14 15:46
2004.10.03
Можно ли использовать помощников MS в своих программах?


14-1095319510
VID
2004-09-16 11:25
2004.10.03
Зацените, плиз...


1-1095222353
ККВ
2004-09-15 08:25
2004.10.03
Деньги


3-1094021618
Senator
2004-09-01 10:53
2004.10.03
SQL