Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1287260945
Юрий
2010-10-17 00:29
2011.01.30
С днем рождения ! 17 октября 2010 воскресенье


15-1287159733
VirEx(home)
2010-10-15 20:22
2011.01.30
чат mailslot домен нагрузка


11-1196774637
terc
2007-12-04 16:23
2011.01.30
подскажите как добавить kol компонент в lazarus


2-1289575914
faiwer
2010-11-12 18:31
2011.01.30
Windows 7


15-1286732325
Сергей
2010-10-10 21:38
2011.01.30
Литература для начинающих





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский