23 是時候學點面向對象的東東了

1. 面向對象vs面向過程程序員

 

C#是一種面向對象的編程語言。那麼什麼是面向對象的編程呢?在沒有面向對象的編程語言前,那時候的編程語言叫什麼?編程

面向對象的編程是將對象做爲程序的基本單元,將程序和數據封裝其中,以提升軟件的重用性、靈活性和擴展性,對象裏的程序能夠訪問及常常修改對象相關連的數據。在面向對象程序編程裏,計算機程序會被設計成彼此相關的對象。面向對象程序設計能夠看做一種在程序中包含各類獨立而又互相調用的對象的思想。微信

在面向對象的編程思想出現前,傳統的編程思想和編程語言是面向過程的。面向過程的編程是在面向對象編程出現之前很是流行的編程方法論。(軟件行業的變化很快的,之前很流行的東西,隨着新的東西不停的出來,沒有多久就out了。)它主張將程序看做一系列函數的集合。程序經過調用一系列函數從而完成一個特定的功能。數據和函數是分開。編程語言

「面向過程」的分析就是分析出解決問題所須要的步驟,而後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就能夠了。模塊化

面向對象程序設計中的每個對象都把數據和功能集合成一個總體。都應該可以接受數據、處理數據並將數據傳達給其它對象,所以它們均可以被看做一個小型的「機器」,即對象。函數

「面向對象」的分析是把構成問題事務分解成各個對象,創建對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲還有各個事物之間的互動。學習

 

舉個例子:spa

如何把大象裝進冰箱?
面向過程: 爲了把大象裝進冰箱,須要3個過程。這三個過程能夠對應三個函數。 1) 把冰箱門打開 2) 把大象裝進去 3) 把冰箱門關上 依次完成這些過程,就能把大象裝進冰箱。
 
面向對象: 分析把大象裝進冰箱這個事情,咱們分析出兩個對象,大象和冰箱。 其中冰箱須要作三個動做,也就是三個方法。第二個動做要和大象互動。 1) 冰箱,你給我把門打開。   冰箱.開門()     2) 冰箱,你給我把大象裝進去。 冰箱.裝進(大象) 3) 冰箱,你給我把門關上。冰箱.關門() 依次作這些動做,就能把大象裝進冰箱。

面向過程實際上是最爲實際的一種思考方式,就算是面向對象的方法也是含有面向過程的思想.能夠說面向過程是一種基礎的方法.它考慮的是實際地實現.通常的面向過程是從上往下步步求精.因此面向過程最重要的是模塊化的思想方法.對比面向過程,面向對象的方法主要是把事物給對象化,對象包括屬性與行爲。
 
我試着和你們解釋了一下什麼是面向對象,什麼是面向過程。不知道你有沒有搞清楚。可是我必定要給你一個忠告。
做爲一個程序員, 你選擇面向過程, 就找不到對象。
少年, 你可要想好了再選擇啊 
 

2. 面向對象編程兩個最重要的概念:類和對象。設計

  • 類(Class):定義了一件事物的抽象特色。類的定義包含了數據以及對數據的操做方法。
  • 對象:是類的實例。

舉個例子幫助你們理解類和對象。code

車能夠定義成一個類。它有顏色,品牌,行駛里程等屬性,有啓動發動機,中止發動機等功能。個人車就是車的一個實例,也就是車的一個對象。它的顏色是黑色的,它的品牌是奔馳(我夢想的品牌),它行駛1萬千米,它有啓動發動機,中止發動機等功能。個人車是一個獨一無二的實際存在的。而做爲類的車就是一個類別。咱們能夠說個人車是一個車。能夠用這個類別構建出各類有不一樣屬性的車。

 

在咱們前面的代碼中已經接觸到了C#的類(class)還有類的方法。咱們的代碼主要都放在Program 類的Main方法裏邊。咱們也建立了咱們本身的方法。同時咱們也使用了類Console的writeline等方法。 

在C#中幾乎全部的東西都是和類相關的。咱們編寫的程序是由不一樣的類組成的。在每一個類中能夠有不一樣的屬性和方法。如何去設計類和使用類呢?這就是面向對象編程要幫助咱們解決的事情。 

 

3. 靜態成員和實例成員

 

在類的成員的類型或者返回值類型前面加上關鍵字static,就能將該成員定義爲靜態成員(static member)。其餘沒有用static修飾的成員都是實例成員(instance member)或者稱爲非靜態成員。靜態成員屬於類,被這個類的全部實例所共享;實例成員屬於對象(類的實例),每個對象都有實例成員的不一樣副本。

 

靜態成員具備下列特徵:

 

— 靜態成員必須經過類名使用 . 運算符來引用,而不能用對象來引用。

 

— 一個靜態字段只標識一個存儲位置。不管建立了一個類的多少個實例,它的靜態字段在內存中都只佔同一塊區域。

 

