我能找到的所有教程总是处理玩具uml用例,例如http://www.ibm.com/developerworks/java/library/j-jmod0508/
我无法看到如何在UML用例中对此进行建模:
客户可以是自然人或公司,并且公司的员工本身就是自然人。公司还有一些人为他们工作,作为自然人但不是客户的承包商。
有人可以有任何好主意,并在yuml用例http://yuml.me/中编写此模型吗?
似乎没有人知道UML用例,所以让我们说甚至是类图甚至Java或C#类图甚至是数据库设计:)
我在下面的模型中看到的问题是,Person是一个客户,因此所有员工也都是错误的客户:
答案 0 :(得分:2)
以下类图满足您的需求:
您实际上是在使用两个域:第一个域是公司的层次结构:公司有员工和承包商是人;第二个域是客户的域,可以是公司和客户。因此,在此图表中,您有一个Person
,可以是Contractor
,Employee
或CustomerPerson
,也可以是Customer
,你有CustomerCompany
,Customer
和Company
。
请注意,我创建的CustomerCompany
继承自Company
而不是Company
继承自Customer
,因为我认为并非所有公司都是客户。
我对所有关系都使用了继承,但是如果不需要多继承,可以使用interface来完成。
此图表的yuml代码为:
[Company]++-0..*>[Employee]
[Company]++-0..*>[Contractor]
[Person]^-[Employee]
[Person]^-[Contractor]
[Customer]^-[CustomerCompany]
[Company]^-[CustomerCompany]
[Customer]^-[CustomerPerson]
[Person]^-[CustomerPerson]
答案 1 :(得分:1)
客户可以是实体人员或公司,也可以是公司的员工本身就是实体人员。
您无法使用UML用例图对此进行建模,因为这不是用例。一个用例听起来像Compary可以雇用员工,一个人可以从公司订购产品,等等。
但是,您可以使用以下UML类图对此进行建模:
<强>更新强>
上述类别图并不意味着公司的员工也必须是同一公司的客户。它只是声明一个人可能是某公司的客户或公司的雇员,并同时允许这两个人。
考虑以下对象图,它显示了上述类的一些实例,并且就上面的类图而言完全合法: