Главная страница
    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.045 c
14-1094873056
Aplay
2004-09-11 07:24
2004.10.03
Коллекция старых программ


3-1093433284
stud
2004-08-25 15:28
2004.10.03
refresh в ибдатасет


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


4-1093455004
Dimka-gl
2004-08-25 21:30
2004.10.03
темы WinXP


14-1095408397
wicked
2004-09-17 12:06
2004.10.03
Знатокам C++





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский