當前位置:
首頁 > 知識 > 七夕將至,你的「對象」還好嗎?

七夕將至,你的「對象」還好嗎?

馬上就要到七夕了,離年底老媽老爸三姑六姨七大爺「找到對象了嗎?」的靈魂拷問又近了一點。今天我們就來說說讓廣大程序猿日思夜想抓耳撓腮的「對象」吧~

不過,此「對象」非彼「對象」。這個「對象」就是那個你 new 一下就有了的對象,不僅天天看到,還經常需要「用到」。

然而說到對象,又不得不從面向對象編程說起了。

面向對象編程——Object Oriented Programming,是用抽象方式創建基於現實世界模型的一種編程模式。 它使用先前建立的範例,包括模塊化,多態和封裝幾種技術。 今天,許多流行的編程語言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby和Objective-C)都支持面向對象編程(OOP)。

面向對象編程

《計算機科學導論》讀書筆記(一):淺析面向過程與面向對象編程

面向對象模式與面向過程模式區別在於:面向對象模式處理活動對象,而非被動對象。如日常生活中的洗衣機,汽車等。 在這些對象上執行的動作都包含在這些對象中,對象只需要接收合適的外部刺激即可。

還是拿列印文件做例子,在面向對象模式中的文件能把所有被文件執行的過程(面向對象中成為方法)(列印,複製粘貼等)打包在一起。在這種模式下,程序只需要向文件發出列印或者複製的請求,文件就會被列印或複製。而這些方法,也被從這些對象繼承的其它對象共享。

初探面向對象編程之oop與設計模式

我們在使用面向對象編程時一定要記住以下幾個基本原則(也就是設計面向對象程序的基本原則),這樣才能夠更好的理解面向對象的深意。

單一職責原則

開放封閉原則

里氏替換原則(LSP)

依賴倒置原則

ISP 介面隔離原則

談談我對面向對象以及類與對象的理解

隨著計算機技術的不斷提高,現在計算機不單單是用來解決運算問題,而是被用於解決越來越貼近現實生活的複雜問題。面向對象就是這一發展進程的產物,它使得編程工作更貼近人的思維方式,從而大大提升編程效率。我們必須明白的是面向對象並不是一種編程方式,而是一種編程思維方式,這種思維方式涵蓋了分析,設計,編碼等。在面向對象編程中,程序的基本單元是對象,數據封裝在對象中。類是對象模板,是預定義好的結構,所謂的實例化一個類,所指的就是將數據填入模板。

從俄羅斯方塊來聊一聊面向對象

在許多後端語言中,在基礎部分,經常說面向對象很重要,比如在java中有類的概念,封裝、繼承、多態往往被稱為面向對象的三個核心。簡單來說,封裝就是為了更好的復用與繼承。在JavaScript中,在ES6之前雖然沒有類的概念,但往往封裝一些工具類,增強其復用性與便利性是一個不錯的選擇。

曾有句經典的話:萬事萬物皆對象。在許多面向對象的講授中,可能很多的都拿人做例子,一個人是一個對象,對象有一些屬性(姓名、年齡、性別等等),對象有一些方法(吃飯、行走、說話),整個人類即一個類。很多情況下,通常new一個人類,即創建了一個具體的對象。那拿到面向對象編程來說的話,這個對象可以是更為抽象的概念。

用面向對象的思維方式來設計資料庫

場景

我們有多種類型訂單:實物訂單、特享商戶訂單、核銷訂單、生活繳費訂單、電影票訂單、機票訂單、以及以後會持續新增的未知類型訂單,它們都存放在不同的訂單類型表中

第三種方式使用面向對象的方式來實現:

先把所有訂單的公有的屬性抽象集合起來(如:訂單編號、下單時間、訂單狀態、訂單類型等)創建一張父訂單表

創建各種訂單專有屬性表(各類訂單特有屬性)

關係:父類訂單表 與 訂單表 一對一的關係(每張訂單表裡面都能在父訂單表裡面有1條與之對應)

以上方式將能滿足絕大多數業務情況

PHP 中的面向對象

基礎

面向對象

對象和類的概念及兩者的關係:

類是定義一系列屬性和操作的模版,而對象則是把屬性進行具體化,然後交給類處理。

對象就是數據,對象本身不包含方法。但是對象有一個「指針」指向一個類而這個類里可以有方法。

