這是我的理解,面向對象編程提倡對象互相交互。但就我所見(我學到一點Java)而言,這些程序具有明確的做事方式。像main
例程或某些其他功能強制對象使用其方法。Java是否真的面向對象?
我也讀過OOP程序應該類似於現實世界。在現實世界的例子中,貓和狗會在沒有外界干預的情況下互動。沒有人會強迫狗狗吠貓,但它是在「狗」對象的性質。
但是在Java中,對象並不真正彼此交互。有一個功能指導對象的交互。如果所有的物體都可以識別近物體(沒有其他功能的幫助)並且同時運行它們的行爲,它會不會更好?我認爲它會更適合現實世界。
編輯: - @Makoto是的,我的觀點是,對象不會自動相互作用。
如果對象可以識別同一附近的其他對象並同時運行(如線程),我們可以更加貼近真實世界,同時編寫它來完成我們的工作。
例如: -
class Dog {
if you see a cat object in the same place
bark at it.
if you see the owner object
wag your tail.
}
如果是這樣,我們可以創建一個組對象,讓他們自動交互,該方案將不會是線性的。是的,它與正常的OOP或函數式編程不同。 但我們可以達到相同的結果,所以我希望在現實世界中。
您正在描述模擬器和數據點。你當然可以用Java創建其中的一個,但除非明確告訴兩個對象互相交互,否則它們不會。有點像現實世界。 – Makoto 2014-11-24 05:21:48
你很多人都這樣做,就像做一個聽衆,當狗看到一隻貓時觸發狗的吠叫。 – Junaid 2014-11-24 05:24:41
你可能想看看發佈 - 訂閱模式。它會允許你描述的這種行爲。當然,你必須告訴每個對象它是什麼以及它必須做什麼。除此之外,你無法將對象稱爲「貓」,它會以某種方式知道它不得不喵喵叫。主要功能只是一個相當原始的做法。 – ValtsBlukis 2014-11-24 06:01:43