面向對象編程概念簡述

1、 編程範式編程

在咱們編程語言裏面,大體能夠分爲兩個大類:命令式編程 和  聲明式編程數組

1. 命令式編程編程語言

所謂命令式編程,就是以命令爲主,給計算機一條一條命令,計算機來按照咱們給的命令原封不動的執行。函數式編程

命令機器如何去作事情(how)函數

常見的命令式編程語言有:C語言,C++,C#,Java,PHP,Rubyprototype

從命令式編程語言又能夠分爲兩大類:面向過程 和 面向對象翻譯

(1) 面向過程對象

就是分析解決問題所須要的步驟,而後把這些步驟一步一步實現繼承

(2) 面向對象遊戲

所謂面向對象,就是將程序裏面的模型看作一個一個的對象。對象和對象之間會產生彼此的聯繫。使用對象來解決問題

須要注意:就算是面向對象編程,裏面也會有面向過程的步驟。

2. 聲明式編程

所謂聲明式編程,就是指告訴計算機你想要什麼(what),讓機器去解決如何實現。

聲明式編程裏面也能夠分爲兩大類:DSL 和 函數式編程

(1) DSL

DSL翻譯成中文爲領域專用語言(Domain Specific Language)。顧名思義,就是指某一個領域專用的語言。

常見的DSL語言有HTML,CSS,SQL

(2) 函數式編程

將程序裏面的一些模型看作是數學裏面的函數來進行計算。

 

1、 面向對象

 

1. 什麼是面向對象

 

首先須要搞清楚什麼是對象(Object)。通俗來說,就是東西。咱們這個世界就是由各類各類的東西組成的。東西與東西之間有彼此的聯繫。

 

現實生活中咱們描述一個東西,或者一個物品的時候,經常會從2個方面來進行描述

 

例如我要描述一個手機

 

首先第一個就是外觀(屬性):白色  5.5寸  矩形   

 

接下來就是從功能來進行描述:看電影 打電話  玩遊戲

 

2. 面向對象和麪向過程的區別

 

面向過程的特色:由頂自下,依次執行,咱們須要去考慮每個步驟。

 

面向對象的特色:面向對象更加符合咱們人類的思想。咱們只須要找到咱們須要的對象便可。

 

ATM機取錢

 

面向過程:咱們須要考慮每個步驟,例如取錢的時候金額是多少,餘額是多少,用戶的輸入是否合法

 

面向對象:只須要考慮這個ATM這個對象便可

 

3. 面向對象的特色

 

通常來說,面向對象的特色有3個:封裝,繼承和多態

 

有些老的教材,會告訴你面向對象的特色有4個:除了上面3個之外,還多加了一個抽象

 

封裝:就是將細節隱藏起來,不向外部暴露。例如現實生活中電視機就是一個典型的封裝,沒法看到內部電子元件這些細節

 

繼承:和現實生活中同樣,兒子能夠繼承父親的一些東西。在程序裏面子類能夠繼承父類。

 

多態:若是從語言的角度來看,就是不一樣對象同一方法的做用不同。例如現實生活中,一個action這個單詞對於不一樣的職業的人來說,意義是不同的。

 

4. 類

 

和現實生活中同樣,東西一多,按照人的思惟天然就會想到分類。好比給你1萬本書。咱們首先會想到分類,例如分爲小說類,科技類,漫畫類,政治類,經濟類...每個類別下面的書都是有共同的特色的。

 

類和對象的關係:類是對象的一種歸納,是一個抽象的東西,對象是類的一種具體實現,是一個具體的東西。

 

5. 建立對象

 

(1) 通用編程語言產生對象的方式

 

對象是從類產生的。因此若是咱們要獲取對象,首先須要建立類

 

(2) JS中建立對象的方式

 

在ES6以前,JS裏面沒有類的概念。因此在ES6以前都是經過函數來模擬類

 

模擬類的函數一般被稱之爲構造函數。爲了區分構造函數和普通函數,有一個不成文的規定,構造函數的函數名首字母大寫

 

對象和構造函數,以及原型對象之間的關係圖(重要)

 

前面咱們所講述的數組,函數,數字,字符串等都有對應的構造函數。若是是經過構造函數實例化的,那麼就是一個對象

 

對象裏面有一個叫作constructor的屬性,能夠查看到這個對象的構造函數

 

在每個構造函數裏面,都有一個隱藏屬性,叫作prototype,這個屬性指向一個對象,這個對象就是經過構造函數實例化出來的對象的原型對象

相關文章
相關標籤/搜索