文章目錄
- 面向對象概念
-
- 語言分類
- 面向對象
- 類class
- 面向對象三要素
面向對象概念
語言分類
- 語言的分類
- 面向機器
- 抽象成機器指令,機器容易了解
- 代表:彙編語言
- 面向過程
- 問題規模小,可以步驟化,按步驟順序處理。
- 例如:做一件事情,排出個步驟,第一步幹什麼,第二步幹什麼,如果出現情況A,做什麼處理,如果出現了情況B,做 什麼處理。
- 代表:c語言
- 面向對象OOP
- 随着計算機需要解決的問題的規模擴大,情況越來越複雜。需要很多人、很多部門協作,面向過程程式設計不太适合 了。
- 代表:C++,java,Python,C#等
面向對象
- 面向對象是一種認識世界、分析世界的方法論。将萬事萬物抽象為各種對象。
類class
- 類是抽象的概念,是萬事萬物的抽象,是一類事物的共同特征的集合。
-
用計算機語言來描述類,是屬性和方法的集合。
舉例:
- 你吃魚
- 你,就是對象;魚,也是對象;吃就是動作
- 你是具體的人,是具體的對象。你屬于人類,人類是個抽象的概念,是無數具體的人的個體的抽象。
- 魚,也是具體的對象,就是你吃的這一條具體的魚。這條魚屬于魚類,魚類是無數的魚抽象出來的概念。
- 吃,是動作,也是操作,也是方法,這個吃是你的動作,也就是人類具有的方法。如果反過來,魚吃人。吃就是魚 類的動作了。
- 吃,這個動作,很多動物都具有的動作,人類和魚類都屬于動物類,而動物類是抽象的概念,是動物都有吃的動 作,但是吃法不同而已。
- 你駕駛車,這個車也是車類的具體的對象(執行個體),駕駛這個動作是魚類不具有的,是人類具有的方法。
- 屬性:它是對象狀态的抽象,用資料結構來描述。
- 操作:它是對象行為的抽象,用操作名和實作該操作的方法來描述。
- 每個人都是人類的一個單獨的執行個體,都有自己的名字、身高、體重等資訊,這些資訊是個人的屬性,但是,這些信 息不能儲存在人類中,因為它是抽象的概念,不能保留具體的值。
-
而人類的執行個體,是具體的人,他可以存儲這些具體的屬性,而且可以不同人有不同的屬性。
哲學
- 一切皆對象
- 對象是資料和操作的封裝
- 對象是獨立的,但是對象之間可以互相作用
- 目前OOP是接近人類認知的程式設計範式
面向對象三要素
- 封裝
- 組裝:将資料和操作組裝到一起。
- 隐藏資料:對外隻暴露一些接口,通過接口通路對象。
- 比如:駕駛員使用汽車,不需要了解汽車的構造細 節,隻需要知道使用什麼部件怎麼駕駛就行,踩了油門就能跑,可以不了解其中的機動原理。
- 繼承
- 多複用,繼承來的就不用自己寫了
- 多繼承少修改,OCP(Open-closed Principle),使用繼承來改變,來展現個性
- 多态
- 面向對象程式設計靈活的地方,動态綁定
人類就是封裝:
- 人類繼承自動物類,孩子繼承父母特征。分為單一繼承、多繼承;
- 多态,繼承自動物類的人類、貓類的操作”吃“不同。