繁体   English   中英

您如何在UML Java或C#甚至DB中建模,客户可以是自然人也可以是公司,而公司有员工和承包商

[英]How do you model in UML Java or C# or even DB that a customer can be either a Physical Person or a Company and a Company has employees & contractors

我可以找到的所有教程都始终使用玩具uml用例解决,例如http://www.ibm.com/developerworks/java/library/j-jmod0508/

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

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

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

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

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

在此处输入图片说明

以下类图满足您的需求:

类图

您实际上正在使用两个域:第一个域是公司的层次结构:公司拥有员工和承包商(即人员); 第二个域是客户的域,可以是公司和客户。 所以,在这个图中你有一个Person可以是一个Contractor ,一个EmployeeCustomerPerson ,也可以是一个Customer ,和你有一个CustomerCompany这既是一个CustomerCompany

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

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

此图的yuml代码为:

[Company]++-0..*>[Employee]
[Company]++-0..*>[Contractor]
[Person]^-[Employee]
[Person]^-[Contractor]
[Customer]^-[CustomerCompany]
[Company]^-[CustomerCompany]
[Customer]^-[CustomerPerson]
[Person]^-[CustomerPerson]

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

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

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

更新:

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

请考虑以下对象图,该对象图显示了上述类的一些实例,并且根据上述类图完全合法:

具有单独的客户和员工的类图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM