如何在UML Java或C#甚至数据库中建模,客户可以是实体人员,也可以是公司,公司有员工和员工。承包商

时间:2012-06-22 10:04:09

标签: c# java database-design model uml

我能找到的所有教程总是处理玩具uml用例,例如http://www.ibm.com/developerworks/java/library/j-jmod0508/

我无法看到如何在UML用例中对此进行建模:

客户可以是自然人或公司,并且公司的员工本身就是自然人。公司还有一些人为他们工作,作为自然人但不是客户的承包商。

有人可以有任何好主意,并在yuml用例http://yuml.me/中编写此模型吗?

似乎没有人知道UML用例,所以让我们说甚至是类图甚至Java或C#类图甚至是数据库设计:)

我在下面的模型中看到的问题是,Person是一个客户,因此所有员工也都是错误的客户:

enter image description here

2 个答案:

答案 0 :(得分:2)

以下类图满足您的需求:

class diagram

您实际上是在使用两个域:第一个域是公司的层次结构:公司有员工和承包商是人;第二个域是客户的域,可以是公司和客户。因此,在此图表中,您有一个Person,可以是ContractorEmployeeCustomerPerson,也可以是Customer,你有CustomerCompanyCustomerCompany

请注意,我创建的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类图对此进行建模: Class diagram to model the problem

<强>更新

上述类别图并不意味着公司的员工也必须是同一公司的客户。它只是声明一个人可能是某公司的客户或公司的雇员,并同时允许这两个人。

考虑以下对象图,它显示了上述类的一些实例,并且就上面的类图而言完全合法:

Class diagram with separate customers and employees