? ? ? ?本書中對于類和對象的定義是:萬物皆為對象,它可以有狀態、有行為,而它的行為是它的類型(類)決定的;當調用某一個方法時稱其為向該對象發送請求(方法),與之相關聯的方法就會被調用,(請求和方法是一一對應的),作者說編程語言是一種抽象,是對問題和解空間的一種抽象,只有將問題抽象化才能更準確更快捷的得到它的答案。
面向對象語言的特性:
1.萬物皆為對象(即你可以將萬事萬物抽象成一個對象,狗,建筑等等)
2.程序是對象的集合,它可以通過發送消息(請求或者方法)告知對方要做什么
3.每個對象都有自己的由其他對象所構成的存儲。作者的意思應該是當前對象的成員也是可以由其他的對象構成的,即他的屬性可以是其他的類的對象,這樣可以組合成更復雜的對象。
4.每個對象都擁有其類型。每個對象都是類的一個實例。并且類可以擁有不同的對象,其都是相互獨立的,互不干擾。
5.某一特定類型的所有對象都可以接收同樣的消息。個人對于作者的這句話是這樣理解的,即一個類的所有的對象都是可以接收同樣的消息,如light類型的所有對象都是可以接收on()、off()等的消息。
Booch對對象提出了一種更加簡潔的描述:對象具有狀態、行為、標志。即每個對象都擁有內部數據(狀態)和方法(行為),每個對象在內存中都有自己的地址存儲,所以可以通過唯一的地址來進行區分。
對象是服務提供者
?????????開發程序其實就是創建一系列的解決問題的對象,可以將問題從表象中抽象出來,同時想一下需要什么樣的對象可以解決我的問題。作者舉了個例子,是如果開發一個簿記系統,那么都需要什么樣的對象可以實現這個系統;需要一個輸入屏幕的對象,執行計算的對象集合以及可以在不同的打印機上打印支票和開發票的對象。其實個人在此基礎上感覺其實就是需要執行哪些操作,即你需要你創建的系統可以干什么,做哪些事情,然后將事情對應在不同的對象上,即這些事情需要哪些對象去做,因為沒有一個對象是可以獨立完成所有的事情的,他們之間也是需要協作的。
?????????為了更好的解決問題,實現程序的高內聚,可以將功能劃分的更加簡潔、清晰,即一個對象干的事情很少,很簡單,但是整個系統是通過多個簡單的對象協作完成的,盡可能的使得一個對象完成一項任務,不要嘗試做更多的事情。