Укажите способы взаимодействия модулей между собой

Взаимодействие модулей

Смотреть на youtube

До сих пор все наши программные проекты состояли из одного модуля. Модуль может содержать все, что необходимо для реализации проекта — код, данные и методы. Если модуль один, то он выступает в роли главного модуля со статусом main, так что код модуля запускается на выполнение, в процессе выполнения могут вызываться методы модуля, которые, в свою очередь, вызывают другие методы, так что проект начинает жить, выполняться, пока не достигнет завершения.

На размер модуля никаких ограничений не накладывается. Так что любой сложный проект может быть реализован как единый модуль. Это было бы верно, если бы это не было так сложно. Также как сложный метод должен быть декомпозирован, пока не сведется к совокупности достаточно простых и понятных методов, сложный проект следует декомпозировать на относительно простые модули, каждый со своей спецификой. Если в проекте есть модуль physics и lyrics , то первый содержит сервисы, связанные с физикой, а второй — с лирикой. Конечно, физики и лирики должны общаться, и модули одного проекта должны быть связаны друг с другом. Взаимодействие достигается за счет того, что модуль способен экспортировать свои атрибуты другим модулям, а клиентский модуль может импортировать атрибуты модуля экспортера.

Заметьте, в отличие от традиционного подхода ООП, когда поля и методы класса могут иметь разный уровень доступности — общедоступные, закрытые, защищенные ( public, private, protected ), все атрибуты модуля общедоступны клиентам.

Пришла пора уточнить понятие атрибута модуля. До сих пор я достаточно вольно обходился с этим понятием, рассматривая, например, взаимодействие атрибутов и методов модуля. В языке Python атрибутами модуля являются все имена, определенные на уровне модуля. Так что если в модуле есть определение def A … и присваивание B = [] , то это означает, что модуль имеет два атрибута А и В, один из них представляет функцию, второй — данные. Мне кажется, что иногда крайне важно понимать разницу между данными и методами, поэтому я часто использую понятие атрибут, когда речь идет о данных, и предпочитаю использовать термин метод, когда атрибут является методом. Настоящие программисты питонисты меня будут за это ругать, но для меня Python один из многих языков программирования и потому я не следую строго терминологии, принятой в этом языке. Это же касается понятия метод, который я часто использую там, где по терминологии Python следовало бы использовать термин функция. Определение def A … — это по определению Python функция, а я предпочитаю термин метод, поскольку для меня функция определяется так, как это принято в математике, — объект, возвращающий значение, а если функция значения не возвращает, выражением не является и вызывается как оператор, то это процедура, но в Python термин процедура не используется, а жаль, поскольку часто важно различать процедуры и функции. Когда же эти различия не важны, то следует использовать общий термин — метод. В контексте этой лекции термин атрибут модуля используется в традиционном для Python смысле, как имя, определенное на уровне модуля, независимо от того, что задает атрибут — данные или метод.

Итак, все атрибуты модуля общедоступны для клиентов. Как же быть, если мы хотим скрыть от клиентов детали реализации? Единственный способ — это соответствующие данные и методы встроить в методы класса, тогда такие атрибуты становятся локальными и не будут доступны клиентам. Инкапсуляция — это полезный прием. Клиентам предоставляются сервисы с тщательно выверенным интерфейсом. Интерфейс сервиса не должен меняться, хотя детали реализации могут изменяться, но это не будет отражаться на клиентах.

Импорт атрибутов

Рассмотрим проект, содержащий n модулей. Среди этих модулей должен быть хотя бы один модуль, содержащий код. Среди модулей, содержащих код, должен быть единственный модуль, имеющий статус главного модуля. Как назначить некоторый модуль главным? У модуля помимо атрибутов, определенных текстом модуля, есть встроенные атрибуты, о которых поговорим подробнее чуть позже, а сейчас же скажу, что есть встроенный атрибут __name__ . Если присвоить этому атрибуту имя __main__ , то модуль и станет главным.

Читайте также:  Способы терморегуляции организма человека это

В Visual Studio , где я работаю с проектами Python , все делается проще. В обозревателе решения, нажав на одном из модулей проекта правую кнопку мыши, в контекстном меню следует выбрать пункт меню «Задать как файл запуска». Модуль становится главным и выделяется жирным шрифтом. Модуль становится «точкой большого взрыва», с которой начинается жизнь вселенной, порождаемой программным проектом. В процессе развития проекта модули связываются друг с другом, запрашивая нужные сервисы. Рассмотрим два модуля, связанные отношением «клиент — поставщик». Модуль поставщик предоставляет (экспортирует) атрибуты, а клиент их импортирует.