— 靜態函數成員(方法、屬性、事件、運算符或構造函數)不能做用於具體的實例,在這類函數成員中不能直接使用實例成員,必須經過類名來引用。

 

實例成員具備如下特色:

 

— 實例成員必須經過對象名使用 . 運算符來引用,而不能用類名來引用。

 

— 類的實例字段屬於類的實例全部,每建立一個類的實例,都在內存中爲實例字段開闢了一塊區域。類的每一個實例分別包含一組該類的全部實例字段的副本。

 

— 實例函數成員(方法、屬性、索引器、實例構造函數或析構函數)做用於類的給定實例,在它們的代碼體內能夠直接引用類的靜態和實例成員。

 

其實,咱們在前面的幾章中大量使用的Console類的WriteLine等方法都是靜態方法,都是經過類名Console來引用的。

 

 

4. 面向對象編程的三個特性:封裝,繼承與複合,多態

 

三大特性之一 封裝

 

1.什麼是封裝?

      封裝又叫隱藏實現。就是隻公開代碼單元的對外接口,而隱藏其具體實現。

      好比咱們的手機,手機的鍵盤,屏幕,聽筒等,就是其對外接口。咱們只須要知道如何按鍵就可使用手機,而不須要了解手機內部的電路是如何工做的。封裝機制就像手機同樣只將對外接口暴露,而不須要用戶去了解其內部實現。細心觀察,現實中不少東西都具備這樣的特色。

 

2.如何實現封裝?            

在程序設計裏,封裝每每是經過訪問控制實現的。C#中有 Public, Protected, Private 等訪問控制符。經過用Public將信息暴露,Private,Protected將信息隱藏,來實現封裝。

三大特性之二 繼承與組合     

 

1.繼承

       經過繼承子類能夠重用父類的代碼。  

 

2.組合

 組合即將各個部分組合在一塊兒。程序設計中就是用已有類的對象來產生新的類。 

桌子由木板和釘子組合而成,檯燈使用燈座,燈管,電線,接頭等拼起來的。咱們發現本身周圍的不少東西都是由更小的其它東西拼湊構成的,就像積木同樣。相信你小的時候也曾拆開過許多你以爲好奇的東西,去一看究竟。去看看這個新的類(class)究竟是由那些其餘的類構成的。其實在你很小的時候你已經理解了組合。

程序設計中,組合體如今生成的新類裏用到了現有類的實例,具體的代碼例子在這裏也不給出了,相信你一看就能明白。組合使生成新類更加簡便和直觀,實現也很是容易,相比繼承這種經過已有類構造新類的方法,大多數人(包括在現實生活中)更喜歡組合。  

 

三大基石之三 多態


 多態是一個相對難理解的概念。多態和繼承是緊密聯繫在一塊兒的,沒有繼承就談不上多態。

多態就是把不一樣的子類對象都看成父類來看,能夠屏蔽不一樣子類對象之間的差別,寫出通用的代碼,作出通用的編程,以適應需求的不斷變化。
賦值以後,父對象就能夠根據當前賦值給它的子對象的特性以不一樣的方式運做。仍是很抽象啊。舉個例子吧。
 
車是父類。它有一個方法叫啓動。
汽油車是車的一個子類。它也有一個方法叫啓動,實現的功能是啓動汽油車。
電動車也是是車的一個子類。它也有一個方法叫啓動,實現的是啓動電動車。
 
如今有個方法
啓動車(車){ 車.啓動();}

當咱們把汽油車的一個對象做爲參數傳遞給這個方法時,它會自動調用汽油車的啓動方法。一樣當咱們把電動車車的一個對象做爲參數傳遞給這個方法時,它會自動調用電動車的啓動方法。當咱們後來有新建了柴油車,太陽能車的時候,咱們不用修改這個方法。將柴油車,太陽能車類型的對象做爲參數傳遞給這個方法時,它就自動調用它們相應的啓動方法。
           

 

 

 


付費解答C#入門學習過程當中碰到的各類問題。

零基礎學習C#入門,大多數的問題均可以經過自學或藉助互聯網解決。

可是仍是會有一些問題,不是那麼容易解決,成爲了你學習的絆腳石。最後甚至形成你學習的半途而廢。一般學習C#編程入門,你會遇到20到30多個你不能很容易解決的問題。

這個時候,你最須要什麼呢?

對!一個專業的老師給你幫助!

你在學習本課程中,遇到任何問題均可以經過qq或email想本教程做者進行求助。

只需30元你就能夠獲得本教程做者的三次專業解答。因此你只需不到300元就能夠順利的完成C#入門,今後推開軟件行業的大門。

 

付費方式很是簡單:

用微信掃描下面的二維碼。在付款留言中留下你的qq號或email地址就能夠啦。

 

教育不是要便宜,而是要可靠!真正聰明的人,更懂得花錢讓專業的人爲本身服務,提升本身的效率。

 

老師qq:2040227296

老師email:2040227296@qq.com

相關文章
相關標籤/搜索