2010-04-17 26 views
0

不知道從哪裏開始,所以我只是在努力。假設我試圖代表面向對象的經濟。我想出的一個基本設計是:面向經濟的面向對象設計

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() 

} 

這裏是否有任何設計缺陷?

回答

1

我注意到的一件事是,一個人和一個銀行賬戶不是1對1的關係。例如,儲蓄和支票賬戶。或者有些人會擁有多家銀行,或者我像我的父母一樣知道同一家銀行的多個賬戶。我所指的是將$bank_account_id存儲在Person中。

將數組包含每個人擁有的賬戶會更好。

此外,如果您有身份證件,您應該也可以在BankAccount

類似的事情與depositMoney()withdrawMoney(),你有他們工作Person,當他們要工作的自己,用Person訪問BankAccount不是相反。

基本上,兩個類之間的關係有點落後於代表實際(實際)使用的方式。

2

看看你已經開始了我會建議你應該儘量讓你的課程有一個單一的責任。有些食物值得一提,它是負責計算利息的BankAccount?可能不會。

如果您想了解關於OO良好的發展原則,我建議在看S.O.L.I.D:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod(+等環節100的)