Модель ролевого класса - Role Class Model
В информатике модель класса для подражания это роль образец анализа[1] описано (но не изобретено [2]) Фрэнсиса Г. Мосе в его статье о модельных ролях.[3] Шаблон ролевого класса дает возможность классу играть несколько ролей и встраивать ролевую характеристику в специальный класс.
В нашем обществе, в том виде, в котором мы его построили, роли повсюду. У каждого, кто пытается работать в команде над созданием чего-либо, есть своя роль. В кинематография, в создании фильма принимают участие много разных людей: режиссер фильма, то режиссер, актеры, сценарист (s) и т. д. Даже наши государственные организации имеют разные роли. В Республика, у тебя Президент, Министры, депутаты и др.
Работа с этими ситуациями - одна из наиболее часто встречающихся проблем при объектно-ориентированном анализе. Фрэнсис Г. Мосе выделил 5 шаблонов анализа ролей, которые можно использовать для решения большинства задач, связанных с ролями: наследование ролей, роли ассоциации, классы ролей, обобщенные классы ролей и роли классов ассоциации. Все они имеют разную степень ограничений, гибкости или мощности, которые вместе предлагают полное решение большинства проблем, связанных с ролями.
Намерение
Модель, которая позволяет классу играть одну или несколько ролей одновременно. Роль - как определено Фрэнсисом Моссе в Modeling Roles[3] - это концепция цели, которую класс может иметь в определенном контексте.
Контекст
Приведен следующий пример:
Над фильмом работают многие люди, у каждого из которых своя роль. В отличие от других понятий, человек не ограничен одной ролью. Можно было быть как директор и персонаж в фильме. Моделирование роли для такой концепции потребуют, чтобы класс мог играть более одной роли.
Решение с использованием наследование осмыслить роль - ср. Ролевая модель наследования - невозможна, так как это позволит человеку играть только одну роль. Как видно на рисунке 1 ниже, в ролевой модели наследования говорится, что персонаж, который является человеком, играет в фильме. Но нельзя сказать, что человек, играющий персонажа, также является режиссером. Потому что наследование делает персонажа личностью в целом, а не конкретным человеком.
Проблема
Как объяснено в Контекст, использование наследования для выполнения более одной роли не может рассматриваться, потому что класс не может одновременно играть две роли в таком контексте (см. ролевую модель наследования).
Ожидается, что у вас будет модель, в которой класс можно рассматривать как несколько концепций или ролей и где могут быть указаны атрибуты, специфичные для одной из этих концепций.
Решение
Решением предыдущей проблемы может быть использование ролевой модели ассоциации, которая может создать ассоциацию между человеком и фильмом. Однако конкретная информация о каждой роли не может быть сохранена в таком случае. В модель класса для подражания обеспечивает гибкость ассоциации с атрибутами, зависящими от роли, и даже с операциями классов, если это необходимо.
Эта метамодель - на рисунке 2 - показывает класс роли как элемент, связывающий Клиент и BaseClass. Для Клиент взаимодействуя с Роль похоже на взаимодействие с Базовый класс сам по себе, но с точки зрения ожидаемого. Преимущество роли класса в том, что к нему могут быть привязаны атрибуты.
Еще одна ситуация, в которой интересен паттерн Роль, - это следующая ситуация:
Затем вы понимаете, что как держатель контракта Человек имеет определенные атрибуты. В владелец роли UML становится выделенным классом ContractHolder с этими специфическими атрибутами. Обратите внимание, что в этом случае множественность рядом с человеком и контрактом всегда 1. Это значит, что ты один ContractHolder объект для каждой связи между Контрактом и Лицом.
Пример из реального мира
Кинотеатр
Простое применение ролевой модели класса в реальном примере находится в 7-м арте (см. Рисунок 3 ), кинематограф. Это искусство предполагает создание (фильм) и людей, которые его создают. У каждого человека своя роль в фильме, они могут быть актерами и играть персонажей, они могут быть режиссером или сценарист и т.д. Человек не ограничивается одной ролью в фильме, он может быть и актером, и режиссером, и даже больше. Например, фильм Совок (2006) был направлен Вуди Аллен, он же сценарист и играет роль Сид Уотерман.
В Рисунок 4 можно более подробно увидеть роль, которую каждый человек может сыграть в фильме. Из фильма можно спросить список съемочной группы и актерский состав, которые помогли его разработать. У каждого человека есть одна или несколько ролей (например, актер, режиссер, продюсер, оператор и т.д.) в фильме и может участвовать более чем в одном фильме. Человек мог даже быть актером в одном фильме и продюсером в другом. Одним из преимуществ использования класса роли в случае роли актера является то, что качества персонажа могут быть сохранены внутри роли. Это верно и для роли актера, и для других ролей, но не для всех.
Лишь некоторые из возможных ролей были смоделированы в Рисунок 4. Одно замечание, которое легко заметить, заключается в том, что не для всех ролей требуются атрибуты, и использование модели классов ролей для всех из них не требуется (как для Директор роль). Кроме того, между каждым классом ролей существует большая избыточность. Избыточность в Информатика означает больше работы по техническому обслуживанию, что нежелательно.
Сильные и слабые стороны
Использование этой модели зависит от бизнес-процесс. Шаблон анализа «Модель ролевого класса» предлагает возможность использовать модель со связью между базовым классом и клиентом. Кроме того, наследование не является частью решения из-за гибкости нуля или нескольких ролей (атрибуты и операции, зависящие от ролей). Сила также подразумевает слабость своего аналога. Проблемой ролевой модели класса является избыточность, например метод getName отображается во всех классах ролей, описанных в Рисунок 4. Если это считается неудобным, модель обобщения класса ролей, как определено в разделе «Моделирование ролей».[3] это возможный путь.
Смотрите также
Фрэнсис Дж. Мосе[3] описал другие решения ролевой проблемы.
- Наследование ролей
- Роли ассоциации
- Обобщенные ролевые классы
- Роли класса ассоциации
- Связывание ролей класса с типом роли, что является усовершенствованием предыдущего.
- Ссылочная прозрачность
Рекомендации
- ^ Фаулер, Мартин (1997-07-20). «Работа с ролями» (PDF ). Шаблон анализа. Получено 2007-01-16.
- ^ Об этом есть цитата в книге Бизнес-моделирование с помощью UML: бизнес-модели в действии, Магнус Пенкер (автор), Ханс-Эрик Эрикссон глава:
... Его происхождение неизвестно, но этот образец был использован для моделирования систем разминирования, используемых Организацией Объединенных Наций. Описание концепций, лежащих в основе этого шаблона, можно найти в книге Мюррея Р. Кантора «Объектно-ориентированное управление проектами с помощью UML» (John Wiley & Sons, Inc., 1998).
- ^ а б c d Фрэнсис Г. Мосе (сентябрь 2002 г.). «Моделирование ролей - практическая серия шаблонов анализа». Журнал объектных технологий, вып. 1, вып. 4. С. 27–37.. Получено 2006-12-28.
дальнейшее чтение
- Фаулер, Мартин (1996-11-27). Шаблоны анализа: многоразовые объектные модели. Эддисон-Уэсли. ISBN 0-201-89542-0. Введение в объектно-ориентированный анализ с концептуальными моделями
- Равентос, Рут и Кэбот, Хорди (2006). «Шаблоны концептуального моделирования для ролей» (PDF ). Журнал по семантике данных V. Получено 2007-01-16. Цитировать журнал требует
| журнал =
(помощь)CS1 maint: несколько имен: список авторов (связь)[мертвая ссылка ] - Кафедра компьютерных наук (2004 г.). «Использование ролей в паттернах». Шаблон анализа. Иллинойсский университет в Урбане-Шампейн. Архивировано из оригинал на 2007-01-01. Получено 2007-01-16.
- хроматический (31.08.2006). «Использование ролей в паттернах». Технический. O'Reilly Media. Получено 2007-01-16. Внешняя ссылка в
| работа =
(помощь)
Ссылки по теме
- Шаблон роли актера, реализация JPA https://web.archive.org/web/20071105232543/http://www.ibstaff.net/fmartinez/?p=16