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

Вниз

Видимость   Найти похожие ветки 

 
faiwer ©   (2010-11-09 16:54) [0]

Доброго времени суток. Как реализовать такое?

class TA
 ...
 construcor Create(some: TB);
end;

class TB
 items: TList<TA>;
end;


То есть TA ссылается на TB, а TB использует TA. Можно конечно в разные модули вынести, но мне это не совсем удобно :)

P.S. D2010, W7


 
Anatoly Podgoretsky ©   (2010-11-09 16:58) [1]

> faiwer  (09.11.2010 16:54:00)  [0]

Сделай опережающее объявление Forward Declaration


 
stas ©   (2010-11-09 17:15) [2]

type
TA=class
TB=class
....
TA= class(TObject)
...
TB=class(TObject)
...
end


 
faiwer ©   (2010-11-09 17:32) [3]

stas, tnx. Помогло, даже не подозревал о такой возможности )


 
Плохиш ©   (2010-11-09 23:59) [4]


> faiwer ©   (09.11.10 17:32) [3]
>
> stas, tnx. Помогло, даже не подозревал о такой возможности

Почитать описание используемого языка не пробовал?


 
antonn ©   (2010-11-10 00:43) [5]

другое дело когда они в разных юнитах...


 
Германн ©   (2010-11-10 01:06) [6]


> другое дело когда они в разных юнитах...

circular unit reference, однако :)


 
antonn ©   (2010-11-10 01:45) [7]

даже не знаю, делать два класса в одном юните или лепить абстрактные - что из этого бОльший костыль :(


 
Германн ©   (2010-11-10 01:54) [8]


> antonn ©   (10.11.10 01:45) [7]
>
> даже не знаю, делать два класса в одном юните или лепить
> абстрактные

Если ты о чём-то своём, то пожалуйста в "Прочее".

P.S. "Лепить абстрактные" - это что значит?
Абстрактные методы - это понятно. Что ещё может быть названо абстрактным?


 
Германн ©   (2010-11-10 02:55) [9]


> antonn ©   (10.11.10 01:45) [7]
>
> даже не знаю, делать два класса в одном юните или лепить
> абстрактные - что из этого бОльший костыль :(
>

Стесняюсь спросить.
Какие "два класса в одном юните" ты имел в виду?


 
faiwer ©   (2010-11-10 08:44) [10]


> Почитать описание используемого языка не пробовал?

Разумеется пробовал. Всякой литературы читывал, но одно дело когда знаешь что и как искать, другое дело, когда суть в голове вертится, а нормально составить запрос не получается. К тому же в ООП до сего момента использовал только overload, override, virtual && abstract.


 
Palladin ©   (2010-11-10 08:45) [11]

) overload - к ооп не относится... так, для общего развития


 
faiwer ©   (2010-11-10 08:49) [12]

Эмм как это?


> Директива Overload позволяет Вам иметь различные версии
> одинаково названной функции или процедуры с различными параметрами.



> Полиморфизм (polymorphism) (от греческого polymorphos) -
>  это свойство, которое позволяет одно и то же имя использовать
> для решения двух или более схожих, но технически разных
> задач.


А согласно http://www.codenet.ru/progr/vbasic/oop.php
Полиморфизм есть третий кит ООП


 
stas ©   (2010-11-10 09:01) [13]

faiwer ©   (10.11.10 08:49) [12]
Overload можно пременить просто для процедуры или функции.


 
faiwer ©   (2010-11-10 09:10) [14]


> Overload можно пременить просто для процедуры или функции.


Дык, я и не спорю :) Но в любом случае утверждение "overload - к ооп не относится" не верно, правильнее будет сказать "overload - не только к ооп относится" :) Или я о5 не прав?


 
Anatoly Podgoretsky ©   (2010-11-10 09:12) [15]

> faiwer  (10.11.2010 08:49:12)  [12]

Overload можно отнести к полиморфизму, но нельзя отнести к ООП
Транзитивная зависимость здесь не работает.


 
Palladin ©   (2010-11-10 09:26) [16]


> faiwer ©   (10.11.10 09:10) [14]

по твоей логике к ооп относится все что угодно... begin/end, var, procedure...

...ты мне еще порассказывай, что верно что неверно )


 
antonn ©   (2010-11-11 01:47) [17]


> Германн ©   (10.11.10 02:55) [9]
>
>
> > antonn ©   (10.11.10 01:45) [7]
> >
> > даже не знаю, делать два класса в одном юните или лепить
> > абстрактные - что из этого бОльший костыль :(
> >
>
> Стесняюсь спросить.
> Какие "два класса в одном юните" ты имел в виду?

Я про "class abstract" (помоему с Д2007 есть) с "virtual; abstract;" методами, в этих методах идет обращение к другому классу ("1" обращается к "2", и "2" обращается к "1"), выносится в один юнит и оформляется как [2]. А уже сами классы "1" и "2" делаются наследниками от этих "абстрактных", каждый в своем юните.
А применение нашлось бы совсем недавно, не будь я так ленив (засунул оба класса в один юнит). Писал демо-игрушку ( http://forum.sources.ru/index.php?showtopic=314767&view=findpost&p=2721725 ) и в ней было те два класса, которые я бы разделил на разные юниты: корабль и список хранящий эти корабли. Один список - одна "команда", два списка - две враждующие "группировки". И в "корабль" в одном методе передается вражеский список (чтобы корабль нашел для себя цель). А так как я не захотел связываться с указателями, то нашел вот такие костыли :)


 
Германн ©   (2010-11-11 02:48) [18]


> antonn ©   (11.11.10 01:47) [17]
>
>

Ты же не мальчик.
Зачем влезать в чужую тему?


 
antonn ©   (2010-11-11 09:20) [19]


> Германн ©   (11.11.10 02:48) [18]

чего? ты спросил - я ответил



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

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

Наверх




Память: 0.51 MB
Время: 0.008 c
15-1285687990
Штырлиц
2010-09-28 19:33
2011.01.30
Как определить что приложение загрузило GUI


15-1285267773
Rouse_
2010-09-23 22:49
2011.01.30
Немного музыки


15-1286772364
12
2010-10-11 08:46
2011.01.30
Посоветуйте литературу по термохххх


8-1209027451
andreil
2008-04-24 12:57
2011.01.30
Как преобразовать 8-битеый цвет в 4-байтный TColor?


2-1289652658
12
2010-11-13 15:50
2011.01.30
Напомните о контрлах. InsertControl vs Parent