Пересекающиеся Билиотеки

Тема в разделе "Lotus - Программирование", создана пользователем zum, 3 авг 2012.

Статус темы:
Закрыта.
  1. zum

    zum Гость

    Смысл такой
    нужно функции из 1 ой использовать во второй и наоборот =)
    как быть?)
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    zum
    вынести в 3ю
     
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Вынести все функции, которые могут использоваться перекрестно в третью библиотеку. Или каждую разделить на 2 части: Core и Interface.

    и никак иначе...
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    агентами
    екзекуте

    всё зависит как курить :D
     
  5. ABarmin

    ABarmin Гость

    Расскажите подробнее о разделении библиотек на core и interface, пожалуйста.
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    ABarmin
    Это просто условные названия, назвать можно как угодно.
    Смысл в том, чтобы выделить функции по общему признаку в одну библиотеку.
    Функции работающие внутри системы, которые вызываются из других функций, записать в одной библиотеке.
    Функции, которые вызывают внутренние функции записать в другую библиотеку.
    Во второй сделать Use первой.

    Мой подход разделять функции по библиотекам в зависимости от работы: внутренние (libName) и для работы с GUI (libName_UI)
    Например, у меня куча функций для работы с пользовательским интерфейсом(выбор документов, открытие разных окон, поиск) объединяю их в одну библиотеку libname_UI, в весь механизм поиска осуществляется во внутренней библиотеке libName.
     
  7. ABarmin

    ABarmin Гость

    А я подумал, что это как-то решает проблемы с циклическими зависимостями. Мы в проекте выделили классы для работы с определенным типом документа в СЭД в одну библиотеку, но так как типов документов много и они сложно связаны между собой встает проблема связывания этих библиотек - возникают циклические зависимости.

    Нет никакого а-ля нормальный лоадер для лотуса? Ну, кроме execute |User "some"|, конечно?)
     
  8. zum

    zum Гость

    плохо себе представляю как это можно разделить...

    те первая библиотека отвечает за документы класс DocumentManager
    вторая отвечает за расписание класс TimeManager

    те получается что из первой надо проверять расписание при определенных условиях, а из второй документы при работе с раписанием

    хоть убейте не представляю как это сделать даже через третью библиотеку
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Можно:
    1) параметры функций проверки сделать типа Variant;
    2) для классов DocumentManager и TimeManager сделать базовый класс(ы).
    Вы бы хоть описания функций привели, чтобы было о чём рассуждать.
     
  10. ABarmin

    ABarmin Гость

    С вариантом не катит совсем, классов уже больше двух десятков, методов в каждом больше 50, без автоподстановки просто замучаешься.
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  12. ABarmin

    ABarmin Гость

    Декоратор - не совсем то.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    этпочему?
     
  14. ABarmin

    ABarmin Гость

    Задача не расширить функциональность одного класса другим, не дать ему дополнительное поведение динамически, а связать две библиотеки в обе стороны, если они зависят друг от друга.
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    задача увязать разный ф-ционал, кот. может наращиваться
     
  16. ABarmin

    ABarmin Гость

    Если все части функционала находятся в одной либе, то тут и проблем нет, хоть декоратором, хоть наследованием.

    Ладно, смотрим пример.

    Библиотека data.lotus.DTProcess

    Код (Text):
    Use "data.lotus.DTTask"

    public class DTProcess as DTDocument
    private tasks as DTList

    public function getTasks() as DTList
    if (me.tasks is nothing) then
    set me.tasks = new DTList()

    ' получение объектов DTTask волшебным кодом
    end if
    set getTasks = me.tasks
    end function
    end class
    Библиотека data.lotus.DTTask

    Код (Text):
    public class DTTask as DTDocument
    private parentProcess as DTProcess

    public function getParentProcess() as DTProcess
    if (me.parentProcess is nothing) then
    ' получение объекта DTProcess волшебным кодом
    end if
    set getParentProcess = me.parentProcess
    end function
    end class
    Чтобы второй класс заработал надо подключить data.lotus.DTProcess, что вызовет ошибку компиляции про рекурсивный USE.
     
  17. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Зачем давать на буржуинским, если то же самое есть на русском?

    Добавлено:
    Вы сами ответили на свой вопрос + ещё выше люди всё сказали.
    Без одной библиотеки либо без классов-интерфейсов в 3-й общей либо без использования Execute, т.е. так, как вы хотите (вероятно волшебным образом), оно работать не будет, так чего возить г-но по унитазу?
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    родной язык для большинства "технологий" - англицкий, интерпретация в русской версии может сильно отличаться
     
  19. ABarmin

    ABarmin Гость

    Остается только Execute.
     
  20. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в практике д.б. стремление к "правильности" архитектуры...
    создать кучу кода и либ, в кот. разобраться трудно - чревато
     
Статус темы:
Закрыта.

Поделиться этой страницей