產(chǎn)品經(jīng)理懂點技術(shù):什么是面向?qū)ο?
面向?qū)ο笫且环N編程思想,是為了能夠讓計算機(jī)直接模擬現(xiàn)實的環(huán)境,用人類的思路、習(xí)慣、步驟來解決問題。從編程的角度來說,面向?qū)ο笫菫榱私鉀Q系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可重用性。
面向?qū)ο笈c面向過程的區(qū)別
面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了;面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
可以拿生活中的實例來理解面向過程與面向?qū)ο螅缥遄悠?,面向過程的設(shè)計思路就是首先分析問題的步驟,再把上面每個步驟用不同的方法來實現(xiàn):
1、開始游戲
2、黑子先走
3、繪制畫面
4、判斷輸贏
5、輪到白子
6、繪制畫面
7、判斷輸贏,
8、返回步驟2
9、輸出最后結(jié)果
如果是面向?qū)ο蟮脑O(shè)計思想來解決問題。面向?qū)ο蟮脑O(shè)計則是從另外的思路來解決問題。整個五子棋可以分為:
1、黑白雙方,這兩方的行為是一模一樣的,
2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,
3、規(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)一。
對象&屬性&類
對象
在計算機(jī)科學(xué)中,對象(英語:object),臺灣譯作物件,是一個存儲器地址,其中擁有值,這個地址可能有標(biāo)識符指向此處。對象可以是一個變量,一個數(shù)據(jù)結(jié)構(gòu),或是一個函數(shù)。是面向?qū)ο螅∣bject Oriented)中的術(shù)語,既表示客觀世界問題空間(Namespace)中的某個具體的事物,又表示軟件系統(tǒng)解空間中的基本元素。
在軟件系統(tǒng)中,對象具有唯一的標(biāo)識符,對象包括屬性(Properties)和方法(Methods),屬性就是需要記憶的信息,方法就是對象能夠提供的服務(wù)。在面向?qū)ο螅∣bject Oriented)的軟件中,對象(Object)是某一個類(Class)的實例(Instance)。
屬性
屬性用來描述具體某個對象的特征。比如小志身高180M,體重70KG,這里身高、體重都是屬性。
面向?qū)ο蟮乃枷刖褪前岩磺卸伎闯蓪ο?,而對象一般都由屬?方法組成!
屬性屬于對象靜態(tài)的一面,用來形容對象的一些特性,方法屬于對象動態(tài)的一面,咱們舉一個例子,小明會跑,會說話,跑、說話這些行為就是對象的方法!所以為動態(tài)的一面,我們把屬性和方法稱為這個對象的成員!
類
具有同種屬性的對象稱為類,是個抽象的概念。比如“人”就是一類,期中有一些人名,比如小明、小紅、小玲等等這些都是對象,類就相當(dāng)于一個模具,他定義了它所包含的全體對象的公共特征和功能,對象就是類的一個實例化,小明就是人的一個實例化!我們在做程序的時候,經(jīng)常要將一個變量實例化,就是這個原理!我們一般在做程序的時候一般都不用類名的,比如我們在叫小明的時候,不會喊“人,你干嘛呢!”而是說的是“小明,你在干嘛呢!”
面向?qū)ο蟮奶攸c
面向?qū)ο笥腥筇匦?,分別是:
↘????? 封裝性
↘????? 繼承性
↘??? ? 多態(tài)性