Объектно-ориентированное проектирование с примерами


Сценарии работы - часть 3


При составлении каждого из таких сценариев мы должны постоянно задавать себе ряд вопросов. Какой объект будет нести ответственность за выполнение того или иного действия? Как объект будет проводить ту или иную операцию: самостоятельно или используя свойства другого объекта? Не слишком ли много операций вменяется в круг обязанностей данного объекта? Что произойдет при ошибке в ходе выполнения сценария (какие постусловия могут нарушиться)? Что случится, если будут нарушены некоторые предусловия?

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

  • Customer - клиент

  • Supplier - поставщик

  • OrderAgent - сотрудник отдела продаж

  • Accountant - бухгалтер

  • ShippingAgent - сотрудник отдела отгрузки

  • Stockperson - кладовщик

  • PurchasingAgent - сотрудник отдела закупок

  • ReceivingAgent - сотрудник отдела приема товаров

  • Planner - сотрудник планового отдела

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

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

  • CustomerRecord - информация о клиенте

  • ProductRecord - информация о товаре

  • SupplierRecord - информация о поставщике

  • Order - заказ от клиента

  • PurchaseOrder - заказ поставщику




  • Начало  Назад  Вперед