国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式學(xué)習(xí)筆記 - 面向?qū)ο?- 1.面向?qū)ο蟮降子懻摰氖鞘裁?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式學(xué)習(xí)筆記 - 面向?qū)ο?- 1.面向?qū)ο蟮降子懻摰氖鞘裁础OM麑?duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.到底什么是面向?qū)ο缶幊毯兔嫦驅(qū)ο缶幊陶Z(yǔ)言?

面向?qū)ο缶幊蹋?code>OOP)的全稱是 Object Oriented Programming。
面向?qū)ο缶幊陶Z(yǔ)言(OOPL)的全稱是 Object Oriented Programming Language。

面向?qū)ο缶幊讨杏袃蓚€(gè)非常重要的概念,就是類(Class)和對(duì)象(Object)。面向?qū)ο缶幊踢@個(gè)概念第一次使用是在SmallTalk 這種編程語(yǔ)言中,它也被認(rèn)為是第一個(gè)真正意義上的面向?qū)ο缶幊陶Z(yǔ)言。后來(lái)C++帶動(dòng)了面向?qū)ο缶幊痰牧鞒獭5浇裉?,如果不按照?yán)格的定義來(lái)說(shuō),大部分編程語(yǔ)言都是面向?qū)ο缶幊陶Z(yǔ)言,比如Java、C++、GoPython、JavaScript等等。

那么到底什么是面向?qū)ο缶幊??什么語(yǔ)言才算是面向?qū)ο缶幊陶Z(yǔ)言呢?

  • 面向?qū)ο缶幊?/strong>是一種編程范式或編程風(fēng)格。它以類或?qū)ο笞鳛榻M織代碼的基本單元,并將封裝、抽象、繼承、多態(tài)四個(gè)特性,作為代碼設(shè)計(jì)和實(shí)現(xiàn)的基石。
  • 面向?qū)ο缶幊陶Z(yǔ)言是支持類或?qū)ο蟮恼Z(yǔ)法機(jī)制,能方便地實(shí)現(xiàn)面向?qū)ο缶幊趟拇筇匦裕ǚ庋b、抽象、繼承、多態(tài))的編程語(yǔ)言。

一般來(lái)說(shuō),面向?qū)ο缶幊潭际峭ㄟ^(guò)面向?qū)ο缶幊陶Z(yǔ)言來(lái)進(jìn)行的,但是,不用面向?qū)ο缶幊陶Z(yǔ)言也可以進(jìn)行面向?qū)ο缶幊獭7粗?,即使我們使用面向?qū)ο缶幊陶Z(yǔ)言,寫出來(lái)的代碼也不一定是面向?qū)ο缶幊田L(fēng)格的,也有可能是面向過(guò)程編程風(fēng)格的。

2.如何判定某編程語(yǔ)言是否是面向?qū)ο缶幊陶Z(yǔ)言?

在上面剛剛的講解中,提到“如果不按照嚴(yán)格的定義來(lái)說(shuō),大部分編程語(yǔ)言都是面向?qū)ο缶幊陶Z(yǔ)言”。為什么要加上“如果不按照嚴(yán)格的定義”這個(gè)前提呢?

這是因?yàn)槿绻麌?yán)格按照面向編程語(yǔ)言的定義,前面提到的有些編程語(yǔ)言并不是嚴(yán)格意義上的面向?qū)ο缶幊陶Z(yǔ)言。比如 JavaScript,它不支持封裝和繼承特性。

實(shí)際上,面向?qū)ο缶幊虖淖置嫔?,按照最?jiǎn)單、最原始的方式來(lái)理解,就是將類或?qū)ο笞顬榇a組織的基本單元,來(lái)進(jìn)行編碼的一種編程范式或者編程風(fēng)格,并不一定需要封裝、抽象、繼承、多態(tài)這四大特性的支持。但是,在進(jìn)行面向?qū)ο缶幊痰倪^(guò)程中,人們不停地總結(jié)發(fā)現(xiàn),有了這四大特性,我們就能更容易地實(shí)現(xiàn)各種面向?qū)ο蟮拇a設(shè)計(jì)思路。

例如,在面向?qū)ο缶幊痰倪^(guò)程中,經(jīng)常會(huì)遇到 is-a 這種類關(guān)系(比如狗是一種動(dòng)物),而繼承這個(gè)特性就能很好的支持這種 is-a 的代碼設(shè)計(jì)思路,并且解決代碼復(fù)用的問(wèn)題。但是隨著編程語(yǔ)言的不斷迭代、演進(jìn),人們發(fā)現(xiàn)繼承這種特性容易造成層次不清、代碼混亂,所以很多編程語(yǔ)言在設(shè)計(jì)時(shí)就摒棄了繼承特性,比如 Go。但是,我們不能因?yàn)樗饤壛死^承特性,就一刀切地認(rèn)為它不是面向?qū)ο缶幊陶Z(yǔ)言了。

個(gè)人覺(jué)得,只要某種編程語(yǔ)言支持類或?qū)ο蟮恼Z(yǔ)法概念,并且以此作為組織代碼的基本單元,那就可以被粗略地認(rèn)為它就是要面向?qū)ο缶幊陶Z(yǔ)言了,至于是否完全地支持了面向?qū)ο缶幊痰乃拇筇匦浴⑹欠駥?duì)四大特性有所取舍,可以不作為判定的標(biāo)準(zhǔn)?;诖耍庞辛饲懊娴恼f(shuō)法:“不按照嚴(yán)格定義來(lái)說(shuō),現(xiàn)在流行的大部分編程語(yǔ)言都是面向?qū)ο缶幊陶Z(yǔ)言。但是按照嚴(yán)格的定義,很多語(yǔ)言都不能算得上面向?qū)ο缶幊陶Z(yǔ)言”。

3.什么是面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)?

和面向?qū)ο缶幊探?jīng)常放到一起講的,還有面向?qū)ο蠓治觯?code>OOA)和面向?qū)ο笤O(shè)計(jì)(OOD)。OOA、OODOOP 三個(gè)連在一起就是面向?qū)ο蠓治?、設(shè)計(jì)、編程(實(shí)現(xiàn)),正好是面向?qū)ο筌浖_(kāi)發(fā)要經(jīng)歷的三個(gè)階段。

面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)中的“分析”和“設(shè)計(jì)”這兩個(gè)詞,完全可以從字面上去理解,不需要過(guò)度解讀。之所以在前面加上“面向?qū)ο蟆边@幾個(gè)字,是因?yàn)槲覀兪菄@著對(duì)象來(lái)做需求分析和設(shè)計(jì)的。分析和設(shè)計(jì)兩個(gè)階段的產(chǎn)出是類的設(shè)計(jì),包括程序被拆解為哪些類,每個(gè)類有哪些屬性方法,類與類之間如何交互等等。

面向?qū)ο蠓治鼍褪?要搞清楚做什么,面向?qū)ο笤O(shè)計(jì)就是要搞清楚怎么做,面向?qū)ο缶幊叹褪菍⒎治龊驮O(shè)計(jì)的結(jié)果翻譯成代碼的過(guò)程。

4.什么是 UML?是否需要 UML?

降到面向?qū)ο蠓治?、設(shè)計(jì)、編程,那就不得不提到 UML(Unified Model Language),統(tǒng)一建模語(yǔ)言。很多書籍中,常用它來(lái)畫圖表達(dá)面向?qū)ο蠡蛟O(shè)計(jì)模式的設(shè)計(jì)思路。

實(shí)際上,UML 是一種非常復(fù)雜的東西。它不僅僅包含類圖,還包括用例圖、順序圖、活動(dòng)圖、狀態(tài)圖、組件圖等等。即使使用類圖的學(xué)習(xí)成本也是很高的,比如說(shuō)類之間的關(guān)系,UML就定義了很多種,比如泛華、實(shí)現(xiàn)、關(guān)聯(lián)、聚合、組合、依賴等。

要完全掌握,并且熟練運(yùn)用這些類之間的關(guān)系,來(lái)畫 UML 類圖,肯定要花很多的學(xué)習(xí)經(jīng)理,而且即使你按照 UML 畫出類圖,可對(duì)于不熟悉的人來(lái)說(shuō),看懂的成本還是很高的。

一般在互聯(lián)網(wǎng)公司的項(xiàng)目開(kāi)發(fā)中,UML 用處可能不大。為了文檔化軟件設(shè)計(jì)或者方便討論軟件設(shè)計(jì),大部分情況下會(huì)畫一個(gè)不是那么規(guī)范的草圖,能夠達(dá)意,方便溝通就夠了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-834997.html

到了這里,關(guān)于設(shè)計(jì)模式學(xué)習(xí)筆記 - 面向?qū)ο?- 1.面向?qū)ο蟮降子懻摰氖鞘裁吹奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • javascript設(shè)計(jì)模式-面向?qū)ο蠡A(chǔ)

    在JS這種弱類型的語(yǔ)言中,類型不匹配錯(cuò)誤很難跟蹤??梢允褂媒涌趤?lái)進(jìn)行類型檢查。如果強(qiáng)制使用,又會(huì)弱化語(yǔ)言的靈活性。因?yàn)橛蓄~外的代碼調(diào)用,所以又會(huì)降低性能。解決方法就是在開(kāi)發(fā)時(shí)進(jìn)行類型檢查,在開(kāi)始完成后刪除此部分代碼。 但JS中的接口實(shí)現(xiàn)方式是模擬的

    2024年01月18日
    瀏覽(20)
  • C++設(shè)計(jì)模式_02_面向?qū)ο笤O(shè)計(jì)原則

    變化是復(fù)用的天敵!面向?qū)ο笤O(shè)計(jì)或者說(shuō)使用了抽象原則的面向?qū)ο笤O(shè)計(jì)最大的優(yōu)勢(shì)在于#

    2024年02月11日
    瀏覽(21)
  • C++中的面向?qū)ο笤O(shè)計(jì)模式實(shí)踐

    面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-Oriented Programming,簡(jiǎn)稱OOP)是一種將程序設(shè)計(jì)問(wèn)題分解為對(duì)象的思維方式。它通過(guò)定義對(duì)象和對(duì)象之間的關(guān)系,將問(wèn)題模型化并轉(zhuǎn)化為代碼實(shí)現(xiàn)。在面向?qū)ο笤O(shè)計(jì)模式中,設(shè)計(jì)模式是一種被普遍接受的解決問(wèn)題的方法論。 C++作為一種多范式編程語(yǔ)言,

    2024年01月17日
    瀏覽(17)
  • 設(shè)計(jì)模式 -- 策略模式(傳統(tǒng)面向?qū)ο笈cJavaScript 的對(duì)比實(shí)現(xiàn))

    規(guī)則:根據(jù)員工的工資基數(shù)和年底績(jī)效情況計(jì)算年終獎(jiǎng) 初級(jí)實(shí)現(xiàn) 缺點(diǎn) 多重 if else 違反開(kāi)發(fā)-封閉原則,可維護(hù)性差 復(fù)用性差 使用組合函數(shù)重構(gòu)代碼 使用組合函數(shù)來(lái)重構(gòu)代碼,把各種算法封裝到一個(gè)個(gè)的小函數(shù)里面,這些小函數(shù)有著良好的命名,可以一目了然地知道它對(duì)應(yīng)著

    2024年02月11日
    瀏覽(99)
  • 2.python設(shè)計(jì)模式【面向?qū)ο笤O(shè)計(jì)的SOLID原則 基礎(chǔ)概念】

    概念:一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。即軟件實(shí)體應(yīng)該盡量在不修改原有代碼的情況下進(jìn)行擴(kuò)展 概念:所有引用父類的地方必須能透明地使用其子類的對(duì)象 概念:高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該依賴其抽象;抽象不依賴細(xì)節(jié);細(xì)節(jié)

    2024年02月16日
    瀏覽(25)
  • 一網(wǎng)打盡java注解-克隆-面向?qū)ο笤O(shè)計(jì)原則-設(shè)計(jì)模式

    一網(wǎng)打盡java注解-克隆-面向?qū)ο笤O(shè)計(jì)原則-設(shè)計(jì)模式

    注解 :也叫標(biāo)注,用于包、類、變量、方法、參數(shù)上。可以通過(guò)反射獲取標(biāo)注??梢栽诰幾g期間使用,也可以被編譯到字節(jié)碼文件中,運(yùn)行時(shí)生效。 內(nèi)置注解 :Java語(yǔ)言已經(jīng)定義好的注解。 @Overread :用于方法重寫。 @Deprecated :標(biāo)記過(guò)時(shí)方法。 @SuppressWarnings :指示編譯器去

    2024年02月11日
    瀏覽(19)
  • 基于C語(yǔ)言的面向?qū)ο笤O(shè)計(jì)模式(持續(xù)更新)

    首先這篇文章只是初步的嘗試,不涉及過(guò)于高深的編程技巧;同時(shí)需要表明的是, 面向?qū)ο笾皇且环N思想 ,不局限于什么樣的編程語(yǔ)言,不可否認(rèn)的是基于面向?qū)ο筇匦远O(shè)計(jì)的語(yǔ)言確實(shí)要比面向過(guò)程式的語(yǔ)言更加容易進(jìn)行抽象和統(tǒng)籌,可以說(shuō)面向?qū)ο蟮脑O(shè)計(jì)模式可以很大

    2024年04月10日
    瀏覽(22)
  • 【W(wǎng)inForm】C#實(shí)現(xiàn)商場(chǎng)收銀軟件,從面向過(guò)程到面向?qū)ο?,設(shè)計(jì)模式的應(yīng)用

    【W(wǎng)inForm】C#實(shí)現(xiàn)商場(chǎng)收銀軟件,從面向過(guò)程到面向?qū)ο螅O(shè)計(jì)模式的應(yīng)用

    實(shí)現(xiàn)商場(chǎng)收銀系統(tǒng)從簡(jiǎn)單的面向過(guò)程到面向?qū)ο蟮难葑儭?最容易想到的: 單價(jià)*數(shù)量=總價(jià) 根據(jù)輸入的單價(jià)和數(shù)量,直接計(jì)算,將結(jié)果顯示在listbox控件中。 重置按鈕可以清零。 1、運(yùn)行效果 2、界面設(shè)計(jì) 3、代碼 版本2在版本1的基礎(chǔ)上增加了打折優(yōu)惠。 1、運(yùn)行效果 打折下拉框

    2024年02月09日
    瀏覽(25)
  • 【Java基礎(chǔ)教程】(十五)面向?qū)ο笃?· 第九講:抽象類和接口——定義、限制與應(yīng)用的細(xì)節(jié),初窺模板設(shè)計(jì)模式、工廠設(shè)計(jì)模式與代理設(shè)計(jì)模式~

    【Java基礎(chǔ)教程】(十五)面向?qū)ο笃?· 第九講:抽象類和接口——定義、限制與應(yīng)用的細(xì)節(jié),初窺模板設(shè)計(jì)模式、工廠設(shè)計(jì)模式與代理設(shè)計(jì)模式~

    掌握 抽象類和接口的定義、使用、區(qū)別、常見(jiàn)設(shè)計(jì)模式; 抽象類是代碼開(kāi)發(fā)中的重要組成部分,利用抽象類可以明確地定義子類需要覆寫的方法,這樣相當(dāng)于在語(yǔ)法程度上對(duì)子類進(jìn)行了嚴(yán)格的定義限制,代碼的開(kāi)發(fā)也就更加標(biāo)準(zhǔn)。下面具體介紹抽象類的概念。 普通類可以直

    2024年02月16日
    瀏覽(26)
  • java的面向?qū)ο缶幊蹋╫op)——static概述及初始單例設(shè)計(jì)模式

    java的面向?qū)ο缶幊蹋╫op)——static概述及初始單例設(shè)計(jì)模式

    過(guò)了入門階段,開(kāi)始學(xué)習(xí)進(jìn)階語(yǔ)法了。每天進(jìn)步一點(diǎn)點(diǎn),打好基礎(chǔ),daydayup! 什么是面向?qū)ο缶幊蹋╫op),可以看這篇 java的面向?qū)ο缶幊蹋╫op)概述及案例? static的意思為靜態(tài),用于修飾成員變量及成員方法。 成員變量根據(jù)有無(wú)static可以分為兩種 ——類變量及實(shí)例變量 1,類

    2024年01月19日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包