Пусть прямое имя файла, содержащего модуль поставщика, есть myservices.py , а клиента — Testing_Services.py . Тогда клиенту для импортирования атрибутов поставщика достаточно в коде выполнить предложение импорта:

Заметьте, имя модуля в предложении import — это имя файла без уточнения .py и без указания пути к каталогу, содержащему файл с модулем.

Какова семантика инструкции импорта? Достаточно понимать, что в результате выполнения на глобальном уровне модуля Testing_Services будет видимо имя myservices , что позволяет получить доступ ко всем атрибутам модуля myservices , используя квалифицированные имена. Если в модуле myservices есть два выше упомянутых атрибута А и В, то вызов метода А имеет вид: myservices.А(…) , а присваивание имеет вид: Х = myservices.В .

Таким образом все атрибуты поставщика доступны клиенту, и мы можем передавать информацию от поставщика клиенту.

Есть еще одна форма импорта атрибутов модуля, синтаксис которой имеет вид:

Семантика этой формы такова. Вначале выполняется импорт модуля, а затем в глобальную область видимости клиента переносятся имена из списка, если он задан, или все имена атрибутов, если использована форма с символом *. Преимущества этой формы в том, что можно не использовать квалифицированные имена, сокращая запись. Но есть и недостатки. Возникают проблемы, связанные с коллизией имен. Импортируемые имена могут совпадать с именами в клиентском модуле. С этой проблемой разобраться нетрудно. Хуже, когда клиент выполняет импорт из разных модулей. Тогда, в особенности, когда применяется форма импорта со звездочкой, разобраться в том, какому модулю принадлежит имя, довольно сложно. В ситуации, когда возможен импорт из разных модулей, надежнее использовать квалифицированные имена.

Удивительно, но при импорте возможна передача информации в обратном направлении — от клиента к поставщику. Ситуация здесь во многом схожа с тем, как метод модуля, работая на локальном уровне, может изменять атрибуты на глобальном уровне, и делает это двумя возможными способами.

При импорте изменение данных поставщика достигается двумя похожими способами. В первом способе изменяется состояние объекта поставщика при сохранении связи имени атрибута и объекта. Во втором способе используется аналог описания global имен. При импорте нет необходимости в задании списка global имен, их роль играют квалифицированные имена.

Рассмотрим пример. Пусть в коде поставщика myservices определены три атрибута:

Пусть модуль Testing_Services , используя форму импорта from, импортировал эти атрибуты. Пусть в исполняемом коде этого модуля встретился такой фрагмент кода:

Тогда, в результате первого присваивания, в модуле Testing_Services появится атрибут n , связанный с объектом — числом 99. Это присваивание никак не отразится на атрибуте n модуля myservices . Второе присваивание изменит состояние списка, связанного с атрибутом r1 модуля myservices . Третье присваивание свяжет атрибут r2 модуля myservices с новым списком, поскольку используется квалифицированное имя, позволяющее точно определить, о каком объекте идет речь. Как видите, клиент может изменять атрибуты поставщика!

Уточним семантику выполнения инструкции import . Заметьте, это выполняемая инструкция, а не декларация. Что происходит при выполнении импорта модуля? Если инструкция импорта модуля встретилась первый раз, то происходит трансляция модуля в промежуточный байт код, создаются все атрибуты модуля, вся эта информация сохраняется.

Читайте также:  Предложите не менее пяти способов получения сульфата железа 2 напишите уравнения соответствующих

Возможно повторное выполнение инструкции импорта модуля. При повторном выполнении используется ранее созданная информация. Что нужно понимать? Если модуль импортирован, с ним выполнялись какие-либо действия, значения атрибутов изменялись, затем модуль повторно импортировался, то никакого обновления атрибутов не будет, при работе с модулем будут использоваться существующие до повторного импорта значения атрибутов.

Источник

Способы взаимодействия модулей между собой

Способы взаимодействия модулей между собой

Правильный ответ на вопрос:

Другие вопросы теста

