Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

Conflict (конфликт)

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

Обсуждение

Конфликтов можно избегать, если пользоваться правилами их разрешения, например: если одна и та же черта определяется сразу несколькими суперклассами, используйте то определение, которое было у самого старшего суперкласса (для этого суперклассы должны быть определённым образом упорядочены). Вообще, в UML очень немного правил для разрешения конфликтов. Если полагаться исключительно на эти правила, не избежать недосмотров, так как часто конфликт является симптомом более серьезных проблем модели. Лучше пусть проектировщик разберется в ситуации сам, нежели будет полагаться на нечеткие и, возможно, сбивающие с толку правила. В инструментах моделирования или языках программирования такие правила более уместны, так как там они имеют конкретную подоплёку. Было бы удобно, если бы инструменты моделирования давали проектировщику знать, когда в модели возникает конфликтная ситуация, чтобы он мог принять меры.

Алфавитный указатель