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

Вниз

Организация взаимодействия классов   Найти похожие ветки 

 
Квэнди ©   (2008-08-20 17:29) [0]

Есть первый класс:

unit Unit20;

interface
uses classes,unit21;
type
class1=class(TObject)
 pole1:class2;
 str:string;
 constructor create;
end;
implementation
constructor class1.create;
begin
 pole1:=class2.create(self);
end;
end.


есть соответственно реализация второго класса:

unit Unit21;
interface
uses classes;
type
class2=class(TObject)
 public
   parent:TObject;
   function shs:string;
   constructor create (sender:TObject);
end;
implementation
constructor class2.create(sender: TObject);
begin
 parent:=sender;
end;
function class2.shs;
begin
 result:=(parent as class1).str;
end;
end.


Ну собственно логично что код работать не будет, вопрос вот в чем как организовать корректно:
Есть класс, поля которого в основном являются объектами других классов (описанных в других модулях), соответственно мы должны в uses подключить все модули, в которых описаны те классы
Но каждый из тех классов должен использовать некую переменную основного класса для своей работы. Как это правильней организовать ? в каждом из классов добавлять в implementation в uses модуль, где описан первый класс ? или есть более правильный метод ?


 
Medbe}I{onok XML ©   (2008-08-20 17:43) [1]

Все уже украдено до нас

pole1:=class2.create(self);


 
Medbe}I{onok XML ©   (2008-08-20 17:45) [2]

Либо передавать то нужное значение в конструктор если не хочешь обратной ссылки в юзезе класс2


 
Квэнди ©   (2008-08-20 17:47) [3]

Все уже украдено до нас

pole1:=class2.create(self);

но в любом случае разве тогда доступ из class2 будет к полям class1 ?


 
Medbe}I{onok XML ©   (2008-08-21 09:27) [4]

а почему нет?


 
palva ©   (2008-08-21 09:43) [5]

Вопрос, как я понял, о циклических ссылках юнитов ?


 
Квэнди ©   (2008-08-21 12:31) [6]


> Вопрос, как я понял, о циклических ссылках юнитов ?

Да, именно. Сейчас решил проблему так: создал класс, в котором в свойствах будут храниться все данные, необходимые для общего доступа и от этого наследую все остальные классы. Таким образом проблема циклических ссылок решилась. Это корректный способ ?



Страницы: 1 вся ветка

Текущий архив: 2009.10.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1250105371
Холивар
2009-08-12 23:29
2009.10.11
Образование и денежный поток.


3-1227857279
АндрейВладимирович
2008-11-28 10:27
2009.10.11
Ограничение списка автофильтра в cxGrid


6-1164726356
iXT
2006-11-28 18:05
2009.10.11
TIdMessage DateRecive?


15-1250141829
pvr
2009-08-13 09:37
2009.10.11
Управление фотоаппаратом


4-1219219075
ZeBriD
2008-08-20 11:57
2009.10.11
Закрытый ключ шифрования в хранилище Windows XP