使用基于关联数组的 UML 建模类型

Modelling types with UML based on associative arrays

假设有一个 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 中的图表可能如下所示:

但有人可能会批评这是错误的,因为它显示了两个 classes 而不是两个关联数组。所以我们可以使用(自定义)刻板印象来表明这不是常规 class 而是哪个(以及如何定义它们)?

或者更常见的问题:the/a用 UML 定义此类数据类型的正确方法是什么?

简单来说:你的设计是正确的。您 "could" 所做的是使 Address 成为 Contact:

的嵌入式 class

如果你愿意,你可以证明它应该作为关联数组来实现: