Русский
!

Conference publications

Abstracts

XVI conference

Применение паттерна «decorator» в проектировании задачи автоматизации процесса составления ордера перевозки опасного груза

Васина Д.В.

Самарский государственный аэрокосмический университет имени академика С.П.Королева. E-mail:d_abrosimova@list.ru

1 pp. (accepted)

Среди многих задач организации дорожного движения важной является задача построения маршрутов. Ее частным случаем является задача построения маршрутов перевозки опасных грузов. Требуется учет, обработка и хранение информации, связанной с перевозкой: грузоперевозчик, грузоотправитель, грузополучатель, класс опасности груза, протяженность маршрута и др.

Решено создать программное средство, автоматизирующее данный процесс, с использованием объектно-ориентированной технологии программирования и проектирования (ООП). Каждая сущность (маршрут, грузоотправитель, груз и т.д.) представлена отдельным классом. Взаимосвязь между объектами реализована стандартными средствами ООП. Расчеты и обработка данных инкапсулированы в классах и изолированы от влияния остальной части реализации программного средства.

В процессе проектирования выявлено, что грузоотправитель, грузополучатель и грузоперевозчик имеют схожую структуру. Решено сделать их объектами одного класса ОРГАНИЗАЦИЯ. У каждого из них в то же время имеется своя специфика. Возникла необходимость возложить дополнительные обязанности на отдельный объект, а не на класс в целом. Добавить новые обязанности допустимо с помощью использования механизма наследования и полиморфизма. Однако это решение статическое, недостаточно гибкое. Более гибким подходом является поместить компонент в другой объект, называемый декоратором, и реализованным на основе паттерна проектирования DECORATOR. Декоратор следует интерфейсу декорируемого объекта, поэтому его присутствие прозрачно для клиентов компонента. Декоратор переадресует запросы внутреннему компоненту, но может выполнять и дополнительные действия (например, вести статистику маршрутов грузоперевозчика, что не должно быть реализовано для грузоотправителя и грузополучателя) до или после переадресации обязанностей.

Грузоотправитель, грузоперевозчик и грузополучатель имеют общую структуру (наименование организации, адрес, ФИО директора и др.). Объекты имеют совпадения в поведении: процедура регистрации, процедура проверки качества груза, определение необходимого/допустимого количества груза и др. В то же время для них различается процедура приемки (грузополучатель, грузоперевозчик) и отдачи (грузоперевозчик, грузоотправитель) груза. У грузоперевозчика есть дополнительная функция выбора транспортного средства для каждого вида груза.

Т.о. возложение перечисленных и прочих дополнительных функций на объекты класса ОРГАНИЗАЦИЯ, целесообразно реализовать на основании паттерна DECORATOR.



© 2004 Designed by Lyceum of Informational Technologies №1533