OOP编程思想解读
【編程的面向過程和面向對象兩種思想此處偏向后者】
- 面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
- 面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
面向過程(功能、結構化、模塊化)編程思想的缺點
1.軟件重用性差
重用性是指同一事物不經修改或稍加修改就可多次重復使用的性質。軟件重用性是軟件工程追求的目標之一。
2.軟件可維護性差
軟件工程強調軟件的可維護性,強調文檔資料的重要性,規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中,始終強調軟件的可讀性、可修改性和可測試性是軟件的重要的質量指標。實踐證明,用傳統方法開發出來的軟件,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。
3.不能滿足用戶需要
用傳統的結構化方法開發大型軟件系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要。
用結構化方法開發的軟件,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把復雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子處理功能為止,然后用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的“過程”來構造系統的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對于基于過程的設計來說是災難性的。用這種方法設計出來的系統結構常常是不穩定的 ,用戶需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。
產生了OOP編程思想
OOP核心思想:封裝,繼承,多態。
理解:
對象是由數據和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統。
基本思想:把組件的實現和接口分開,并且讓組件具有多態性。
概念:
OOP是九十年代才流行的一種軟件編程方法。它強調對象的“抽象”、“封裝”、“繼承”、“多態”。我們講程序設計是由“數據結構”+“算法”組成的。從宏觀的角度講,OOP下的對象是以編程為中心的,是面向程序的對象。我們今天要講的OOD是面向信息的對象,是以用戶信息為中心的。
對象的產生:
一、是以原型(prototype)對象為基礎產生新的對象。
二、是以類(class)為基礎產生新對象。
封裝
封裝:讓抽象的事物保護自身的狀態,防止非其他事物對其進行錯誤的狀態改變操作。我們抽象完一個事物后,可能在特定的條件下,其本身的狀態需要改變,但是這個改變并允許其他的事物來進行,這樣的改變只允許這個事物認同的操作域來進行,可以是該事物本身,也可以是它信任的其他事物。這樣我們就能對我們抽象完的每個事物進行自身數據的保護
繼承
繼承:讓抽象出來的事物具有本應該具有的聯系。我們能用類來描敘一個抽象的事物,同時能用對象來描敘具體的事物,但是這些事物都是獨立的,彼此之間沒有應該有的聯系,這樣的孤立設計并不符合現實邏輯,讓事物之間的聯系得到描敘,我們就需要繼承,例如:發明自行車的人并不是一開始就發明了多人自行車,這些都是從雙輪自行車演變和發展而來,但是他們都有共同的特點,有輪子,有車架子,等等。讓我們用繼承的關系把這兩個現實的抽象聯系起來,這樣我們就能設計出不孤立的類,而是和其他類有聯系的類。
多態
多態:用一種解決方案來解決對一類問題,對于不同的事物解決途徑和結果不同。在C++中實現多態性有三種方法,分別是:虛函數,函數重載和運算符重載。這三種方法大家都可以看到我們解決問題的初衷是一樣的,都是利用同名函數,同名的運算符號,這抽象出來也就是解決問題的方法,但是對于不同的事物的反應卻是不同的,例如:當用一個getPadNumber()方法來得到普通自行車和雙人自行車的坐墊數量的時候,返回的結果是一個和兩個,這就是具體的事物返回的結果不同。
總結
- 上一篇: php 字符串 替换 最后,php如何替
- 下一篇: 【视频】CCNA——telnet和SSH