Множества всех типов

Множества всех типов (powertype) – это аналитическая концепция, которая в обычном повседневном моделировании встречается крайне редко. Этот раздел включен в статью в основном для обеспечения полноты изложения и как справочный материал, если вдруг кто-то из читателей когда-нибудь столкнется с этим понятием.
Множество всех типов – это класс, экземпляры которого являются классами. Эти экземпляры также являются подклассами другого класса.
Любой класс, экземпляры которого являются классами, называют метаклассом (класс класса). Таким образом, множество всех типов – это особый тип метакласса, экземпляры которого являются еще и подклассами другого класса.
Идея множеств всех типов довольно сложна.
Во-первых, необходимо отметить, что InterestAccount (счет процентов) не является обычным классом; это множество всех типов, как обозначено стереотипом.
Во-вторых, ассоциация между классами InterestAccount и Account не имеет обычной семантики ассоциации. В данном случае она показывает, что InterestAccount может быть (но необязательно (0..1)) множеством всех типов класса Account (и его подклассов благодаря наследованию).
Чтобы использовать множество всех типов, подклассы разделяются на один или более множеств обобщения. К одному или более этих множеств применяется множество всех типов. Тогда все классы такого набора обобщения становятся экземплярами этого множества всех типов.
Множество всех типов применяется к множеству обобщения путем указания имени множества всех типов после имени множества обобщения и двоеточия, так же как указывался бы тип атрибута после имени атрибута. Множество всех типов можно рассматривать как еще один тип для членов множества обобщения в дополнение к тому, который они получают от своего суперкласса.
Подклассы Account были разделены на два множества обобщения: interestBearing (приносящие проценты) и nonInterestBearing (беспроцентные), т.е. представляющие и не представляющие интереса.
Множество обобщения interestBearing типизировано множеством всех типов InterestAccount. Это означает, что ShareAccount и DepositAccount одновременно являются подклассами Account и экземплярами InterestAccount. Они наследуют атрибут balance от класса Account и получают атрибут interestRate (процентная ставка) на основании того, что являются экземплярами InterestAccount.
Множество обобщения nonInterestBearing содержит единственный класс CheckingAccount – простой подкласс Account. Таким образом, CheckingAccount наследует атрибут balance от класса Account, но ничего не получает от InterestAccount.
Ни один из основных ОО языков программирования не поддерживает множества всех типов. Как же тогда можно применить это понятие на практике? Для создания правильной иерархии наследования AccountType введены новые классы, AccountType и NonInterestAccount (беспроцентный счет). Типы каждого Account обозначены с помощью ограничений. Это довольно стандартный способ работы с множествами всех типов.
Теоретически множества всех типов предоставляют лаконичную и удобную идиому моделирования для аналитических моделей. Однако на практике они не используются или не понятны широкому кругу разработчиков. Таким образом, в случае применения они могут привести к полному замешательству. Множества всех типов не вносят ничего нового в набор моделирования и, возможно, никогда не будут даже поддерживаться средствами моделирования. Наш совет – избегайте их применения.

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code