物件導向思想的簡單描述

2022-03-09 18:40:38 字數 3410 閱讀 6844

1、什麼事物件導向

在很多參考書上都可以看到說「物件導向是要模擬人類的認知過程」,這話說得比較泛,也抽象。

在平時的教學過程中也有不少學生詢問到底什麼是物件導向,感覺在學校學了很多,但只記得一些概念,到底什麼是物件導向還是很混亂。

還有一部分同學認為物件導向就是類,就是欄位或方法的封裝,其實不然,物件導向實際上是一種程式設計的思想,類只是用來方便實現的工具。

我常常說傳智基礎班的內容並不難,主要是弄清兩個重點

第一、程式如何寫出來

也就是怎麼分析問題,拿到乙個問題,用程式寫出來,肯定遵循一定步驟,先做什麼、再做什麼、最後做什麼

雖然不一定能絕對分析入骨、點點到位,但是需要慢慢的培養思考的習慣,因為乙個問題的解決絕對不止一種方法

第二、理解物件導向的概念

c#作為一門物件導向的語言,微軟將物件導向的概念在c#裡面體現得非常好

同時作為.net開發者,物件導向開發的準確理解是非常有必要的

我以前看過很多書(現在依舊有看書的習慣),很多c++的書曾描述物件導向的時候,常常提到開發大型程式才能體會物件導向的好處,那麼這個好處是什麼呢,相信等你讀完下面的內容就自然明白了

好了,那到底什麼是物件導向呢?

物件導向就是「將程式的執行者變為執行的命令者」

先來看乙個例子

倒退100年,人們吃飯怎麼完成的呢?

首先要購買材料,人後在家生火,然後加工煮熟(簡單的概括)

再看看今天的上班族,怎麼吃飯呢?

首先拿起**,告知對方你要吃什麼,然後等著付錢即可

我們會發現前乙個例子,我們「事必躬親」,必須考慮每乙個細節,以及每個環節之間的關係。但是後一種方式根本不用考慮任何細節,只要通知一下對方即可

用偽**描述一下

第一種方式

static void main(string args)

第二種方式

static void main(string args)

簡單的比較一下,實際上物件導向就好像將任務發派到其他地方,所要的只是法號命令,等待結果就行了。其細節和過程都有相應的方法去完成,不用我們考慮

在來看第二個例子

比如現在有位同學想買相機,但是現在市場上相機琳琅滿目,不知道如何挑選,大家會怎麼辦?

ok!不少同學會說上網查!那麼大家知道什麼是光圈、什麼是高感光度,什麼是降噪效果嗎?實際上相機是乙個比較專業的東西

另外,又如何保證相機的質量呢?如何了解購買到的產品是**呢?

最後,有沒有可以砍價的餘地?會不會老闆看大夥是新手,故意抬**呢?

這一切的一切似乎並不好處理,那怎麼辦?

很簡單,找個專業的人幫你挑不就行了!

他會按照你的需求幫你挑選相機的型別與諸多引數,根據性價考慮可接受的**,同時會檢查相應引數與質量,另外還會跟老闆適當的砍一砍**,這一切的一切都不需要你來操心,那麼你只需要做什麼你?很簡單,只要付款就行了!

從上面兩個例子來看,物件導向這種程式設計的思想實際上就是要好好考慮要做的事情,然後找到乙個物件命令其去完成

那麼我們只需要做兩件事:

找到物件

發出命令

那麼現在都是找到現成的物件,就是按照要求找存在的物件去完成,那麼要是不存在這樣的物件怎麼辦呢?

很明顯,就自己寫個「物件」出來

好比一家軟體公司,以前都是做webform開發,但是突然間討論決定,要求向mvc方向發展,但是現在公司裡沒有人會怎麼辦?

第一、招聘人員,讓專人去完成

這就好比根據需要找到相應的物件,直接找現成的物件

第二、挑選公司中優秀的人才出去學習,就是公司委培

這好比找不到合適的物件,就自己寫乙個

那麼我們寫程式使用物件是不需要考慮物件內部的實現,我們只要結果,但是如果由我們自己來寫乙個「物件」,其內部實現仍然需要考慮。而且實現的詳細過程,仍然可以是物件導向的,也可以是面向過程的

對於簡單的類,實現可以歸結到面向過程中來,然後不斷的套用,可以發現物件導向的程式設計思想只是乙個處理問題的方式方法,其基礎最後仍然是面向過程的!

