2016-07-24 103 views
-1

有一点使用下面的信息与类图来麻烦:UML类图施工

  • 一个服务公司为客户提供服务。
  • 客户可以分为两种类型:住宅企业
  • 住宅客户只能购买住宅服务,企业客户可以购买企业和住宅服务。
  • 住宿服务,可以预付费或后付费,企业服务总后付费
  • 预付费业务可以由客户续期,后付费服务自动续期
  • 3G和ADSL业务出售给住宅和商业用户,IFLY服务出售给住宅只要。

这是我做的UML图,它会工作吗? enter image description here

enter image description here

+1

可能有[Uml Diagram - 面向对象]的副本(http://stackoverflow.com/questions/38553719/uml -diagram-object-oriented) –

+0

正常的做法是更新旧的问题,而不是创建一个新的问题;他们在字面上是相同的。 –

+0

我删除了旧的那个。这个解释了问题 –

回答

1

至于你要学会做UML,我会让你画你的架构。不过这里一些提示,开始您的类图:

  • 一个服务公司为客户提供的服务=>这只是一般的框架。我们需要一个CustomerService
  • 客户可以有两种类型:法人住宅” =>你需要的类ResidentialCorporate有泛化关系Customer
  • 住宅的客户只能买住宅服务,企业客户可以购买企业和住宅业务=>你需要一个ResidentialServiceCorporateService类必须Service泛化关系。另外,你可以画出所提到的关系。
  • 住宅服务可以预付或后付,企业服务总是后付=>有几种方法可以做到这一点。例如:您可以通过PaymendMode类和与Service的关系。加入则注释与{ }之间写入的约束的链接 - 另一种方法是预见类PrepaidProductPostpaidProductPaidProduct继承和借鉴的强制或可选的关系(使用基数)
  • 预付费服务可以通过续约客户,后付费服务自动更新=>再次,几种方法来做到这一点。一种方法是在服务中添加一个方法renewal(),并通过一个转折说明特殊情况 - 或者如果您选择支付模式层次关系,则可以制定一个从ResidentialServicePrepaidProductBusinessServicePaidProduct的泛化关系,并且在父级上添加接口方法。
  • “出售给住宅和商业用户3G和ADSL服务,IFLY服务出售给居民只=>这是一个陷阱:3G,ADSL和IFLY的对象,而不是类,所以他们什么都没有做在类图上。另一方面,这可能暗示您需要与Service相关的类Product

编辑:一些修正你的图

你的图应该代表反过来继承:

enter image description here

您用来显示一个多值的数组符号属性:

enter image description here

实际上与基数的关系相同。身高的关系为:

enter image description here

对于剩下的,逻辑上似乎没什么问题。除了不同服务中的预付费/后付费:基数应为0..1(可选)(或强制为1)。

最后说明:关于预付/后付:目前尚不清楚服务是否只是指明哪些付款方式被接受(独立于客户)还是该属性是客户特定的。如果是后者,则应该使用客户与相关服务之间的关联类(请参阅here

+0

您好,我的方法是有一个客户类和2个子类,住宅和企业。住宅客户有一系列的住宅服务,而企业客户有一系列的服务。服务类有2个小类,住宅服务和公务员服务。其中每个服务类都有一个预付费和/或后付费数组。我做了两个单独的类,这是后付费和预付服务ID和付款方式。它的工作? –

+1

当你说数组是你说的实现?或者你的意思和联系?也许你可以编辑你的问题,并显示你在此期间完成的模型,以便我们可以查看它。 – Christophe

+0

感谢您的帮助,我编辑了问题并上传了我的模特的两张照片。请给我您的意见 –