设计银行账户和会员UML图(OO设计)

Design a bank account and membership UML diagram (OO design)

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

我的想法是创建一个 class userAccount 和 2 个继承 userAccounts[= 的子 classes savingAccountcurrentAccount 23=]

有了会员资格,我创建了一个会员界面 Membership 并实施了 3 classes,GoldSilverBronze

所以我想让不同的会员对两个账户有不同的取款限额和转账限额,但是只有interestRateCalculation()会应用到savingAccount class.

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

但是,我觉得这不是实现它的正确方法。由于帐户没有继承 membership classes,因此帐户 classes 中的方法不应该能够检索 membership [=] 中的那些方法37=]es。但是如果不这样实现,我找不到更好的实现方式。

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

我在会员中看到的所有内容 classes 似乎独立于任何帐户,如果这是真的:

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

  • 事实 IMembership 聚合 userAccount 没有任何意义,它不必知道帐户

  • 可能一个账户只关联了三个单例中的一个,让一个账户知道限额以及如何计算利息。在这种情况下,您有一个从 userAccountIMembership

  • 的定向关联

属性withdrawLimittransfertLimit出现在四个membershipclass中是不正常的,必须出现仅在 IMembership 中,其必须是抽象 class 而不是接口

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

getWithdrawLimitgetTransfertLimit 操作仅取决于成员资格,因此它们是在 userAccount[=52= 上定义的] 而不是在子 classes 上,当然这些操作会调用关联成员实例上的相应操作。

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

是的,在 currentAccount 的情况下,利息的计算是无用的,但如果你想避免必须将会员资格加倍 classes,与会员的直接关联不在 userAccount 上,而是在每个子 class 上,并且操作 getWithdrawLimitgetTransfertLimituserAccount 中是抽象的。这更复杂,我认为不值得付出努力