Научная статья на тему 'Паттерны объектно-ориентированного проектирования в системе расчета параметров электрических цепей матричным способом'

Паттерны объектно-ориентированного проектирования в системе расчета параметров электрических цепей матричным способом Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
205
53
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАТТЕРН / КОМПОНОВЩИК / СТРАТЕГИЯ / ЦЕПОЧКА ОБЯЗАННОСТЕЙ / ФАСАД / ЛЕНИВАЯ ИНИЦИАЛИЗАЦИЯ / ШАБЛОННЫЙ МЕТОД / Т-СПИСОК / ПРАВИЛО РУНГЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Тарасов Владимир Анатольевич, Куприн Валентин Павлович, Петроченков Антон Борисович

Рассматриваются основные паттерны объектно-ориентированного программирования, применимые при проектировании модуля расчета параметров электрических цепей матричным способом. Паттерны описываются диаграммами классов языка графического описания UML с точки зрения спецификации.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Паттерны объектно-ориентированного проектирования в системе расчета параметров электрических цепей матричным способом»

УДК 621.3.011.7.001.63:004+004.42.045

В.А. Тарасов, В.П. Куприн, А.Б. Петроченков

Пермский государственный технический университет

ПАТТЕРНЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ В СИСТЕМЕ РАСЧЕТА ПАРАМЕТРОВ ЭЛЕКТРИЧЕСКИХ ЦЕПЕЙ МАТРИЧНЫМ СПОСОБОМ

Рассматриваются основные паттерны объектно-ориентированного программирования, применимые при проектировании модуля расчета параметров электрических цепей матричным способом. Паттерны описываются диаграммами классов языка графического описания UML с точки зрения спецификации.

Цель работы - описать применение паттернов объектно-ориентированного программирования (ООП) при проектировании модуля расчета параметров (МРП) электрических цепей матричным способом.

Задачи работы следующие:

1. Выбрать язык графического описания проектируемого модуля.

2. Обеспечить сбор данных об элементах цепи из базы данных (БД).

3. Для работы с матрицами использовать готовую библиотеку.

4. Выбрать и описать применение паттернов, соответствующих расширяемости, коммуникативности и гибкости модуля.

В качестве языка графического описания выбран Unified Modeling Language (UML), так как этот язык является стандартным способом изображения диаграмм в объектно-ориентированных (ОО) проектах [1, с. 11]. Из диаграмм используются только диаграммы классов, представленные с точки зрения спецификации.

Для работы с элементами электрической цепи (ЭЭЦ) их необходимо представить в виде иерархии объектов, имеющих отношение «часть-целое». Поэтому для ее реализации используется паттерн Composite (Компоновщик) (рис. 1), листовыми элементами которого являются базовые ЭЭЦ (резистор, узел и т.д.), а контейнером описывается любой элемент, разработанный пользователем (исключением

является элемент «ветвь») [2, с. 162]. Этот паттерн позволяет добавлять новые классы ЭЭЦ без внесения изменений в класс Ма^хА^о-пШ, использующий их.

Рис. 1. Паттерны Компоновщик, Стратегия и Цепочка обязанностей

Загрузка этой иерархии производится из БД, причем БД заранее неизвестна. Для этого применяется паттерн Facade (Фасад) (рис. 2), который также помогает уменьшить связанность с подсистемой работы с БД [2, с. 183]. Данным паттерном также описывается работа с матричными вычислениями, что позволяет использовать любые пакеты работы с матрицами, просто реализовав подкласс класса Matrix-Facade для выбранного пакета.

Загрузка иерархии представляет собой неоднозначный процесс, так как число ЭЭЦ теоретически неограниченно. Это, в свою очередь, влияет на производительность системы. Поэтому для загрузки ЭЭЦ используется паттерн Strategy (Стратегия) (см. рис. 1) [2, с. 300].

Если на компьютере используется большой объем памяти или модуль не используется несколькими пользователями одновременно, то может быть применена стратегия FullChildLoader, которая загрузит

в память сразу всю иерархию. Если на компьютере используется малый объем памяти, то может быть использована стратегия RowChildLoader, которая загрузит только подэлементы текущего ЭЭЦ по мере необходимости, то есть будет использована lazy (ленивая) инициализация [3]. Также разработчики могут добавить любой класс-стратегию, что никак не отразится на внешнем поведении ЭЭЦ. Гибкость также достигается тем, что каждый ЭЭЦ сам загружает свои подэлементы.

Рис. 2. Алгоритм и паттерны Стратегия и Фасад

Также паттерн стратегия используется и для определения базового узла цепи. Например, RandomCheckPoint находит произвольный узел.

Алгоритм расчета параметров электрической цепи реализован в методе Calculate класса MatrixAlgoritm (рис. 2), который и является клиентом для большинства классов модуля. В MatrixAlgoritm вся работа происходит через самый общий интерфейс (SchemeComponent, DataBaseFacade, MatrixFacade), что повышает повторное использование системы. MatrixAlgoritm конфигурируется необходимыми классами-реализациями на этапе создания.

Алгоритм состоит из следующих стадий:

1. Загрузка иерархии ЭЭЦ. Для этого используется паттерн Chain of Responsibility (Цепочка обязанностей) [2, c. 217]. Его суть в том, что каждый загруженный ЭЭЦ загружает свои подэлементы, которые в свою очередь передают эту обязанность по цепочке своим подэлементам. Каждый ЭЭЦ использует для загрузки переданную ему на этапе конструирования Стратегию - класс, реализующий IChildLoader.

2. Получение списков ветвей (класс TList), который состоит из записей ветвей (TRecord), предоставляющих информацию о ветвях цепи для составления матриц вычисления. Получение TList также реализуется цепочкой обязанностей - каждый ЭЭЦ знает, как ему конфигурировать TList, а далее передает его подэлементам.

3. Построение матриц и вычисление по ним параметров. Для вычисления с использованием динамических ЭЭЦ используется правило Рунге для вычисления погрешности и выбора шага интегрирования [4], которые в процессе работы алгоритма пересчитываются, и пересчитывается матрица до произведения расчетов на указанный интервал времени (атрибут time в классе MatrixAlgoritm). Использование TList помогает отказаться от повторного использования иерархии ЭЭЦ, которая может быть выгружена из памяти, если реализуется алгоритм ленивой инициализации.

4. Вывод результата. Реализуется методом getResult, который в данном случае использует текст, но может быть использован паттерн Стратегия для вывода результата или паттерн Template method (Шаблонный метод).

И в заключение следует подытожить:

1. В качестве графического языка был выбран UML.

2. Сбор данных об элементах цепи из БД обеспечивается с помощью паттернов Компоновщик, Цепочка обязанностей и Стратегия совместно с Ленивой инициализацией.

3. Для работы с матрицами используется паттерн Фасад, который позволяет подключать любую библиотеку работы с матрицами, например UJMP.

4. В итоге были выбраны 5 паттернов: Компоновщик, Цепочка обязанностей, Стратегия, Ленивая инициализация и Фасад. Применение паттернов приводит к тому, что система становится легко

расширяемой (в методе Calculate используются только наиболее общие абстракции) и коммуникативной (разработчики, знакомые с паттернами, легко поймут код) [5, с. 25-28].

Библиографический список

1. Фаулер М., Скотт K. UML. Основы: пер. с англ. - СПб.: Символ-Плюс, 2002. - 192 с.

2. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон [и др.]. -СПб.: Питер, 2006. - 366 с.

3. ВикипедиЯ. Свободная энциклопедия [Электронный ресурс] /

Отложенная инициализация (шаблон проектирования) - URL:

Шр://т.,тк1реМ1а.ог$/’шк1/Отложенная_инициализация_(шаблон_про-ектирования), свободный. - (Загл. с. экрана).

4. Амосов A.A., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров: учеб. пособие. - М.: Высшая школа, 1994. - 544 с.

5. Бек К. Шаблоны реализации корпоративных приложений: пер. с англ. - М.: Вильямс, 2008. - 176 с.

Получено 27.09.2010

i Надоели баннеры? Вы всегда можете отключить рекламу.