作业帮 > 综合 > 作业

UML 怎么表达两个类存在泛化和组成关系

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 21:45:10
UML 怎么表达两个类存在泛化和组成关系
有两个类,原材料和产成品.
1、原材料是产成品的超类,产成品是原材料的子类,它们之间可以用泛化来表示.
2、产成品可以由1-3种原材料组成,它们之间可以用聚合关系来表示.
我现在想用UML表示1和2,请我如何处理,谢谢!
公司业务:生产机器,和制作小卷牛皮纸.
问题中所提到的原材料(对于工厂来说,成品的组成部分都是原材料)是从美国进口过来的牛皮纸(大卷),而产成品就是我们可以卖的小卷牛皮纸.
昨天公司财务财务告诉我,他的订货期是2.5个月时间,希望系统能够在系统中增加一个模块来计算他到底需要订购多少大卷牛皮纸.
譬如,大卷牛皮纸有三种类型 50g,70g,80g.
用50g和80g可以加工小卷双层牛皮纸 P580275(产品型号).
这样就出现了我问题中存在的现象,大卷牛皮纸是小卷牛皮纸的超类,同时两款大卷牛皮纸合成一款小卷牛皮纸,而且是比较严格的组成关系.
(P580275 = 50g + 80g 的组合)
关系很简单,但表达起来有点难小手.
UML 怎么表达两个类存在泛化和组成关系
没有好的画图工具,凑合一下吧.
左边是1,右边是2.
2的上面,可以在黑箭头边上写上1,在下面的materials下加上箭头,并写上1-3.

再问: 一个类既可以做超类,又可以被子类聚合,我想表达的是,两者之间会不会存在矛盾,抑或我的概念本身就存在错误。 谢谢!
再答: 建模仅仅是一种解决问题的手段,超类被子类聚合,很蹩脚,应该可以继续分解的。 不了解的你的实际需求,可能说的不是很准确。 做成泛化的目的更多是为了抽取共同性,做成聚合更多的是为了管理。 比如塑料(原材料)和塑料桶(产品),应该倾向于塑料桶泛化塑料,这样可以把塑料的属性封装在塑料这个基类中。 比如主板、CPU(原材料)和电脑(产品),应该倾向于产品是由CPU和主板组成的关系,从电脑可以找到主板和CPU。
再问: 背景资料是这样,我之前开发过一个CRM系统(ASP.NET编写),由于大部分使用的是SA分析技巧,类的设计侧重于解决问题,程序之间耦合度和内聚性控制的不是很严格,一些算法譬如递归、全息数据日志等写的也不完美,所以想重新用比较专业的方式改写。最近系统性的研究了UML和系统架构,将在别人特定业务系统上提取的一套理论,运用在CRM中,感觉难度还是有点大,系统分析的难度在于对每个业务流程的理解、提取、精确的表达。
再答: 把大卷牛皮纸作为产品的超类,似乎没什么意义。 A:原材料 B:大卷牛皮纸 C:50g大卷牛皮纸 D:80g大卷牛皮纸 E:产品原材料关系类 F:P580275 B从A继承 C和D从B继承 E由若干个A组成,因为BCD都是从A继承而来,所以可以也可以存放DCD的实例 有意个E的实例,其中包含C和D F中参考E,不是聚合,而是参考,很多个F对象可以共用一个E的对象。