- 為什么要用面向?qū)ο螅?br> 為了模擬現(xiàn)實世界
- 什么叫做面向?qū)ο?br> 面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)發(fā)展到一定階段后的產(chǎn)物
- 面向?qū)ο缶幊痰奶卣?/li>
- 封裝
- 繼承
- 多臺
面向?qū)ο蠛兔嫦蜻^程的區(qū)別
面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),試用的時候一個一個一次調(diào)用就可以了。
面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描述某個事務(wù)在整個解決問題步驟中的行為。
面向過程關(guān)注的是解決問題需要哪些步驟;面向?qū)ο箨P(guān)注的是解決問題需要哪些對象。
例如五子棋,面向過程的設(shè)計思路就是首先分析問題的步驟:
- 開始游戲
- 黑子先走
- 繪制畫面
- 判斷輸贏
- 輪到白字
- 繪制畫面
- 判斷輸贏
- 返回步驟2
- 輸出最后結(jié)果
把上面每個步驟分別用函數(shù)來實現(xiàn),問題就解決了。
而面向?qū)ο蟮脑O(shè)計則是從另外的思路來解決問題。整個五子棋可以分為
- 黑白雙方,這兩方面的行為是一模一樣的
- 棋盤系統(tǒng),負(fù)責(zé)繪制畫面
- 規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等
第一類對象(玩家對象)負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤對象)旗子布局的變化,期盼對象接收到了棋子的變化就要負(fù)責(zé)在屏幕上顯示出這種變化,同時利用第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定。
可以明顯的看出,面向?qū)ο笫且怨δ軄韯澐謫栴},而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設(shè)計中分散在了總多步驟中,很可能出現(xiàn)不同的繪制版本,因為通常設(shè)計人員會考慮到實際情況進(jìn)行各種各樣的簡化。而面向?qū)ο蟮脑O(shè)計中,繪制只可能在棋盤對象中出現(xiàn),從而保證了繪圖的統(tǒng)一。
用面向?qū)ο笏伎紗栴}更符合我們?nèi)说乃伎挤绞健?/p>
常用術(shù)語
- 面向過程 Procedure Oriented
- 面向?qū)ο?Object Oriented
- 面向?qū)ο缶幊?Object Oriented Programming
面向?qū)ο缶幊讨械挠嘘P(guān)術(shù)語
- 類
- 對象
- 實例
- 方法
- 消息
類的概念
- 類是一種結(jié)構(gòu),表示對象的類型。代表一批事務(wù)的抽象。
- 類并不表示單一一個事物
什么叫對象
- 對象是一個特定的事物,專門特指某一個
- 對象是類的一個實例
- 對象和類的區(qū)別就是,對象是特定的某個事物,類泛指一批事物
- 實例是對象的另外一種叫法
方法與消息
- 方法是類能夠進(jìn)行什么樣的操作,一般通過對象進(jìn)行方法的調(diào)用
- 方法用來描述對象的行為
- 消息用于通知對象做什么,通過對象發(fā)送消息,對象接受消息后找到對應(yīng)的方法并運行
- 發(fā)送消息也稱為方法調(diào)用