Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
Квэнди ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1249989451
TUser
2009-08-11 15:17
2009.10.11
Экзопланеты и другие астрономические открытия


15-1249677004
Юрий
2009-08-08 00:30
2009.10.11
С днем рождения ! 8 августа 2009 суббота


2-1249471810
r900000
2009-08-05 15:30
2009.10.11
Работа с oracle


6-1207822240
Chuck Loon
2008-04-10 14:10
2009.10.11
Disable WebBrowser


15-1249632827
yantux
2009-08-07 12:13
2009.10.11
delphi и 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский