我如何考虑使用 class 和接口之间的关联来实现 UML 图
How I can think about implement UML diagram with association between class and interface
我正在思考如何理解此 UML 图并检查如何将其表示为代码:
让我困惑的是,我们公司和员工接口之间有关联关系,而设计器类实现了员工接口,但是我们如何将公司与员工接口联系起来?
我的理解(例如PHP):
class Company {
...
}
class GameDevCompany extends Company {
...
}
class Designer extends GameDevCompany implements Employee {
...
}
如果我像这段代码一样思考这个图表,它是真实的方式还是我遗漏了什么或做错了什么?
谢谢
我刚刚复习了我生锈的 PHP 知识,现在我只能说你的代码很好。 extends
是继承(所以左边是泛化关系),implements
是接口实现(所以是右边的实现关系)。
扩展你关于关联的查询:好吧,我的 PHP 很生锈,但 IIRC 它完全没有类型。因此,您将有一些对象指针,例如 Company
class 中定义的 $employee
,它引用实现了 Employee
接口的对象。所以你可能会在 Company
class 实现中做一些 $employee->doWork()
。可能你不会有一个,而是一个数组。老实说,这真的是很久以前的语法了。但您可能知道如何编写代码。
P.S。由于(如前所述)我的 PHP 非常生锈,所以我还没有深入到我知道 extends
和 implements
的组合会产生什么。
我们在这个图中有三个概念:
- 专业:
Company
有两个专业,分别是GameDev Company
和Outsourcing Company
- 实现:一个接口Employee可以被任何实现了这个接口的class实现,比如
Designer
(或者Programmer
,Artist
,Tester
, ...)
- 关联:
Company
与 Employee
关联。该图没有说明多重性。但由于这是一个非常简单的模型,并且根据我们的知识,我们可以猜测一家公司可能与没有、一个或几个相关联 Employee
.
在PHP术语中,特化是inheritance,用extend
关键字表示:
class Company {
...
}
class GameDevCompany extends Company {
...
}
在PHP术语中interfaces are implemented而不是实现,这是用关键字implements
表达的
interface Employee {
...
}
class Designer implements Employee {
...
}
从一个 Company
到潜在的多个 Employee
的关联要求 Company
具有某种 iterable container such as an array that holds references to the Employee
objects. My PHP is very rusty, but I understand that objects in an array are always references 这正是普通关联所需要的。
我正在思考如何理解此 UML 图并检查如何将其表示为代码:
让我困惑的是,我们公司和员工接口之间有关联关系,而设计器类实现了员工接口,但是我们如何将公司与员工接口联系起来?
我的理解(例如PHP):
class Company {
...
}
class GameDevCompany extends Company {
...
}
class Designer extends GameDevCompany implements Employee {
...
}
如果我像这段代码一样思考这个图表,它是真实的方式还是我遗漏了什么或做错了什么?
谢谢
我刚刚复习了我生锈的 PHP 知识,现在我只能说你的代码很好。 extends
是继承(所以左边是泛化关系),implements
是接口实现(所以是右边的实现关系)。
扩展你关于关联的查询:好吧,我的 PHP 很生锈,但 IIRC 它完全没有类型。因此,您将有一些对象指针,例如 Company
class 中定义的 $employee
,它引用实现了 Employee
接口的对象。所以你可能会在 Company
class 实现中做一些 $employee->doWork()
。可能你不会有一个,而是一个数组。老实说,这真的是很久以前的语法了。但您可能知道如何编写代码。
P.S。由于(如前所述)我的 PHP 非常生锈,所以我还没有深入到我知道 extends
和 implements
的组合会产生什么。
我们在这个图中有三个概念:
- 专业:
Company
有两个专业,分别是GameDev Company
和Outsourcing Company
- 实现:一个接口Employee可以被任何实现了这个接口的class实现,比如
Designer
(或者Programmer
,Artist
,Tester
, ...) - 关联:
Company
与Employee
关联。该图没有说明多重性。但由于这是一个非常简单的模型,并且根据我们的知识,我们可以猜测一家公司可能与没有、一个或几个相关联Employee
.
在PHP术语中,特化是inheritance,用extend
关键字表示:
class Company {
...
}
class GameDevCompany extends Company {
...
}
在PHP术语中interfaces are implemented而不是实现,这是用关键字implements
interface Employee {
...
}
class Designer implements Employee {
...
}
从一个 Company
到潜在的多个 Employee
的关联要求 Company
具有某种 iterable container such as an array that holds references to the Employee
objects. My PHP is very rusty, but I understand that objects in an array are always references 这正是普通关联所需要的。