方法描述不同屬性會導致不同的表現。

類和對象是不可分割的,有對象就必定有一個類與其對應,否則這個對象也就沒有意義了。(但是有一種特殊情況:由標量進行強制類型轉換的object,沒有一個類與他相對應,此時PHP中一個稱為「孤兒」sidClass類就會收留這個對象)。

php學習筆記(二)面向對象編程

類的定義:物以類聚,把具有相似特性的對象歸到一個類中,類定義了這些相似對象擁有的相同屬性和方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。

成員方法:類中的函數被稱為成員方法。函數和成員方法唯一的區別就是,函數實現的是某個獨立的功能,而成員方法是實現類中的一個行為,是類的一部分。

構造函數:PHP 5 允行開發者在一個類中定義一個方法作為構造函數。具有構造函數的類會在每次創建新對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。

析構函數:析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。。

靜態類成員:有時候,可能需要創建供所有類實例共享的欄位和方法,這些欄位和方法與所有的類實例有關,但不能由任何特定對象調用。

PHP_OOP

在php中,對象通過對類的實體化形成的對象。

類(class):對象的模子。 一類的對象抽取出來。一個將對象的行為和屬性的一個抽象。就是一個定義。規定了對象應該有哪些屬性,應該有哪些操作(方法)。

實例化:一個動作,根據類中所定義的對象的特徵,形成一個對象的過程。

注意: php 中,對象一定是通過類的實例化來的。類的地位,只是得到對象的方法。

PHP面向對象三大特性:封裝、繼承、多態

演算法提高程序運行的速度,而設計模式提高編程的速度。

php是面向對象的腳本語言,而我們都知道,面向對象的語言具有三大特性:封裝,繼承,多態。

進階

PHP經驗總結 - 聊聊面向對象

「現在大夥都在講面向對象編程,但是我們也得先找著一個對象是不?不然怎麼面向對象?怎麼編程?」 --- 笑話一則,但是理不虧,要搞P面向對象編程,我們起碼要先搞懂對象(還有類)是什麼?只有了解它,理解它,你才能駕馭它。做編程的不能瞎搞,邏輯嚴謹清晰最重要,要明白我們在做什麼?我需要做什麼?我該怎麼做?接下來,我來談談PHP類和對象的認知,然後說一下我們應該怎麼用它們。

php面向對象中self和static的區別

可以看到,在調用 static ,子類哪怕調用的是父類的方法,但是父類方法中調用的方法還會是子類的方法(好繞嘴。。)

在PHP5.3版本以前, static 和 self 還是有一點區別,具體是什麼,畢竟都是7版本的天下了。就不去了解了。

總結呢就是: self 只能引用當前類中的方法,而 static 關鍵字允許函數能夠在運行時動態綁定類中的方法。

PHP|關於對象複製的一些事

當我們需要一個對象的副本時,可以通過 clone 關鍵字,使用值複製方式新生成一個對象。

但是這有一個問題,對象中的某些數據,比如 id ,我不想是一樣的。但是 clone 是做不到的。

這時我們可以通過實現一個特殊的方法 __clone() 來達到這個目的。當一個對象調用clone關鍵字時,其 __clone() 方法就會被自動調用。

面向對象,關鍵字, 重點 必看

$this只能在成員方法中。$this主要用來調用成員屬性和成員方法;只能調用對象的東西。

self可以在所有方法中使用。self主要用來調用類的常量、靜態屬性、靜態方法,只能調用類的東西。

parent可以調用父類的內容:成員方法、靜態屬性、靜態方法、常量

static關鍵字修飾的屬性和方法,就是靜態屬性和靜態方法; 靜態屬性和靜態方法,是與某個類相關的,與對象無關。 靜態屬性和靜態方法,不創建對象也能調用。

面向對象的實例應用:圖形計算器

使用動態頁面實現圖形計算器,可以計算給定圖形的周長和面積

可以使用介面或抽象類作為規範,再寫各子類的多態

Java 中的面向對象

簡談我所理解的面向對象

眾多面向對象的編程思想雖不盡一致,但是無論哪種面向對象編程語言都具有以下的共通功能。

不需要知道內部的詳細處理就可以進行操作(封裝、數據抽象)。

根據不同的數據類型自動選擇適當的方法(多態性)。

Java 面向對象編程的三大特性(封裝、繼承、多態)以及重寫和重載

Java 面向對象編程有三大特性:封裝、繼承、多態。

封裝:隱藏對象的屬性和實現細節,僅對外公開訪問方法,控制在程序中屬性的讀和寫的訪問級別。

繼承:可以理解為,在一個現有類的基礎之上,增加新的方法或重寫已有方法,從而產生一個新類。

多態:相同的事物,調用其相同的方法,參數也相同時,但表現的行為卻不同。

Java 面向對象1 類 對象 方法 變數 封裝

Java 面向對象2 構造器 繼承 多態性 初始化塊

Javascript 中的面向對象

基礎

溫故知新之javascript面向對象

類和實例是大多數面向對象編程語言的基本概念

類:類是對象的類型模板

實例:實例是根據類創建的對象

但是,JavaScript語言的對象體系,不是基於「類」的,而是基於構造函數(constructor)和原型鏈(prototype)。了與普通函數區別,構造函數名字的第一個字母通常大寫。

JavaScript_面向對象程序設計

Object每個實例都會具有的屬性和方法:

Constructor:保存著用於創建當前對象的函數。(構造函數)

hasOwnProperty(propertyName):用於檢測給定的屬性在當前對象實例中(而不是原型中)是否存在。

isPrototypeOf(Object):用於檢查傳入的對象是否是另外一個對象的原型。

propertyIsEnumerable(propertyName):用於檢查給定的屬性是否能夠使用for-in語句來枚舉。

toLocaleString():返回對象的字元串表示。該字元串與執行環境的地區對應.

toString():返回對象的字元串表示。

valueOf():返回對象的字元串、數值或布爾表示。

判斷一個對象是不是另一個對象的實例,通常使用的是 instanceof,比較少使用constructor。

JavaScript設計模式與開發實踐 | 01 - 面向對象的JavaScript

JavaScript在設計的時候,模仿Java引入了兩套類型機制:基本類型和對象類型。

按照JavaScript設計者的本意,除了undefined之外,一切都應是對象。為了實現這一目標,number、boolean等幾種基本類型數據可以通過「包裝類」的方式變成對象類型數據。

JavaScript絕大部分數據都是對象。事實上,JavaScript中的根對象是Object.prototype對象。Object.prototype對象是一個空對象。JavaScript的每個對象,都是從Object.prototype對象克隆而來。

CoffeeScript—面向對象

自從面向對象的編程思想出現以來,這個概念已經被炒爛了,只要編程開發大家都會拿面向對象來說事,好像只要跟面向對象沾邊就會顯得逼格很高一樣,不過確實逼格提高了。要知道,面向對象只是一種手段,最終目的是為了提高我們項目的重用性、靈活性和擴展性。

為了迎合面向對象的程序設計思想,JavaScript也通過自己的語法實現了自己的一套面向對象機制。不過我想問下,前端開發當中有多少人使用過面向對象當中的繼承?

JavaScript面向對象的實現確實有點不倫不類的感覺。下面先簡單說明下JavaScript當中面向對象的實現,涉及的東西比較深,要對constructor、prototype有一定的理解,不然看起來會很吃力,或者你也可以跳開這部分內容,直接看CoffeeScript面向對象的實現。

細說 Javascript 對象

細說 Javascript 對象篇(一) : 對象的使用和屬性

一個經常容易被誤解的就是數字常量不能視為對象,實際上數字常量仍然可以視為對象。這是因為 Javascript 解析器在解析點操作符時而將其視為浮點數特徵而犯下的錯誤。

細說 Javascript 對象篇(二) : 原型對象

Javascript 並沒有類繼承模型,而是使用原型對象 prototype 進行原型式繼承。

儘管人們經常將此看做是 Javascript 的一個缺點,然而事實上,原型式繼承比傳統的類繼承模型要更加強大。舉個例子,在原型式繼承頂端構建一個類模型很簡單,然而反過來則是個困難得多的任務。

Javascript 是唯一一個被廣泛運用的原型式繼承的語言,所以理解兩種繼承方式的差異是需要時間的。

細說 Javascript 對象篇(三) : hasOwnProperty

判斷一個屬性是定義在對象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來的 hasOwnProperty 方法。

