Главная страница
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.079 c
1-1095339716
Zilog
2004-09-16 17:01
2004.10.03
...запретить обращение к управляющим элементам на форме...


1-1095657753
prorok2
2004-09-20 09:22
2004.10.03
Форма и сообщения системы


14-1095335509
Cosinus
2004-09-16 15:51
2004.10.03
Как свести воедино видео (avi) и аудио(wav). Точнее чем?


3-1094201922
Klerk
2004-09-03 12:58
2004.10.03
Insert c датой


6-1090999597
wHammer
2004-07-28 11:26
2004.10.03
Отправка почты