0

我能找到的所有教程总是用玩具 uml 用例来解决,比如这里http://www.ibm.com/developerworks/java/library/j-jmod0508/

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

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

有人可以有什么好主意并在 yuml 用例http://yuml.me/中编写这个模型吗?

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

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

在此处输入图像描述

4

2 回答 2

2

以下类图满足您的需求:

类图

您实际上正在使用两个域:第一个域是公司的层次结构:公司有员工和承包商,他们是人;第二个域是客户域,可以是公司,也可以是客户。因此,在此图中,您有一个Personwhich 可以是 a Contractor、 anEmployee或 a CustomerPerson,也可以是 a Customer,并且您有 a CustomerCompanywhich 既是 aCustomer又是 a Company

请注意,我创建CustomerCompany了继承自Company而不是Company继承自,Customer因为我假设并非所有公司都是客户。

我对所有关系都使用了继承,但是如果不需要多重继承,可以使用接口来完成。

此图的yu​​ml代码是:

[Company]++-0..*>[Employee]
[Company]++-0..*>[Contractor]
[Person]^-[Employee]
[Person]^-[Contractor]
[Customer]^-[CustomerCompany]
[Company]^-[CustomerCompany]
[Customer]^-[CustomerPerson]
[Person]^-[CustomerPerson]
于 2012-06-23T19:04:11.593 回答
1

客户可以是自然人或公司,并且公司的员工本身就是自然人。

您不能使用 UML 用例图对此进行建模,因为这不是用例。用例听起来像是 Compary 可以雇用员工,Person 可以从 Company 订购产品,等等。

但是,您可以使用以下 UML 类图对此进行建模: 对问题建模的类图

更新:

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

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

具有不同客户和员工的类图

于 2012-06-22T20:21:57.173 回答