Допустим, есть подсистема PHP, которая использует только ассоциативные массивы для хранения каких-то структурированных данных. Таким образом, на самом деле нет механизма на уровне языка для ограничения этих структур, но вы хотите определить их в своем дизайне с помощью UML.
Например:
Контакт может выглядеть как ассоциативный массив в PHP:
[ 'name' => 'John Doe', 'birth' => '2000-04-01', 'email' => 'john.doe@company.com', 'address' => [ 'street' => '123 Main St', 'city' => 'Anytown', 'state' => 'NY', 'zip' => '1234', 'country' => 'US' ] ]
Поэтому я подумал, что диаграмма в UML может выглядеть так:
Но кто-то может критиковать, что это неправильно, потому что он показывает два класса, а не два ассоциативных массива. Таким образом, мы могли бы использовать (пользовательский) стереотип, чтобы показать, что это не обычный класс, но который (и как их определить)?
Или задать вопрос более часто: что было бы / правильным способом определить типы таких данных с помощью UML?
Проще говоря: ваш дизайн правильный. То, что вы «могли» сделать, – сделать Address
встроенным классом Contact
:
И если вы этого хотите, вы можете показать, что он должен быть реализован как ассоциативный массив: