最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

面向對象這么久了,還沒找到對象?

2023-08-23 09:12 作者:千鋒前端  | 我要投稿

寫代碼的小伙伴們真幸福啊,
想要對象了?沒問題,new一個就好了。
但是,new太多對象,對象也會生氣的哦。
你瞧,她來了

從兩段代碼發(fā)現(xiàn)端倪

我們來計算一個矩形的面積,看看這兩段代碼有什么區(qū)別呢?

第一段:

第二段:

有什么區(qū)別呢?區(qū)別呢?

第一段代碼是面向過程的寫法,第二段是面向對象的寫法。其中很多相同的點,變量、函數(shù)、函數(shù)調用,無論是面向過程還是面向對象,這些基本的調用邏輯還是要有的。面向對象與面向過程的區(qū)別又在哪呢?

1. ?第一個區(qū)別,是否是一個整體。第一段代碼中變量是散亂的,只有調calculateRectangleArea函數(shù)的時候,才把、寬、高、面積建立了聯(lián)系。而第二段代碼則一開始就用矩形把寬和高綁定到一起,通過初始賦值(構造函數(shù)參數(shù))將這個矩形定型為高為3寬為5的的矩形,這樣長、寬就在一個整體中了。

2. ?第二個區(qū)別,是編程思路的區(qū)別。在第一個區(qū)別的基礎上,第一段代碼需要按照書寫順序來理解代碼。從編程人的視角來看,我們面向的就是從上到下運行的這樣一個過程,簡稱面向過程。而第二段代碼,我們先創(chuàng)造了一個整體,一個矩形的整體,再操作這個整體。這個"整體"在英文中叫做Object,中文翻譯就有"對象"。當我們面向某一個整體編程的時候,我們就把這種編程思路叫做面向對象。也可以理解為面向(具象、萬物、任何),因為對象可以代表任何具體的事物。

怎樣算作對象?

非書面說法,設定屬性后的那個實際的整體,被稱作為對象。來看代碼

Rectangle這個是對象嗎?height是嗎?width呢?

都不是,這只是說一個矩形應該要有寬和高,只是設想、概念亦或者是模板。僅憑這些屬性,無法描述某一個真實的、具體的矩形。如何創(chuàng)建一個具象的?給他具體的值,再使用new創(chuàng)造一下(創(chuàng)建啥不都得來個動作么,比如捏個泥人的是不是得捏),來看代碼

通過new這個關鍵字結合具體的屬性值,我們得到了兩個具象的實際的整體(實體)。這兩個實體雖然都是矩形類型的,但很容易分辨,一個是100*200的矩形r1,另一個是6*6正方形的特殊矩形r2,對象就這樣產(chǎn)生了,這兩個實體就是對象,創(chuàng)建的過程叫做實例化

那么,還要問個問題,是不是說r1,r2 這兩個變量就是對象?

答案是否定的,這兩個變量不是對象(至少此時此刻不能這樣叫),真正的對象我們看不見、摸不著、操作不了的,創(chuàng)建的時候他在內存中,沒有名字。來看代碼

這條語句執(zhí)行之后,必然也會創(chuàng)建出來一個對象,只不過沒有給他指定任何名字,也就無法使用。類比剛降生的可愛的小寶寶,如果不給他起名字他就不存在了嗎,他是實實在在存在的。想要跟他互動,引起ta的注意就要給他起個名字,避免和旁邊其他的人混淆。r1、r2也是如此,用 r1、r2來表示創(chuàng)建出來的對象,方便使用,當然如果你了解這個過程了,我們以后也可以稱作r1、r2為對象,了解了內在邏輯,怎么叫就都可以了

什么是面向對象

面向對象(Object-Oriented,簡稱OOP)是一種編程范式或方法論,用于組織、設計和實現(xiàn)計算機程序。面向對象編程的核心思想是將程序中的數(shù)據(jù)(對象)和操作(方法)組合成一個個獨立的、可重用的模塊,這些模塊可以通過定義類和實例化對象的方式來創(chuàng)建。面向對象編程的主要目標是提高代碼的可維護性、可擴展性和可重用性。

面向對象編程有以下幾個主要概念:

構造函數(shù),也叫做類(Class):構造函數(shù)是一個模板,用于定義對象的屬性(數(shù)據(jù)成員)和行為(方法)。它描述了對象的基本結構和行為。類可以看作是創(chuàng)建對象的藍圖。

對象(Object):對象是類的一個實例,具有類定義的屬性和行為。每個對象都是獨立的,有自己的狀態(tài)和行為。

封裝(Encapsulation):封裝是將數(shù)據(jù)和方法(行為)組合到一個單元中,通過訪問權限控制來隱藏內部實現(xiàn)的細節(jié)。這可以提高代碼的模塊化和隔離性,減少了代碼之間的耦合。在js中封裝相對來說比較不好實現(xiàn)。es6中使用#定義內部屬性,這個屬性就不會被外部訪問到

繼承(Inheritance):繼承允許一個類從另一個類派生,從而繼承其屬性和方法。派生類可以擴展、修改或覆蓋基類的功能,實現(xiàn)代碼的重用和擴展。es6中使用extends關鍵字來實現(xiàn)

面向對象的好處

不聊書面用語,用例子來看

這是一個很常見的創(chuàng)建數(shù)組的方式,使用一個內置構造函數(shù)(類)Array ,通過 new的方式我們創(chuàng)建出來了一個實例對象,我們叫他arr,這個arr有很多方法,比如push、pop、shift、unshift等,這些是數(shù)組獨有的方法

再看

這個 str1 對象是字符串類型的實例,它擁有多個方法,比如 split、toLowerCase 等,然而與數(shù)組不同,str1 對象無法使用像 push、pop、shift 等數(shù)組特有的方法。一個類型的實例對象只能調用其所屬類的方法。

每個類,都很專業(yè)。一個類只負責一種特定的功能或任務,這個原則通常被稱為 "單一職責原則"。這就是面向對象的好處。接下來,繼續(xù)介紹一些其他的好處。

積木式構建:就像搭積木一樣,你可以將不同的類視為構建塊,每個類都代表一個獨立的功能或特性。通過將不同的類組合在一起,你就像是在搭建一個功能豐富的結構,每個類都負責一部分功能,最終形成一個完整的應用程序。

靈活組合:類似于積木的組合方式,不同的類可以以多種方式組合來實現(xiàn)不同的功能。你可以通過創(chuàng)建不同的類的實例,將它們組合成更大的對象,形成復雜的數(shù)據(jù)結構,從而實現(xiàn)更復雜的功能。這種組合方式可以根據(jù)需要靈活調整,實現(xiàn)不同的行為。

逐步擴展:就像你可以逐步添加積木塊來擴展你的創(chuàng)意作品一樣,你可以通過逐步添加新的類來擴展你的應用程序的功能。這種逐步添加功能的方式,使得你可以根據(jù)需求逐步完善和擴展應用,而不必一次性處理所有功能。

功能定制:類似于選擇不同類型的積木塊來創(chuàng)造不同的形狀,你可以選擇不同的類來實現(xiàn)不同的功能。每個類都代表一個特定的功能單元,你可以根據(jù)需要選擇并組合不同的功能單元,定制出符合要求的應用程序。

總的來說,將面向對象編程比作擺積木一樣的構建過程,強調了代碼的組合性、可維護性和靈活性。通過將不同的類組合在一起,你可以構建出功能豐富且高度可定制的應用程序,就像用積木搭建出各種形狀和結構一樣。這種比喻可以幫助你更好地理解面向對象編程的優(yōu)勢和應用。

那么,現(xiàn)在找到對象了嗎?祝小伙伴們都找到稱心如意的對象




面向對象這么久了,還沒找到對象?的評論 (共 條)

分享到微博請遵守國家法律
四平市| 阿勒泰市| 宜章县| 资阳市| 禄劝| 阿克苏市| 荥阳市| 黔南| 灌南县| 民勤县| 武威市| 思茅市| 宁河县| 集贤县| 分宜县| 盐边县| 高陵县| 泸溪县| 白河县| 德钦县| 芦山县| 南昌市| 宁国市| 汤阴县| 沧源| 渭源县| 丹棱县| 元谋县| 永川市| 新平| 洛扎县| 睢宁县| 兴义市| 班戈县| 密山市| 江达县| 屯昌县| 裕民县| 兴仁县| 苏尼特右旗| 忻城县|