Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.032 c
14-1094898365
Pat
2004-09-11 14:26
2004.10.03
Выбор языка для нового проекта


3-1094625570
VadimKV
2004-09-08 10:39
2004.10.03
Как вычислить факториал (5!) на языке SQL(FB1.5)???


1-1095663358
TAN_K
2004-09-20 10:55
2004.10.03
Клавиша < Enter> и Edit в модальной форме


14-1094888235
Piter
2004-09-11 11:37
2004.10.03
Какая температура в ванной?


4-1093512400
bjohny
2004-08-26 13:26
2004.10.03
Утечка памяти при загрузке DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский