Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


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

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

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 модуль, где описан первый класс ? или есть более правильный метод ?


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


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

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


palva   (2008-08-21 09:43:00) [2]

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


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

а почему нет?


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

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

pole1:=class2.create(self);

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


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

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


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

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

pole1:=class2.create( self);


Наверх

Титульная страница Поиск, карта сайта Написать письмо