2016-11-19 43 views
0

我想了解對象交互是如何編程的。對象是如何在OOP中進行交互的?

我想我理解一個對象具有訪問其數據並可以改變它的方法的基本原理。但是如果兩個對象進行交互並且object1所做的事情必須改變object2的狀態。

假設你有一個Person對象和一個Ball對象,Person必須踢球,從而改變球的座標。

難道是這個樣子:

person.kick(ball) 

其中person.kick看起來像

kick(whatToKick) { 
    whatToKick.changeCoord(); 
} 

這是在正確的?

對象狀態應該只能通過自己的方法進行更改嗎?

是對始終對象交互的模式:傳遞的object1一個參考對象2

  • 有對象2的方法調用object1的方法來檢索或改變object1的狀態

    此外,如果有人可以推薦一本關於面向對象原則和設計模式的書,這將是非常好的。

    謝謝。

  • 回答

    1

    基本上,你寫的是正確的:

    1. 對象的狀態只能由該對象的方法進行修改。否則,你將不得不公開並封裝。

    2. 如果對象A需要調用對象B的方法,則需要引用B.如何調用該方法。

    但更重要的是:你似乎認爲OOP是所有有關修改對象的狀態。不幸的是,這種印象是由許多介紹給出的。但事實並非如此。可變狀態導致很多問題,使得程序難以閱讀和測試。幸運的是,大部分你可能需要的東西都可以用不可變的對象完成。只是谷歌的不變性。我也建議看一下功能性編程,其中不變性是標準的。

    (我不會回答你的最後一個問題,因爲這是題外話。)

    +0

    非常有幫助。我一直在閱讀關於面向對象的概念,並且有一些我試圖弄清楚的信息。 – DeNag

    相關問題