2014-02-17 120 views
0

讓我給你什麼我需要幫助的例子:需要幫助多態性

主要類:

cnd:Currency 
usd:Currency 
cc:Combined_Currency 
usd := cc.usd 
cnd := cc.cnd 

所以,該類Combined_Currency有一個類Currency。貨幣類別具有例如exchange_rate的屬性。我相信Combined_Currency類將有類似:

cnd:Currency 
usd:Currency 

我的問題是如何實現的exchange_rate一部分?我認爲exchange_rate是一個常數,所以我不需要設置任何內容。 我需要它來檢查是否:cad.exchange_rate = 1.5

在哪個類中,我將exchange_rate設置爲相應的貨幣? 和誰能給我一個想法什麼cad := cc.cad的含義。

+0

我試過在'Combined_Currency'類中'cnd.exchange_rate:= 1.5',但是有一個編譯錯誤。 – J0natthaaann

+0

如果你想做「cnd.exchange_rate:= 1.5」,你必須使用一個分配器。請參閱:http://docs.eiffel.com/book/examples/example-self-initializing-attributes-and-assigner-commands。另外,爲什麼你說exchange_rate必須是一個常量,並且你試圖從類客戶端爲它賦值。 –

+0

好了,起初我必須分配一個值'cnd.exchange_rate' – J0natthaaann

回答

0

這是我會做的:首先,我將類貨幣設置爲延期並創建子類來表示每種貨幣(cad,usd等)。我會把Currency_rate放在Currency類中。當然,如果您認爲您將處理大量貨幣,則可以使用非延遲貨幣類並使用創建者初始化屬性。之後,我會選擇一個基礎貨幣(例如美元)。在該貨幣中,currency_rate將始終爲1,而其他貨幣中的currency_rate的值將相對於基數。

的 「CAD:= cc.cad」 是使用以獲得一個下賤屬性(cc.cad)的局部基準(CAD)。

+0

我不允許使用'create'這個詞。 – J0natthaaann

+0

如果沒有創建,你不能做太多。如果你需要從Combined_Currency對象中獲得貨幣對象,那麼我認爲setter是你最好的選擇。 –