目錄
一、物件導向的概述
二、物件導向和面向過程
三、物件導向的特徵(如何定義類的參考)
艾倫凱:你要到達那個星球,不能瞄準他現在的位置,而是要瞄準他未來的位置。1.物件導向中的物件模擬細胞,細胞間的通訊(化學交流)模擬物件間的通訊。細胞有相似性也有差異性。願景(即星球未來的位置)大於近期的目標,願景可以自己去創造。
2.乙個可持續發展的系統,要關注物件間的通訊,而不僅僅是物件內部的屬性和方法(行為特性)。
3.類完全就是柏拉圖的理念論,類是乙個抽象的概念,物件就是類的例項化。
現實中只有例項化的物件,沒有類。世界為物件的集合
4.類中,其實屬性和方法都是方法。屬性中的資料(屬性)也可以看做是方法(函式)
5.自己的思考模型(目前的思考模型為直面,正視問題),影響著你看到的資訊。
物件導向:一場籃球賽,球員的位置打法並不確定,將資料和方法封裝在一起,通訊時傳遞資料也傳遞方法。
面向過程:流水線,工人得操作規範都已經完全確定。c語言中的main(),只考慮方法,不考慮資料在**。
通訊中,面向過程,client 和server 間提前約定好解釋方式。
物件導向,client 和server間傳遞的是物件,其中有資料也有處理資料的方式。
面向過程和物件導向的核心問題是,事物的內部及外部穩定度問題。1.封裝事物內部屬性穩定(如操作員),領導讓你幹嘛你就幹嘛,沒有靈活性,但執行力好。但工廠環境要求苛刻,甚至有時需要無塵車間。
事物屬性多,事物是否執行領導指令有其自己的判斷。可以處理更不確定性高的外部環境,比如足球賽,球員可以根據形勢有自己的判斷。
從這方面講,物件導向就是賦能。
隱藏不必要的資料和方法,及其實現的**,以減低事物構成的複雜性,保護物件內部資料(保護物件內部的穩定性)。私隱性資料。
原則:只留必要的屬性和方法,其他的封裝起來,對外留介面提供呼叫。
2.繼承
base class、super class 是基類,繼承他的屬性或方法的是子類。
3.多型
類族(抽象的程度不同):交通工具-飛機-噴氣式飛機
傳送同乙個訊息對眾多物件後,物件會根據自己的判斷及屬性做自己的操作。且傳送方不必知道接收到物件是誰。
如形狀屬性,要求畫形狀時,不同的物件會畫不同的形狀。
4.聚合:如大學有老師和學生組成,之間沒有依存關係
組合:如樹葉和大樹,樹葉的生命週期由大樹的生命週期決定
5.介面(inte***ce):api(應用程式介面)提供給其他人呼叫
實現:實現功能的內部**
實現的人不需要知道客戶的具體操作。只需要提供介面功能就可以了
客戶也不需要知道發電廠是怎麼發電的就可以用電。
6.抽象:抽象的能力決定能處理的物件的數量
抽取物件的共有特徵,做出乙個類。如人 貓 狗 都是動物。
站在自己需求的角度,剔除現實世界中物件的無關的屬性,抽取關聯的屬性。
物件導向思維引導
物件導向自我理解 舉例說明 構建乙個人的物件 首先需要軀殼,這個時候定義結構體就是給人這個物件建立軀殼,軀殼包含了很多屬性,如頭,手,眼睛等等,就不一一建立了,假裝是個殘疾人 type person struct 建立了乙個有頭有眼睛的人 物件 結構體是值型別,傳導需要值傳遞建立好軀體後,每個人都會...
物件導向的程式設計思維
物件導向程式設計的解釋 下面通過 將大象裝冰箱 這個例子來說明物件導向程式設計與面向過程程式設計的區別 面向過程的程式設計的實現如下 open icebox 將冰箱門開啟 push elephant,icebox 將大象放進冰箱 close icebox 將冰箱門關上 如果用物件導向的程式設計,需要...
物件導向的思維方式
第一,首先確定誰來著,其次確定怎麼做 對比一下c語言,c語言要實現乙個功能,比如說要求乙個數的平方根,只要呼叫乙個函式就可以求出來,但在物件導向裡面不是這樣,首先應該考慮的是,求平方根的這件事應該是誰的任務,或者說是由誰來著,其次考慮怎麼去做,這才是物件導向。第二,首先考慮整體,其次考慮區域性 我就...