【问题标题】:Design a bank account and membership UML diagram (OO design)设计银行账户和会员UML图(OO设计)
【发布时间】:2020-07-25 04:17:30
【问题描述】:

我正在使用 UML 图设计一个后退帐户会员系统。

我的想法是创建一个类 userAccount 和 2 个继承 userAccounts 的子类 savingAccountcurrentAccount

对于会员,我创建了一个会员接口Membership,并实现了3个类,GoldSilverBronze

所以我希望不同的会员对两个账户有不同的提款限额和转账限额,但只有interestRateCalculation() 将应用于savingAccount 类。

我已经按照图中的方式实现了UML图。

但是,我觉得这不是实现这一点的正确方法。由于帐户没有继承membership 类,因此帐户类中的方法不应该能够检索membership 类中的这些方法。但是如果不以这种方式实现,我找不到更好的实现方式。

我想知道实现图表的更准确方法是什么。非常感谢。

【问题讨论】:

  • 我可以想象Saving(s) 帐户是什么,但Current 帐户是什么?也许是货币?另外:按照惯例,你的类名以大写字母开头。
  • 哈,打错字了,谢谢提醒 :)

标签: oop uml system-design


【解决方案1】:

如果这是真的,我在会员等级中看到的一切似乎都与任何帐户无关:

  • 整个系统中每个子类只有1个实例,所以一共3个,每个都是单例。

  • IMembership 聚合 userAccount 的事实毫无意义,它不必知道帐户

  • 可能一个帐户与三个单例中的一个且仅一个关联,从而允许帐户知道限制以及如何计算利息。在这种情况下,您有一个从 userAccountIMembership

  • 的定向关联

属性withdrawLimittransfertLimit存在于四个会员类中是不正常的,它们必须只存在于IMembership中,其必须是一个抽象类而不是一个接口

对我来说 userAccount 必须是一个抽象类,因为您不能拥有一个不是两个子类之一的帐户。

getWithdrawLimitgetTransfertLimit 操作仅依赖于成员资格,因此它们是在 userAccount 上定义的,而不是在子类上定义的,当然这些操作调用关联成员实例上的相应操作。

(我没有定义构造函数以节省时间)

是的,在 currentAccount 的情况下,利息的计算是无用的,但如果您想避免必须将会员类别加倍,则与会员的直接关联不在 userAccount 但每个子类,getWithdrawLimitgetTransfertLimit 操作在 userAccount 中都是抽象的。这更复杂,我认为不值得这样做

【讨论】:

  • 谢谢哥们。很好解释。非常感谢您的帮助! :)
猜你喜欢
  • 2014-03-29
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多