Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
ВнизВидимость Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c