好程序員分享面向對象概念的理解以及ES3和ES6中類的寫法

好程序員分享面向對象概念的理解以及ES3和ES6中類的寫法,本文將從如下四個方面進行講解:java

 

一、 面向對象的概念程序員

 

二、 類和對象的概念編程

 

三、 ES6中類的寫法編程語言

 

四、 ES3中「類」的寫法函數

 

  如下爲詳細內容:學習

 

一、 面向對象的概念this

 

  面向對象,IT行業的地球人都知道很重要,很難理解,對於不少作過好幾年開發的人不見得對面向對象徹底理解。面向對象編程是一種編程思想,是基本沿用人類習慣性思惟的一種編程思想。ps:我給學生講課時,常常問學生「編程爲了什麼」,學生說掙錢,爲了更好的生活,我讓學生提升一下高度,最後就提高到了「爲人民(類)服務」了(哈哈),此話不假。由於,編程就是要作信息化的事情,而信息化就是信息化整個社會,即把人類社會的各行各業都進行信息化,也就是爲人類服務了。那麼,既然要爲人類服務,解決人類社會的問題,那麼,是否是該用人類的思惟纔對呀。prototype

 

  我來分享一下我對面向對象的理解。插件

 

  好比,咱們要創辦一個公司(資金已經到位)。會按照如下步驟:對象

 

  首先,咱們須要考慮的是,創辦公司須要哪些角色,如:總經理,市場人員,技術,售後,財務,行政,進一步細化,總經理的要求有:性別,年齡,經驗,總經理要負責公司的正常經營和利潤的保證等等。市場人員的要求:性別,年齡,經驗,市場人員要負責公司市場的拓展和業務的保證等等。技術人員的要求:性別,年齡,經驗,可以勝任技術方面的相關工做,如:要會用原生的JS寫插件,技術人員負責完成客戶的需求等等,這些都是對公司角色的描述,在面向對象編程思想中,就是類,固然Javascript是從ES6開始才提出了類的概念,之前的版本沒有類的概念,只有對象之說。

 

  其次,咱們會想到,工做該如何開展。如:先得有總經理,而後讓總經理招聘市場人員瞭解市場,開拓市場,再招聘技術人員開發產品,產品快要成型時,招聘售後人員瞭解產品,準備售後的服務工做,財務人員也得跟上,這裏面,也有團隊配合的體現,好比,市場人員無法給客戶講清楚具體的實現時,就須要技術人員配合市場人員給客戶講解等等。固然,每一個公司的具體流程不太同樣,可是,都是一樣的道理。這些就是程序中的業務邏輯部分。

 

  好比,咱們要創辦一個培訓學校,會按照如下步驟:

 

  首先,咱們須要考慮的是,創辦學校須要哪些角色,如:校長,市場人員,諮詢人員,講師,班主任,就業老師,財務,行政等等。校長的要求:須要具有什麼,能幹什麼;市場人員的要求:有什麼,能幹什麼;講師的要求:有什麼,能幹什麼;等等,這些都是對公司角色的描述,在面向對象編程思想中,就是類,而「有什麼」就是類的屬性(變量),「能幹什麼」就是類的方法(函數)。

 

  其次,咱們會想到,工做該如何開展,即工做流程。如:讓市場人員先作宣傳,學生若是想進一步瞭解,就須要諮詢師進行諮詢,諮詢完成後,學生以爲學習JS確實不錯,就會報名進班,財務處收學費,班主任創建學生的學籍,進行班級平常管理,講師開始授課,解答學生的問題,學習完成後,就業老師把學生推薦給企業,這裏也能體現團隊配合,如:學生諮詢過程當中,問到了比較深的技術問題,諮詢師解答不了,就須要找講師配合等等。在面向對象編程思想中這就是大的業務邏輯,即程序邏輯。

 

  再好比,咱們要完成講課這件事情,首先須要考慮,必須有桌椅板凳,電腦,投影儀,講師,學生等等,其次考慮,先買桌椅板凳,電腦,投影儀,學生進教室,講師進教室開始講課。

 

  在面向對象編程思想出來以前,咱們更多用的是面向過程的編程思想。

 

  面向過程的編程思想和麪向對象的編程思想有何區別。面向過程首先着重考慮的是程序邏輯,其次考慮的是數據。而面向對象首先着重考慮的是數據(類和對象),其次考慮的是邏輯(即業務邏輯)。

 

  單幹與團隊協做:面向過程程序的執行過程,更像是單幹;面向對象程序的執行過程,更像是現實生活中的團隊協做。因此,咱們在描述面向過程程序的邏輯時,沒有主語(語文的解釋),如:先幹啥,再幹啥,而後幹啥,最後幹啥。而描述面向對象的邏輯時,有主語,如:誰先幹啥,誰再幹啥,而後誰幹啥,最後誰幹啥。

 

  面向對象思想的核心就是一切皆對象,完成任何功能,面對的最小單位都是對象,而不是基本數據類型(如:數字,布爾等等)。

 

