麵向對象
麵向對象VS麵向過程
在麵向對象編程出現之前,幾乎所有的程序都是以麵向過程為中心的,程序的運行從某個地方開始運行達到一定的目的就結束了。而且程序的代碼修改和重複使用率比較低。麵向對象把是整個世界看成一係列實體的集合,所有的個體都是對象,而對象就是具有一定屬性和行為的實體的集合。
下麵的表格大概的說明了麵向過程(OPP)和麵向對象(OOP)的區別:
OPP |
OOP |
麵向對象編程中的類和對象
類:是一個抽象概念,比如說我們我們從各式各樣的汽車中抽象出汽車的概念、由不同品種的貓抽象出貓的概念、從顏色和形狀不同的花中抽象出花的概念;而類與類之間的區分是通過類的狀態和行為來區分的。對象:是類的一個實例化,剛開始學,很容易把類和對象混淆,舉幾個例子便於理解,比如說:首都是一個類,北京、華盛頓、倫敦都是對象;動物貓是一個類,Kitty、加菲貓(Grafield)、叮當貓(Doraemon)都是對象。
類是抽象的概念,對象是一個實體,我們可以說Garfield有橙色的毛,而不能說貓類有橙色的毛;我們可以說北京在中國,而不能說首都類在中國。一般情況下狀態是描述具體對象而非類的,行為是有具體對象發出而不是類。
麵向對象的三大特征
封裝
製作電腦什麼人最牛?當然不是會組裝的、也不是會擰螺絲的,而是設計電腦的工程師,因為他知道電腦的運行原理,當我們使用電腦的時候,需要知道電腦的運行原理嗎?顯然不需要;電腦的運行原理已經被工程師封裝在電腦的內部,提供給用戶隻是一個顯示屏、鍵盤、觸摸板和一些接口,用戶通過這些就可以很容易的操作電腦。
麵向對象技術把事物的狀態和行為的實現細節封裝在類中,形成一個可以重複使用的“零件”,被成千上萬的對其內部原理毫不知情的程序員使用。類的設計者相當於電腦的工程師,類的使用者相當於用戶。
繼承
在之前學習UML的時候就已經了解到了繼承,在麵向對象中的繼承分為繼承(泛化)、和組合(聚合)。
多態
舉個例子:我們出去的時候在路口都會看到紅綠燈,紅燈的時候是停車,這個時候自行車,公交車、小轎車等都會停下,需要提出的是它們的停車方式不同,因為他們也屬於不同的類,但是最終的結果是它們都停下來了,是因為有一個共同點的前提,他們都是車,是車類的子類,紅綠燈針對的是車類,天上飛鳥、海裏遊的魚看見紅燈的話就不會停下。
所以說:多態的對象應該有共同的父類
就如上例,紅燈亮了,不同的對象會根據自身的特點實施不同的動作,最終的結果是都停下來。
最後更新:2017-04-03 12:56:00