OOP经济设计

时间:2010-04-17 02:14:39

标签: oop

不知道从哪里开始,所以我只是要进去。让我们说我试图用OOP来代表一个经济体。我提出的基本设计是:

class Person{
  int $money; // Money someone has in wallet/purse
  int $bank_account_id;

  function getAmountOfMoney()
  function addMoney($amountToAdd)
  function subtractMoney($amountToSubtract)
}

class BankAccount{
  int $money; // Money in Bank Account
  int $interest_per_year;

  function giveInterest()
  function depositMoney() // Calls $person->subtractMoney()
  function withdrawMoney() // Calls $person->addMoney()

}

这里有设计缺陷吗?

2 个答案:

答案 0 :(得分:2)

看看你的开始我会建议你应该尽量让你的课程承担一个责任。值得思考的是BankAccount负责计算利息吗?可能不是。

如果您想学习OO开发的良好原则,我建议您查看S.O.L.I.D:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod(+ 100其他链接)

答案 1 :(得分:1)

我注意到的一件事是,一个人和一个银行账户不是一对一的关系。例如,储蓄和开帐户就可以了。或者有些人会有多家银行,或者我知道我的父母,同一家银行的几个账户。将$bank_account_id存储在Person中是我所指的。

最好有一个包含该人拥有的每个帐户的数组。

另外,如果您的人物有ID,那么您应该也可以在BankAccount中使用。

depositMoney()withdrawMoney()类似的是,当Person访问PersonBankAccount访问{{1}}时,他们应该在{{1}}上工作反过来说。

基本上,你将这两个类之间的关系与表现现实生活(和实际)用法的方式有些相反。