二、 類和對象

 

  類和對象:在面向對象編程語言中,常常會聽到類和對象。類就是分類,就是類型,就是數據類型;對象就是類的舉例,類的實例,就是變量或者常量。如:數字是數據類型,而250就是數字類型的一個例子;人是數據類型(類),唐僧就是人的一個例子(對象)。

 

  對象就是複雜的數據,如:人無法用數字,布爾等基本類型描述,人是一個複雜的事物,由不少數據構成。一我的有身份證號碼,姓名,性別,年齡,把這一切組合(封裝)起來纔是我的,人由若干個基本類型的數據組成。但這遠遠還不夠,由於死人也具有這些屬性(開個玩笑,爲藝術獻身一下),人能吃飯,能工做,此時,這我的才活靈活現了,因此,對象裏面包括數據和函數;數據又叫屬性,成員變量,函數又叫方法。在面向對象的世界裏,習慣上會叫屬性和方法,簡單理解:對象=變量+函數。

 

  綜上所述,面向對象是一種編程思想,而對象是複雜的數據類型,因此,面向對象就是,面對的都是複雜的數據類型,而不是單一的整型,布爾等基本類型,對象是由若干個基本類型的數據構成,甚至對象裏還有子對象,固然還有方法。

 

  注:以上所述的類和對象是ES6中的名詞

 

三、 ES6中類和對象的代碼

 

1)、定義一個程序員類:

 

class Programmer{

 

//構造函數

 

constructor(name,sex,age){

 

//屬性

 

this.name = name;

 

this.sex = sex;

 

this.age = age;

 

}

 

//方法

 

writeCode(str){

 

alert(this.name+」在認真地寫着」+str);

 

}

 

}

 

2)、實例化一個程序員對象:

 

Let p1 = new Programmer(「寶寶」, 「男」,25);//這句話會調用constructor ()函數

 

p1.writeCode(「貪吃蛇」);

 

  以上代碼,和傳統面向對象編程語言的寫法比較接近。對程序員來講,是福音。Javascript的代碼格式愈來愈接近傳統面向對象編程語言的寫法。

 

四、 ES3中「類」的寫法

 

1)、區分一個ES3和ES6的名詞:

 

ES3中沒有類的叫法。

 

ES3中的對象就是ES6中的類。

 

ES3中的實例就是ES6中的對象。

 

2)、ES3中的的代碼

 

  用構造函數的方式定義一個程序員對象(ES6中叫類):

 

function Programmer (name,sex,age){

 

//屬性

 

this.name = name;

 

this.sex = sex;

 

this.age = age;

 

}

 

//方法

 

Programmer .prototype.writeCode(str){

 

alert(this.name+」在認真地寫着」+str);

 

}

 

l 實例化一個程序員實例(ES6中叫對象):

 

Let p1 = new Programmer(「寶寶」, 「男」,25);//這句話會調用constructor ()函數

 

p1.writeCode(「貪吃蛇」);

 

  對比ES6和ES3的寫法,你會發現,實例化對象的代碼如出一轍,僅僅只是定義類的寫法不一樣。其實,ES6中class的寫法只是個語法糖,至關於給ES3的寫法上增長了給一個外包裝。ES6中class寫法的背後仍是ES3的寫法。只是程序員寫ES6的代碼時,更加接近傳統面向對象編程語言(如:java,C++等)。這樣對於程序員來講,再去學習新的語言要容易得多;另外,ES6的class寫法更加方便閱讀。

 

  注:此篇文章的重點是理解面向對象編程思想。

相關文章
相關標籤/搜索