好程式設計師分享物件導向概念的理解以及ES3和ES6中類的寫法

好程式設計師IT發表於2019-04-01

   好程式設計師 分享物件導向概念的理解以及 ES3 ES6 中類的寫法 本文將從以下四個方面進行講解:

 

  1 、 物件導向的概念

 

  2 、 類和物件的概念

 

  3 ES6 中類的寫法

 

  4 ES3 中“類”的寫法

 

  以下為詳細內容:

 

  1 、 物件導向的概念

 

  物件導向, IT 行業的地球人都知道很重要,很難理解,對於很多做過好幾年開發的人不見得對物件導向完全理解。物件導向程式設計是一種程式設計思想,是基本沿用人類習慣性思維的一種程式設計思想。 ps :我給學生講課時,經常問學生“程式設計為了什麼”,學生說掙錢,為了更好的生活,我讓學生提高一下高度,最後就提升到了“為人民 ( ) 服務”了 ( 哈哈 ) ,此話不假。因為,程式設計就是要做資訊化的事情,而資訊化就是資訊化整個社會,即把人類社會的各行各業都進行資訊化,也就是為人類服務了。那麼,既然要為人類服務,解決人類社會的問題,那麼,是不是該用人類的思維才對呀。

 

  我來分享一下我對物件導向的理解。

 

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

 

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

 

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

 

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

 

  首先,我們需要考慮的是,創辦學校需要哪些角色,如:校長,市場人員,諮詢人員,講師,班主任,就業老師,財務,行政等等。校長的要求:需要具備什麼,能幹什麼 ; 市場人員的要求:有什麼,能幹什麼 ; 講師的要求:有什麼,能幹什麼 ; 等等,這些都是對公司角色的描述,在物件導向程式設計思想中,就是類,而“有什麼”就是類的屬性 ( 變數 ) ,“能幹什麼”就是類的方法 ( 函式 )

 

  其次,我們會想到,工作該如何開展,即工作流程。如:讓市場人員先做宣傳,學生如果想進一步瞭解,就需要諮詢師進行諮詢,諮詢完成後,學生覺得學習 JS 確實不錯,就會報名進班,財務處收學費,班主任建立學生的學籍,進行班級日常管理 , 講師開始授課,解答學生的問題,學習完成後,就業老師把學生推薦給企業,這裡也能體現團隊配合,如:學生諮詢過程中,問到了比較深的技術問題,諮詢師解答不了,就需要找講師配合等等。在物件導向程式設計思想中這就是大的業務邏輯,即程式邏輯。

 

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

 

  在物件導向程式設計思想出來之前,我們更多用的是程式導向的程式設計思想。

 

  程式導向的程式設計思想和麵向物件的程式設計思想有何區別。程式導向首先著重考慮的是程式邏輯,其次考慮的是資料。而物件導向首先著重考慮的是資料 ( 類和物件 ) ,其次考慮的是邏輯 ( 即業務邏輯 )

 

  單幹與團隊協作:程式導向程式的執行過程,更像是單幹 ; 物件導向程式的執行過程,更像是現實生活中的團隊協作。所以,我們在描述程式導向程式的邏輯時,沒有主語 ( 語文的解釋 ) ,如:先幹啥,再幹啥,然後幹啥,最後幹啥。而描述物件導向的邏輯時,有主語,如:誰先幹啥,誰再幹啥,然後誰幹啥,最後誰幹啥。

 

  物件導向思想的核心就是一切皆物件,完成任何功能,面對的最小單位都是物件,而不是基本資料型別 ( 如:數字,布林等等 )

 

  2 、 類和物件

 

  類和物件:在物件導向程式語言中,經常會聽到類和物件。類就是分類,就是型別,就是資料型別 ; 物件就是類的舉例,類的例項,就是變數或者常量。如:數字是資料型別,而 250 就是數字型別的一個例子 ; 人是資料型別 ( ) ,唐僧就是人的一個例子 ( 物件 )

 

  物件就是複雜的資料,如:人沒法用數字,布林等基本型別描述,人是一個複雜的事物,由很多資料構成。一個人有身份證號碼,姓名,性別,年齡,把這一切組合 ( 封裝 ) 起來才是個人,人由若干個基本型別的資料組成。但這遠遠還不夠,因為死人也具備這些屬性 ( 開個玩笑,為藝術獻身一下 ) ,人能吃飯,能工作,此時,這個人才活靈活現了,所以,物件裡面包括資料和函式 ; 資料又叫屬性,成員變數,函式又叫方法。在物件導向的世界裡,習慣上會叫屬性和方法,簡單理解:物件 = 變數 + 函式。

 

  綜上所述,物件導向是一種程式設計思想,而物件是複雜的資料型別,所以,物件導向就是,面對的都是複雜的資料型別,而不是單一的整型,布林等基本型別,物件是由若干個基本型別的資料構成,甚至物件裡還有子物件,當然還有方法。

 

  注:以上所述的類和物件是 ES6 中的名詞

 

  3 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 的程式碼格式越來越接近傳統物件導向程式語言的寫法。

 

  4 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 寫法更加方便閱讀。

 

  注:此篇文章的重點是理解物件導向程式設計思想。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2639981/,如需轉載,請註明出處,否則將追究法律責任。

相關文章