![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видимость
faiwer © (2010-11-09 16:54:00)Доброго времени суток. Как реализовать такое?
class TA
...
construcor Create(some: TB);
end;
class TB
items: TList<TA>;
end;
То есть TA ссылается на TB, а TB использует TA. Можно конечно в разные модули вынести, но мне это не совсем удобно :)
P.S. D2010, W7
antonn (2010-11-11 09:20:00) [1]
> Германн © (11.11.10 02:48) [18]
чего? ты спросил - я ответил
Германн (2010-11-11 02:48:00) [2]
> antonn © (11.11.10 01:47) [17]
>
>
Ты же не мальчик.
Зачем влезать в чужую тему?
antonn (2010-11-11 01:47:00) [3]
> Германн © (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) и в ней было те два класса, которые я быразделил на разные юниты: корабль и список хранящий эти корабли. Один список - одна "команда", два списка - две враждующие "группировки". И в "корабль" в одном методе передается вражеский список (чтобы корабль нашел для себя цель). А так как я не захотел связываться с указателями, то нашел вот такие костыли :)
Palladin (2010-11-10 09:26:00) [4]
> faiwer © (10.11.10 09:10) [14]
по твоей логике к ооп относится все что угодно... begin/end, var, procedure...
...ты мне еще порассказывай, что верно что неверно )
Anatoly Podgoretsky (2010-11-10 09:12:00) [5]> faiwer (10.11.2010 08:49:12) [12]
Overload можно отнести к полиморфизму, но нельзя отнести к ООП
Транзитивная зависимость здесь не работает.
faiwer (2010-11-10 09:10:00) [6]
> Overload можно пременить просто для процедуры или функции.
Дык, я и не спорю :) Но в любом случае утверждение "overload - к ооп не относится" не верно, правильнее будет сказать "overload - не только к ооп относится" :) Или я о5 не прав?
stas (2010-11-10 09:01:00) [7]faiwer © (10.11.10 08:49) [12]
Overload можно пременить просто для процедуры или функции.
faiwer (2010-11-10 08:49:00) [8]Эмм как это?
> Директива Overload позволяет Вам иметь различные версии
> одинаково названной функции или процедуры с различными параметрами.
> Полиморфизм (polymorphism) (от греческого polymorphos) -
> это свойство, которое позволяет одно и то же имя использовать
> для решения двух или более схожих, но технически разных
> задач.
А согласно http://www.codenet.ru/progr/vbasic/oop.php
Полиморфизм есть третий кит ООП
Palladin (2010-11-10 08:45:00) [9]) overload - к ооп не относится... так, для общего развития
faiwer (2010-11-10 08:44:00) [10]
> Почитать описание используемого языка не пробовал?
Разумеется пробовал. Всякой литературы читывал, но одно дело когда знаешь что и как искать, другое дело, когда суть в голове вертится, а нормально составить запрос не получается. К тому же в ООП до сего момента использовал только overload, override, virtual && abstract.
Германн (2010-11-10 02:55:00) [11]
> antonn © (10.11.10 01:45) [7]
>
> даже не знаю, делать два класса в одном юните или лепить
> абстрактные - что из этого бОльший костыль :(
>
Стесняюсь спросить.
Какие "два класса в одном юните" ты имел в виду?
Германн (2010-11-10 01:54:00) [12]
> antonn © (10.11.10 01:45) [7]
>
> даже не знаю, делать два класса в одном юните или лепить
> абстрактные
Если ты о чём-то своём, то пожалуйста в "Прочее".
P.S. "Лепить абстрактные" - это что значит?
Абстрактные методы - это понятно. Что ещё может быть названо абстрактным?
antonn (2010-11-10 01:45:00) [13]даже не знаю, делать два класса в одном юните или лепить абстрактные - что из этого бОльший костыль :(
Германн (2010-11-10 01:06:00) [14]
> другое дело когда они в разных юнитах...
circular unit reference, однако :)
antonn (2010-11-10 00:43:00) [15]другое дело когда они в разных юнитах...
Плохиш (2010-11-09 23:59:00) [16]
> faiwer © (09.11.10 17:32) [3]
>
> stas, tnx. Помогло, даже не подозревал о такой возможности
Почитать описание используемого языка не пробовал?
faiwer (2010-11-09 17:32:00) [17]stas, tnx. Помогло, даже не подозревал о такой возможности )
stas (2010-11-09 17:15:00) [18]type
TA=class
TB=class
....
TA= class(TObject)
...
TB=class(TObject)
...
end
Anatoly Podgoretsky (2010-11-09 16:58:00) [19]> faiwer (09.11.2010 16:54:00) [0]
Сделай опережающее объявление Forward Declaration