Как визуализировать протоколы и расширения в UML?

кажется разумным использовать интерфейсы UML для визуализации протоколов Swift в UML. Но как визуализировать расширение, которое обеспечивает реализацию по умолчанию для определенного протокола? Должен ли я просто использовать класс, как <<extension>>ProtocolName что наследуется от этого протокола?

1 ответов


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

enter image description here

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

Это один из способов выразить это. Поскольку нет собственной конструкции UML для расширения, вы относительно свободны изобретать собственную идиому здесь.