總結一下,物件就是能夠幫你完成一些任務的具體的東西

比如之前說到的「餐館」、「攝影師」、「職工」等

不難發現它們都是具體的個體,實實在在的個體,是乙個可以感覺、使用或接觸的事物

但是餐館有很多,攝影師也不是只有一位,職工那就更不用說了。不難發現以上說的都是乙個群體中的乙個具體的個體

那麼我們程式的組織也是如此,我們可以有乙個群體,叫做「類(class)」,群體是乙個概念,泛指的內容

我們在程式中真正使用的就是該群體中的乙個特有的個體,叫做「物件」,物件表示我們使用的具體事物

比如手機,htc莫扎特也是手機,蘋果iphone4也是手機,而100元的諾基亞也是手機,它們都叫手機,但是都又不同

同樣的,每一台iphone4是不是都一樣呢?或每一台htc莫扎特都一樣呢?

其實每一款機器型號雖然相同,但是一定會有乙個唯一的編號

其實我們說的手機就是泛指,對於手機這個概念,品牌就是具體的,而對於品牌和型號,每乙個實實在在的手機,大家拿在手上、揣在兜裡的手機就是個體。我們就可以將這些泛指看做類,具體的手機看做物件。因為只有具體的手機才能完成打**、或玩遊戲的功能

那麼在程式中就有了「類」這樣的型別,物件作為該類的變數來使用

2、如何使用物件導向

說了這麼多到底怎麼去使用呢?

1、是直接使用.net framework提供的物件

其實之前已經使用的非常多了

對於輸出:

console.writeline();

console.write();

對於輸入

console.readline();

console.readkey()

這些都是console類提供的方法(靜態方法)

再比如產生隨機數的方法,也是使用已經有的類

2、是自定義類,使用自己的物件

之前說過類只是為了實現物件導向的工具,同時類又是一種型別,因此要使用,先要定義類

定義類的語法是(僅考慮類本身):

[訪問修飾符] class 類名

這裡成員是什麼,後面會說到

定義類之後,需要使用,就好像一開始我們吃飯找餐館一樣,先要找到飯店,然後提出要求

在main方法中,首先要建立乙個該型別的物件出來,由於類也是型別,因此滿足定義變數的語法

類名 變數名;

這樣還沒完,這裡只是定義了乙個「餐廳」,好比你知道有乙個餐廳,但是不知道在哪兒一樣

因此需要建立乙個出來,建立的語法使用

new 類名();

這裡建立乙個物件又稱為「類的例項化」,其建立的物件往往又稱為「該類的例項」

不嚴格地說,物件就等同於例項(實際上這裡也有泛指,因此嚴格意義上並不等同)

因此完整的應該寫為:

類名 變數名 = new 類名();

或   類名 變數名;

變數名 = new 類名();

ok這裡就是有關物件導向程式設計思想的乙個簡單描述,具體的類怎麼寫、有什麼用,如何使用例項去完成任務,我們下回分解... ... 

物件導向思想和面向過程思想簡單示例說明

面向過程式 使用資料結構的 便於在不改動既有資料結構的前提下新增新函式。物件導向 便於在不改動既有函式前提下新增新類。過程式 難以新增資料結構,因為必須修改所有函式。物件導向 難以新增新函式,因為必須修改所有類。這兩種定義的本質,他們是截然對立的,這說明了物件與資料結構之間的二分原理。1.面向過程的...

物件導向的思想

物件導向的好處 1.物件導向是一種更符合人們思考習慣的一種思想 2.面向過程的更多體現是執行者 物件導向更多體現的是指揮者 3.有了物件導向這個事情後 複雜問題就簡單化了 大西瓜如何用挖掘機炒菜?幾個事物 2事物 大西瓜 name age 屬性 行為 會開挖掘機 挖掘機 color lunzi 翻炒...

物件導向的思想

1 什麼是物件導向的思想 c語言是面向過程的語言,c 是c語言的拓展,c 是物件導向的語言,而 物件導向是一種思想 即oop思想。如下圖所示,實體 就 是客觀存在並可相互區別的事物 例如人 書本 動物等。人作為實體,具有姓名 性別 年齡等這些屬性以及吃飯 睡覺等行為。類 是對現實生活中一類具有共同特...