|
|
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-CiteчччДпропущено... А как ты реализуешь два класса в раздельных модулях, чтобы в каждом классе было поле типа другого класса? Это не C#, тут от циклических ссылок в uses компилятор благим матом вопит. Думаешь, в дельфи монструозных размеров модули создают из-за гигантофилии? Это решается разделением абстракции от реализации Код покажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 20:22 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччДX-Citeпропущено... Это решается разделением абстракции от реализации Код покажи. ща он интерфейсов накидает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 21:12 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
defecatorща он интерфейсов накидает Зачем, если вдруг требуется циклическая зависимость, то это обычно необходимо только, если зависимый должен уведомлять владельца о чем либо. Например коллекция и элементы.. Тогда это Наблюдатель (шаблон проектирования) Если вдруг надо выполнить работу которую делает владелец из зависимого, то это уже некорректное проектирование и надо произвести композицию, выделить поведение в отдельную реализацию и передать ее как ссылку из владельца в зависимый элемент. Например это можно сделать через Мост (шаблон проектирования) При чем в этом случае можно обойтись без интерфейсов. В первом случае тоже можно обойтись без интерфейсов, если делегировать принцип наблюдения другим классам. Но это будет слегка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 21:32 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Шо тут показывать. Сделать одному из классов предка в отдельном модуле, да и всё. И в оба модуля подключить этот доп. модуль. Ну а во втором классе тип свойства указать как этот предок. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 21:45 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-Citedefecatorща он интерфейсов накидает Зачем, если вдруг требуется циклическая зависимость, то это обычно необходимо только, если зависимый должен уведомлять владельца о чем либо. Например коллекция и элементы.. При чем, если уведомлять коллекцию надо только для того, чтобы она уведомила другие элементы, то паттерн Наблюдатель тут не нужен. Здесь поможет Посредник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:01 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-CiteПри чем, если уведомлять коллекцию надо только для того, чтобы она уведомила другие элементы, то паттерн Наблюдатель тут не нужен. Здесь поможет Посредник если перевести на русский, то это звучит как "фигачь OnClick, OnDraw, .... и ... выё..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:10 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-Citedefecatorща он интерфейсов накидает ... Например... Код давай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:14 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччДX-Citeпропущено... ... Например... Код давай. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Дополни код, чтобы он компилировался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:20 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Хорош троллить человека. :) Ну третий модуль добавь, например. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:33 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
...паттерн Наблюдатель...Посредник... И го'вна от GoF тоже не помогут, никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:34 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам... Ну третий модуль добавь, например. И чем это поможет? В Delphi уже позволена Forward declaration классов за пределами модуля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:38 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччД> И чем это поможет? От circular unit reference спасёт, ссылаться на третий модуль позволит. P.S. Выключи дурочку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:45 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччДчччДпропущено... Код давай. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Дополни код, чтобы он компилировался. Это называется некорректно спроектированная архитектура. Так нельзя писать. Для этого необходимо произвести композицию реализации с выделением абстракции... То что вы написали, называется, как умею так и пишу... А сама среда еще и потворствует не думать, а писать как умею... Вся суть RAD в том, чтобы быстро выпускать небольшие продукты не рассчитывая на расширяемость... Когда проект или фреймворк превращается в долгоиграющий с постоянным расширением фуфнкционала растянутым во времени, такая практика приводит к печальным последствиям... Например к словам проще все переписать, чем вникнуть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:07 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-Cite...некорректно спроектированная архитектура...нельзя...необходимо произвести композицию реализации с выделением абстракции... Эту скучную песенку постоянно пели и шарписты, пока в очередной версии им перекрестные ссылки не разрешили. Теперь они просто действительно разносят классы по модулям. Или не разносят, в зависимости от настроения. Как и си-плюс-плюсники и другие программисты (кроме дельфистов, конечно, которые не просто катят квадратное колесо, а еще и нахваливают дорожные ямы). А так-то, да, так писать нельзя, полностью согласен. В Delphi. Не скомпилируется ибо. Исключительно из-за рукожопости разработчиков компилятора Delphi. ... ... ... Ну так что - будет код или ля-ля про паттерны дальше будешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:23 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
"Циркулярные" ссылки, конечно, не "перекрестные". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:25 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччДНу так что - будет код или ля-ля про паттерны дальше будешь? Окей.. Чтобы написать код, мне нужна цель для которой необходимо так сделать... Ставь цель: например TA с помощью FB должен сделать то, а TB с помощью FA должен сделать это.. А я что-нибудь придумаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:28 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамчччД> И чем это поможет? От circular unit reference спасёт, ссылаться на третий модуль позволит. P.S. Выключи дурочку. Может, хоть ты код покажешь? 21257210 - допиши несколько строк, трудно тебе, что ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:30 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччД> Может, хоть ты код покажешь? > 21257210 - допиши несколько строк, трудно тебе, что ли. Какой-то ты вредный в ночь со вторника на четверг. Не трудно, а лень. Ну, например, так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Давай, начинай рассказывать, что это некошерно, лишний модуль и класс и вообще тебе обязательно ссылка на потомок нужна, а не на базовый. Я заранее со всем соглашусь, чтобы два раза не вставать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:49 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
X-CiteчччДНу так что - будет код или ля-ля про паттерны дальше будешь? Окей.. Чтобы написать код, мне нужна цель для которой необходимо так сделать... Ставь цель: например TA с помощью FB должен сделать то, а TB с помощью FA должен сделать это.. А я что-нибудь придумаю... Вот тебе цель, вместе с ТЗ: 21257210 Ты же не обезьянка, а программист, должен уметь решать абстрактные задачи. Тем более, я тебя за язык не тянул, ты сам вызвался. А если у тебя вопросы по примерам - открой, к примеру, файл DB.pas - там их море. И заодно задумайся - от чего там в начале модуля такие смешные строчки: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Ты действительно думаешь, в этом модуле более 10тыс исключительно из любви к искусству? Нет, всего лишь потому, что классы. определенные в модуле, имеют члены с типом других классов, циркулярно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:53 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
P.S. Конечно, от этого давно пора избавиться. Равно как и от невозможности нормально код класса по модулям разносить. P.P.S. Чего у нас только нет! И этого у нас тоже нет... (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:54 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамчччД> Может, хоть ты код покажешь? > 21257210 - допиши несколько строк, трудно тебе, что ли. Какой-то ты вредный в ночь со вторника на четверг. Не трудно, а лень. Ну, например, так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Давай, начинай рассказывать, что это некошерно, лишний модуль и класс и вообще тебе обязательно ссылка на потомок нужна, а не на базовый. Я заранее со всем соглашусь, чтобы два раза не вставать. А давай "классовые" типы всегда типа TObject задавать - вот и нет проблемы, они ж все от него наследуются, и третий модуль не понадобится. Что нам, трудно явно к нужному типу привести. Это и дисциплинирует, и вообще - модно, молодежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:04 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Смысла ругать дельфи нет: все равно ничего не исправишь, надо пользоваться тем, что есть. Надо спать идти. Вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:05 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:08 |
|
||
|
Strict private
|
|||
|---|---|---|---|
|
#18+
чччДА если у тебя вопросы по примерам - открой, к примеру, файл DB.pas - там их море. И заодно задумайся - от чего там в начале модуля такие смешные строчки: Код: pascal 1. 2. 3. Ты действительно думаешь, в этом модуле более 10тыс исключительно из любви к искусству? Нет, всего лишь потому, что классы. определенные в модуле, имеют члены с типом других классов, циркулярно. Потому что криво спроектирована архитектура)))) берем пример TField Код: pascal 1. 2. 3. 4. Это сделано из-за вот такого говнокода: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Если выделить абстракцию Перечислитель в абстрактный класс, то TFieldsEnumerator можно будет объявить после TFields и TField и тогда не понадобится forward А так сделано потому, что TFields унаследован от TObject а TField от TComponent, Хотя по сути TFields это некая коллекция (список, словарь и т.п.), следовательно если бы выделили ее в отдельную абстракцию... Например вот так.. мне лень сделать это красивее... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Все работает Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:26 |
|
||
|
|

start [/forum/search_topic.php?author=Strak3R&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 655ms |
| total: | 786ms |

| 0 / 0 |