Возможно Вам будут интересны следующие советы для веб разработчиков

  • 18 ноября 2021 Компании Skipp требуется Big Data Engineer в Москве .
  • 18 ноября 2021 Компании Ю БИ ЭС ТЕХНОЛОГИИ требуется PHP-разработчик / Junior в Нижнем Новгороде .
  • 18 ноября 2021 Компании Домофф Групп требуется Программист Битрикс (PHP, Bitrix, веб разработчик) в Москве .
  • 18 ноября 2021 Компании Мишкин К. В. требуется Разработчик Python в Санкт-Петербурге .
  • 18 ноября 2021 PHP-разработчик требуется в Москве .

  • 17 ноября 2017
    Пример реализации консольного скрипта с подключением ядра 1С-БитриксДавно известно, что ряд операций выносят в отдельные php файлы и запускают из консоли, так как это зачастую удобнее, быстрее, да и в принципе на эти операции не нужен браузер.
  • 24 июля 2017
    MySQL ошибка: InnoDB Error Fetch of persistent statistics requested for tableПри разработке одного проекта, часто стали вылетать ошибки базы или просто бесконечная загрузка страницы. После попыток запустить сайт и перезапуска локального сервера — результат ноль.
  • 19 июля 2017
    Битрикс отправка писем с вложениями без танцев с бубномОтправка писем с аттачем в bitrix довольно распространенная задача, например, отсылать пользователям договора, анкеты, выписки и другие файлы. В интернете довольно много различных способов решения задачи.
  • Все советы разработчику →

  • 13 июня 2018 в 17:08
    Galinaced FrancisbaxVX : По моему мнению Вы пошли ошибочным путём.
  • 31 мая 2018 в 15:03
    Igorpi IgorpiNP : Номер не пройдет!
  • 31 мая 2018 в 12:58
    Galinaced FrancisbaxVX : Я извиняюсь, но, по-моему, Вы допускаете ошибку. Пишите мне в PM.
  • 31 мая 2018 в 08:32
    Alexeyced AlexeycedYO : Какие слова. фантастика
  • 29 мая 2017
    Обновление ответов сертификации и сайта Майское обновление сайта.
  • 2 ноября 2015
    Новый дизайн портала BXCert Сегодня мы выпустили новый дизайн нашего проекта. Портал стал выглядеть более современно, как нам кажется.
  • 10 июня 2015
    Новый дизайн и фильтр монитора фриланс бирж Рады сообщить, что мы выпустили новый дизайн раздела монитора проектов с фриланс бирж. Новый дизайн выполнен в минималистичном стиле, все проекты теперь оформлены более компактно.
  • Блог проекта →

О проекте

Проект BX Cert — портал web разработчиков. Данный ресурс будет полезен как новичкам в разработке, так и более опытным web разработчикам.

По всем вопросам Вы можете писать на почту:

Актуальные вакансии

Мы собираем и храним информацию по всем вакансия web разработчиков и программистов PHP, Python и многих других специалистов.

Компании Skipp требуется Big Data Engineer в Москве
18 ноября 2021

Компании Ю БИ ЭС ТЕХНОЛОГИИ требуется PHP-разработчик / Junior в Нижнем Новгороде
18 ноября 2021

Источник

Укажите способы взаимодействия модулей между собой

Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте «1С-Битрикс». .

Евгений Смолин: Сам кувыркался с непонятками (пока курсы учебные не прочитал и руками не попробовал то, что там написано). Битрикс из тех систем, где изучение «методом тыка» не очень эффективно без предварительного изучения учебных курсов. Уважаемые новички, потратьте немного своего драгоценного времени, пройдите пару-тройку учебных курсов и масса вопросов просто испарится — там есть ответы на множество вопросов.

Курс для разработчиков — продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Читайте также:  Натуральная величина четырехугольника способом замены плоскостей проекции

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы — в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки — в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы — в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск — в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
    • Администрирование. Модули — модули «1С-Битрикс: Управление сайтом»
    • Администратор. Бизнес — модули «1С-Битрикс: Управление сайтом», связанные с коммерческой деятельностью в Интернете.
    • Администратор «1С-Битрикс: Корпоративный портал» — модули «1С-Битрикс: Корпоративный портал»

    Как построен курс

    Общепринятая градация квалификации разработчиков в рамках курса обозначает что:

    • Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
    • Middle разработчик может работать с API Bitrix Framework.
    • Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.

    Начальные требования к подготовке

    Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

    • основами PHP, баз данных;
    • основами HTML, CSS.

    У нас часто спрашивают, сколько нужно заплатить

    Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно.

    Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

    Баллы опыта

    В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
    окно подтверждения:

    уроке.

    Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%.

    Тесты

    После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

    Комментарии к статьям

    На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:

    Что дальше?

    Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:

  • Технология Композитный сайт — ускорение работы сайта.
  • Разработка и эксплуатация высоконагруженных проектов — для тех кто делает «тяжёлые» проекты.
  • Бизнес-процессы — настройка и создание бизнес-процессов.
  • Бот платформа Битрикс24 — приложения, основанных на чатах в веб-мессенджере.
  • Маркетплейс Битрикс24 — приложения для коробочной и облачной версий Битрикс24.
  • Маркетплейс Bitrix Framework — расширение функционала проектов на основе Bitrix Framework с помощью сторонних модулей и решений.
  • Многосайтовость — система многосайтовости и принципы работы с многосайтовой конфигурацией.

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

Если нет интернета

Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.

Источник

Оцените статью
Разные способы