hasOwnProperty 方法是 Javascript 中唯一一個處理對象屬性而不會往上遍歷原型鏈的。

細說 Javascript 對象篇(四) : for in 循環

如同 in 運算符一樣,使用 for in 循環遍歷對象屬性時,也將往上遍歷整個原型鏈。

這裡我們要注意兩點,一是 for in 循環會忽略 enumerable 設置為 false 的屬性。例如一個數組的 length 屬性。第二是,由於 for in 會遍歷整個原型鏈,所以當原型鏈過長時,會對性能造成影響。

進階

JavaScript學習總結(五)原型和原型鏈詳解

原型鏈:當從一個對象那裡調取屬性或方法時,如果該對象自身不存在這樣的屬性或方法,就會去自己關聯的prototype對象那裡尋找,如果prototype沒有,就會去prototype關聯的前輩prototype那裡尋找,如果再沒有則繼續查找Prototype.Prototype引用的對象,依次類推,直到Prototype.….Prototype為undefined(Object的Prototype就是undefined)從而形成了所謂的「原型鏈」。

Javascript面向對象編程(二):構造函數的繼承

上面是採用prototype對象,實現繼承。我們也可以換一種思路,純粹採用"拷貝"方法實現繼承。簡單說,如果把父對象的所有屬性和方法,拷貝進子對象,不也能夠實現繼承嗎?這樣我們就有了第五種方法。

面向對象-非構造函數的繼承

除了使用「prototype」鏈以外,還有另一種思路:就是把父對象的屬性,全部拷貝給子對象,也能實現繼承。

理清javascript中的面向對象(一)——原型繼承

與其它編程語言不一樣的是,javascript的面向對象並非依賴於抽象的類,而是通過原型鏈,將一個個具體的對象實例進行連接,位於原型鏈下游的對象實例可以讀取/使用位於上游的對象實例的屬性/方法。

下文由簡及深,試圖一步步理清javascript面向對象的本質。

javascript對象詳解:__proto__ 和 prototype 的區別和聯繫

函數是js中的一等公民,js在創建對象的時候,都有一個叫做__proto__的內置屬性,用於指向創建它的函數對象的原型對象prototype。只有函數有prototype, 當你創建一個函數時,js會自動為這個函數加上prototype屬性,值是一個空對象。

JavaScript深入之創建對象的多種方式以及優缺點

優點:該共享的共享,該私有的私有,使用最廣泛的方式

缺點:有的人就是希望全部都寫在一起,即更好的封裝性

js面向對象練習-拖拽效果

普通方法變形

盡量不要出現函數嵌套函數

可以有全局變數

把onload函數中不是賦值的語句放到單獨函數中

改成面向對象

全局變數就是屬性

函數就是方法

onload中創建對象

改this指針問題

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 優才學院 的精彩文章:

面試官問:PC端與移動端在UI設計方面什麼區別
vue快速入門的三個小實例
30分鐘使用Node實現一個命令行程序
寫代碼怎能不會這些Linux命令?
谷歌是如何構建Web框架的

TAG:優才學院 |

您可能感興趣

春節將至,你的相親對象準備好了嗎?
老之將至,你準備好了嗎?
七夕節將至,你將如何寫情書?
冬節將至,你的肩周炎還好嗎?
七夕將至,你的那杯茶找到了嗎?
情人節將至,你找到那個讓你說出「春風十里,不如你」的人了嗎?
元宵將至,你準備好艷遇了嗎?
七夕將至,如何讓消費者愛上你的品牌?
七夕將至,脫單在即!八月財情兩好的生肖,再不擔心找不到對象
鬼節將至!這一天你還敢隨便亂走么?
七夕將至,該如何讓她歡喜,又可以加深感情的禮物?
將至,也該給你的珠寶打打假了!不看後悔!
七夕將至,想好送什麼花了嗎?代表愛情的花不光只有紅玫瑰!
新年將至,你真的穿對紅色了嗎?
元宵將至,這些冷門知識麻涌的你都了解嗎?
豬年將至,你的好運在哪裡?
元宵將至,這些奇葩湯圓你見過嗎?
5G將至,想當新時代的弄潮兒?還是別太著急了……
元宵將至,你吃湯圓了嗎?
五一將至,這四雙出遊鞋你準備好了嗎?好看時髦,舒適不累腳!