chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于單片機(jī)編程的OO思想學(xué)習(xí)方法和經(jīng)驗(yàn)分享

UtFs_Zlgmcu7890 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-12-16 07:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


1.人腦的限制

由于受到電腦的信息處理功能的影響,因此于20世紀(jì)60年代初產(chǎn)生了以信息處理論為基礎(chǔ)的認(rèn)知心理學(xué)。美國(guó)心理學(xué)家喬治·米勒在信息記憶上的研究成就,為新興的認(rèn)知心理學(xué)提供了理論的證據(jù)。

雖然當(dāng)時(shí)的心理學(xué)家已將信息處理的歷程,大致區(qū)分為感官記憶(2秒以下)、短時(shí)記憶(15秒以下)與長(zhǎng)時(shí)記憶,但短時(shí)記憶的性質(zhì)及其重要性,則是在喬治·米勒1956 年發(fā)表研究報(bào)告《神奇的數(shù)字7 +/- 2,我們信息加工能力的局限》之后才被確定的,即米勒魔術(shù)——人類只能記住和處理7加或減2項(xiàng)內(nèi)容。

后來的證據(jù)表明基數(shù)可能少到3或4,這個(gè)數(shù)字代表大腦“暫存器”解決問題時(shí)所能保存的信息容量。無論實(shí)際數(shù)目是多少,如果要求普通人同時(shí)考慮大約15件事情,實(shí)際上最多只能記住和處理其中9件甚至更少。

如果要求處理的事情更多,一次只有幾件可以同時(shí)處理,其它的會(huì)被快速切入或切出暫存器。想一想去商店采購(gòu)15件東西,如果沒有一份購(gòu)物清單,你很可能漏掉東西或買回來的東西數(shù)量不正確。同樣的道理,如果需求列表或產(chǎn)品清單中的事項(xiàng)成千上萬,那么你的大腦根本沒辦法處理這樣復(fù)雜的事情,除非將它分解成更小的結(jié)構(gòu)化分組。

2.核心域和非核心域

一個(gè)軟件系統(tǒng)封裝了若干領(lǐng)域的知識(shí),其中一個(gè)領(lǐng)域知識(shí)代表了系統(tǒng)的核心競(jìng)爭(zhēng)力,這個(gè)領(lǐng)域被稱為“核心域”,其它領(lǐng)域稱為“非核心域”。雖然更通俗的說法是“業(yè)務(wù)”和“技術(shù)”,但使用“核心域”和“非核心域”更嚴(yán)謹(jǐn)。

非核心域就是別人的領(lǐng)域,比如,底層驅(qū)動(dòng)、操作系統(tǒng)和組件,即便你有一些優(yōu)勢(shì),那也是暫時(shí)的,競(jìng)爭(zhēng)對(duì)手也能通過其它渠道獲得。非核心域的改進(jìn)是必要的,但不充分,還是要在核心域上深入挖掘,讓競(jìng)爭(zhēng)對(duì)手無法輕易從第三方獲得。因?yàn)樵诤诵挠蛏仙钊胪诰?,達(dá)到基于核心域的復(fù)用,這是獲得和保持競(jìng)爭(zhēng)力的根本手段。

要達(dá)到基于核心域的復(fù)用,有必要將核心域和非核心域分開考慮。因?yàn)槿四X的容量是有限的,而過早地將各個(gè)領(lǐng)域的知識(shí)混雜,會(huì)增加不必要的負(fù)擔(dān),從而導(dǎo)致開發(fā)人員騰不出腦力思考核心域中更深刻的問題。

正因?yàn)槿四X的容量和運(yùn)算能力有限,待解決的問題的規(guī)模一旦變大,就必須分而治之,因?yàn)楹诵挠蚺c非核心域的知識(shí)都是獨(dú)立的。比如,一個(gè)計(jì)算器要做到?jīng)]有漏洞,其中的問題也很復(fù)雜。如果不使用狀態(tài)圖對(duì)領(lǐng)域邏輯顯式地建模,再根據(jù)模型映射到實(shí)現(xiàn)。而是直接下手編程,領(lǐng)域邏輯的知識(shí)靠臨時(shí)去想,最終得到的代碼肯定破綻百出。其實(shí)有利潤(rùn)的系統(tǒng),其內(nèi)部都是很復(fù)雜的,千萬不要幼稚地認(rèn)為“我的系統(tǒng)不復(fù)雜”。

3.職責(zé)轉(zhuǎn)移

在面向過程編程時(shí),由于主程序承擔(dān)的責(zé)任太多,要確保一切正確工作,還要協(xié)調(diào)各個(gè)函數(shù)并控制它們的先后順序,因此經(jīng)常會(huì)產(chǎn)生非常復(fù)雜的代碼。很多時(shí)候變化是不可避免的,而功能分解法卻又無法應(yīng)對(duì)可能出現(xiàn)的變化。一旦修改代碼,則bug越來越多。更重要的是,由于人類的大腦無法做太多復(fù)雜的處理,記憶力和理解力也是有限的。因此面對(duì)復(fù)雜的軟件開發(fā)時(shí),主程序不能做太多的事情,必須通過“分離關(guān)注點(diǎn)”進(jìn)行職轉(zhuǎn)移責(zé)。

假設(shè)要乘出租車去機(jī)場(chǎng),一種方式是告訴司機(jī),按照“啟動(dòng)、右轉(zhuǎn)、左轉(zhuǎn)、停止”等單獨(dú)的接口去機(jī)場(chǎng)。這種方式需要乘客對(duì)自己的行為負(fù)責(zé),乘客知道每個(gè)城市去機(jī)場(chǎng)的路線。

既然用戶的需求總是在變化之中,我們將無法阻止變化。與其抱怨變化,不如改變開發(fā)過程,從而更有效地應(yīng)對(duì)變化,面向?qū)ο缶幊叹褪沁@樣作為對(duì)抗軟件復(fù)雜性的手段出現(xiàn)的。

在面向?qū)ο缶幊虝r(shí),另一種方式是告訴司機(jī),“請(qǐng)載我去機(jī)場(chǎng)”。盡管具體實(shí)現(xiàn)在廣州、北京或上海等不同城市中是不同的,但在任何城市都可以這么說。因?yàn)樗緳C(jī)知道怎么去機(jī)場(chǎng),司機(jī)對(duì)自己的行為負(fù)責(zé),并信任司機(jī)知道如何執(zhí)行,這就是職責(zé)轉(zhuǎn)移,顯然這種方法比功能分解法要容易得多。

由于每個(gè)對(duì)象都對(duì)自己的行為負(fù)責(zé),因此必須有方法告訴對(duì)象要做什么。而方法都被標(biāo)識(shí)為能夠被其它對(duì)象調(diào)用,這些方法的集合被稱為對(duì)象的公開接口。其形象的比喻為,“將軟件對(duì)象看成具有某種職責(zé)的人,他要與其他人協(xié)作完成工作。”

>>>1.1.2 OO機(jī)制

面向?qū)ο蟮木幊淌怯深悾╟lass)這種結(jié)構(gòu)實(shí)現(xiàn)的,C++類的概念是對(duì)C結(jié)構(gòu)概念擴(kuò)展。因此表面上看起來這些特征與面向?qū)ο缶幊陶Z(yǔ)言有很大的關(guān)聯(lián),但實(shí)際上能用任何一種語(yǔ)言實(shí)現(xiàn)。不管實(shí)現(xiàn)語(yǔ)言如何,任何大的軟件系統(tǒng)都會(huì)以某種形式使用抽象、繼承或多態(tài)性。

1.封裝

封裝是OO方法中的一個(gè)重要原則,其含義是將封裝視為任何形式的隱藏,對(duì)外形成一個(gè)邊界,只暴露有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。封裝不僅僅是將對(duì)象的全部屬性和全部操作結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(對(duì)象),而是發(fā)現(xiàn)變化將其封裝。

抽象是實(shí)現(xiàn)封裝的分析工具,抽象可以使我們專注于應(yīng)用程序最本質(zhì)的方面,同時(shí)忽略細(xì)節(jié)。在確定如何實(shí)現(xiàn)功能之前,先關(guān)注對(duì)象是什么?做了什么?更具體地,抽象是總結(jié)一類對(duì)象的共同特征創(chuàng)建類的過程,包括數(shù)據(jù)抽象和行為抽象。

數(shù)據(jù)抽象是數(shù)據(jù)和處理方法的結(jié)合,即封裝數(shù)據(jù)和函數(shù)到類中的能力,因此又將數(shù)據(jù)抽象稱為信息隱藏或封裝,信息隱藏是一種軟件設(shè)計(jì)思想。由于不必知道內(nèi)部結(jié)構(gòu),因此可以將數(shù)據(jù)當(dāng)作黑盒子來操作。即使將來數(shù)據(jù)結(jié)構(gòu)發(fā)生變化,對(duì)外部也沒有影響。從而避免程序的各個(gè)組成部分過于相互依賴,否則很小的變化也會(huì)引起巨大的連鎖反應(yīng)。

在結(jié)構(gòu)化的設(shè)計(jì)中,通常將代碼封裝到函數(shù)和模塊中。因此封裝不是OO語(yǔ)言所特有的,但它能將數(shù)據(jù)結(jié)構(gòu)和行為組織在一個(gè)實(shí)體中,其主要目的是為使用代碼的程序員提供一致的接口,這是面向?qū)ο缶幊痰耐怀鎏攸c(diǎn)。盡管如此,面向?qū)ο蠛徒Y(jié)構(gòu)化的代碼并不是互斥的,實(shí)際上不用結(jié)構(gòu)化代碼將無法創(chuàng)建對(duì)象。因此在構(gòu)建面向?qū)ο蟮南到y(tǒng)時(shí),在設(shè)計(jì)中依然離不開結(jié)構(gòu)化的技術(shù)。

2.繼承

雖然結(jié)構(gòu)化程序設(shè)計(jì)通過編寫一個(gè)功能塊實(shí)現(xiàn)重用,但面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)代碼重用的方法是允許定義類之間的關(guān)系。而繼承是實(shí)現(xiàn)該功能的主要手段,其將不同代碼中相同的部分提取出來。即抽取不同類的共同屬性和行為創(chuàng)建全新的類,實(shí)現(xiàn)代碼最大限度地重用。

利用類和繼承這兩個(gè)特性,高效地將抽象數(shù)據(jù)通過類封裝起來,即通過類將同一類對(duì)象管理起來。因此可以說類是將數(shù)據(jù)黑盒子化的工具,而繼承可以從其它類繼承屬性,只需要擴(kuò)展實(shí)現(xiàn)或?qū)?shí)現(xiàn)稍作改進(jìn),即可支持軟件重用。

在經(jīng)典的Shape(形狀)示例中,Circle(圓形)、Square(矩形)和Star(星形)都直接繼承自Shape,這種關(guān)系通常被稱為is-a關(guān)系。因?yàn)閳A是一種形狀,矩形也是一種形狀,星形也是一種形狀,即Circle、Square和Star都是Shape的擴(kuò)展。當(dāng)子類繼承自父類時(shí),任何父類能做的事情子類都可以做。

3.多態(tài)性

當(dāng)你要求某人畫一個(gè)形狀Shape時(shí),實(shí)際上沒有人能完成這個(gè)任務(wù)。因?yàn)樾螤钍且粋€(gè)抽象的概念,所以Shape無法提供繪制代碼,必須指定一個(gè)具體的形狀。有了具體形狀,就可以為各種具體形狀實(shí)現(xiàn)各自的繪圖代碼。

顯然,無論畫什么形狀,其共性是Draw畫圖方法,每種形狀都可以通過函數(shù)指針調(diào)用各自的繪圖代碼繪制自己,這就是多態(tài)的意義,即多態(tài)允許用相同的方法(代碼)在運(yùn)行中,根據(jù)對(duì)象的類型調(diào)用不同的處理函數(shù)。

4.組合

組合是指在類中包含一個(gè)對(duì)象,且該對(duì)象是其它類的實(shí)例,開發(fā)者將責(zé)任委托給所包含的對(duì)象完成。組合有兩種方式:聚合和組合,這些方式表示了對(duì)象之間的協(xié)作關(guān)系。

聚合就是“可聚可散”的意思,被包含的對(duì)象如同一個(gè)集合。聚合關(guān)系是整體與部分的關(guān)系,且部分可以離開整體而單獨(dú)存在。雖然汽車和發(fā)動(dòng)機(jī)是整體和部分的關(guān)系,但發(fā)動(dòng)機(jī)離開汽車仍然可以存在,所以汽車和發(fā)動(dòng)機(jī)是聚合關(guān)系。

雖然組合關(guān)系也是某種形式的整體和部分的聚合,但部分不能離開整體而單獨(dú)存在,部分對(duì)象與整體對(duì)象之間具有同生共死的關(guān)系。在組合關(guān)系中,部分是整體的一部分,且整體可以控制部分的生命周期,即部分的存在依賴于整體。

雖然花瓣不是一種花,但它是花的一部分,因此它們之間存在一種真正的has-a組合關(guān)系,不存在父子關(guān)系。同樣,頭部是由眼睛、嘴巴、鼻子和耳朵組合而成的,如果頭部不存在,那么這些部件都不能單獨(dú)存在。

>>>1.1.3 OO收益

耦合性與內(nèi)聚性是相輔相成的關(guān)系,內(nèi)聚性描述的是一個(gè)模塊內(nèi)部組成部分之間相互聯(lián)系的緊密程度,而耦合性描述的是一個(gè)模塊與其它模塊之間聯(lián)系的緊密程度。由此可見,無論使用哪種方法,軟件開發(fā)的目標(biāo)是創(chuàng)建符合“高內(nèi)聚、低耦合”這樣的模塊。也就是說,每個(gè)模塊盡可能獨(dú)立完成某個(gè)特定的功能。

如果模塊之間做到了低耦合,那么修改一個(gè)模塊就不需要修改另一個(gè)模塊。使用模塊化最重要的一點(diǎn)是,能夠獨(dú)立修改單個(gè)模塊,而不需要修改系統(tǒng)的其它模塊。一個(gè)典型的錯(cuò)誤是,使用緊耦合的方式做模塊之間的集成,從而使得一個(gè)模塊的修改會(huì)導(dǎo)致其消費(fèi)者的修改。一個(gè)低耦合的模塊應(yīng)該盡可能少地知道與之協(xié)作的那些模塊的信息,即應(yīng)該限制兩個(gè)模塊之間不同調(diào)用形式的數(shù)量,因?yàn)槌藵撛诘男阅軉栴}之外,過度的通信可能會(huì)導(dǎo)致緊耦合。

內(nèi)聚性用于評(píng)估一個(gè)組件(包、模塊或配件)中成員的功能相關(guān)性,內(nèi)聚程度高表明各個(gè)成員共同完成了一個(gè)功能特性或一組功能特性,內(nèi)聚程度低表明各個(gè)成員提供的功能互不相干。如果一個(gè)類的方法和屬性共同完成了一個(gè)功能或一系列緊密相關(guān)的功能,這個(gè)類就是內(nèi)聚的。假設(shè)有一個(gè)這樣的類,實(shí)現(xiàn)了3種完全不同的功能。如果這3個(gè)功能的需求細(xì)節(jié)發(fā)生了變化,這個(gè)類也必須跟著改變,從而導(dǎo)致更多的開發(fā)和維護(hù)成本。因此高內(nèi)聚就是將相關(guān)的行為聚集在一起,而將不相關(guān)的行為放在別處。這樣做的好處是,如果要修改某個(gè)行為,則只在一個(gè)地方修改,即可盡快發(fā)布。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:周立功:OO思想——面向?qū)ο缶幊?/p>

文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求128單片機(jī)學(xué)習(xí)方法

    求128單片機(jī)學(xué)習(xí)方法
    發(fā)表于 01-06 22:38

    單片機(jī)學(xué)習(xí)方法資料分享

    ,雖然每個(gè)系列的功能不一樣,但是最基本的編程思想還是一樣的,不同的可能就是編譯器,程序下載的軟件等差別,所以有了51單片機(jī)的開發(fā)基礎(chǔ)之后,學(xué)習(xí)其他
    發(fā)表于 03-11 10:59

    單片機(jī)編程思想

    而呆板。這個(gè)骨架需要包上皮肉,加上靈魂,這樣有血有肉有思想的程序才是我想要的,可是我怎么才能做到呢?朋友,如果您有這方面的經(jīng)驗(yàn)請(qǐng)指點(diǎn)迷津!或者給我推薦一些關(guān)于單片機(jī)
    發(fā)表于 07-01 04:35

    單片機(jī)學(xué)習(xí)方法和步驟

    學(xué)習(xí)單片機(jī)的動(dòng)機(jī)不外乎有四種:一是為興趣愛好而學(xué),二是為專業(yè)而學(xué);三是為飯碗而學(xué);四是在工作中被逼而學(xué)。不管是哪種動(dòng)機(jī),因主修專業(yè)的不同以及電子基礎(chǔ)的深淺不同,對(duì)于不同的人可能采用不同的學(xué)習(xí)方法
    發(fā)表于 07-15 09:11

    請(qǐng)問STM32單片機(jī)學(xué)習(xí)方法有哪些?

    請(qǐng)問STM32單片機(jī)學(xué)習(xí)方法有哪些?
    發(fā)表于 10-26 06:59

    萌新求助,求大佬分享單片機(jī)學(xué)習(xí)方法

    萌新求助,求大佬分享單片機(jī)學(xué)習(xí)方法
    發(fā)表于 11-08 08:36

    單片機(jī)學(xué)習(xí)方法和步驟相關(guān)資料推薦

    ,根據(jù)筆者的親身學(xué)習(xí)經(jīng)驗(yàn)和教授徒弟學(xué)習(xí)的感受,提出筆者的學(xué)習(xí)方法和步驟。目錄第一步:基礎(chǔ)理論知識(shí)學(xué)習(xí)第二步:
    發(fā)表于 11-22 08:31

    單片機(jī)學(xué)習(xí)方法和步驟

    學(xué)習(xí)單片機(jī)學(xué)習(xí)其他學(xué)科需要付出更多的努力和代價(jià),不僅要學(xué)習(xí)理論知識(shí)還要練習(xí)實(shí)際操作,而且主要是在實(shí)際操作中才能真正學(xué)到單片機(jī)技術(shù)。因主修專
    發(fā)表于 11-30 06:38

    AVR單片機(jī)學(xué)習(xí)方法詳解

    詳細(xì)介紹AVR單片機(jī)學(xué)習(xí)方法,很適合初學(xué)者!
    發(fā)表于 05-16 17:15 ?3次下載

    根據(jù)學(xué)習(xí)經(jīng)驗(yàn)以及教學(xué)經(jīng)驗(yàn)總結(jié)出學(xué)習(xí)單片機(jī)的4個(gè)步驟

    如何學(xué)習(xí)單片機(jī)的問題,我設(shè)計(jì)的這四個(gè)步驟,并不是拍拍腦袋想出來的,而是根據(jù)很多的學(xué)習(xí)經(jīng)驗(yàn)以及教學(xué)經(jīng)驗(yàn)總結(jié)出來的一套非??茖W(xué)的
    的頭像 發(fā)表于 01-18 15:10 ?4384次閱讀
    根據(jù)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>經(jīng)驗(yàn)</b>以及教學(xué)<b class='flag-5'>經(jīng)驗(yàn)</b>總結(jié)出<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>單片機(jī)</b>的4個(gè)步驟

    學(xué)習(xí)AVR單片機(jī)C語(yǔ)言編程方法和教程說明

    問題,為了節(jié)省時(shí)間:這就需要進(jìn)行c語(yǔ)言的高度的提煉.本文進(jìn)行了這方面的探索,提出了一種學(xué)習(xí)AVR單片機(jī)C語(yǔ)言編程方法一提綱式的學(xué)習(xí)方法
    發(fā)表于 12-30 08:00 ?17次下載
    <b class='flag-5'>學(xué)習(xí)</b>AVR<b class='flag-5'>單片機(jī)</b>C語(yǔ)言<b class='flag-5'>編程</b>的<b class='flag-5'>方法</b>和教程說明

    單片機(jī)學(xué)習(xí)方法總結(jié)資料分享

    單片機(jī)學(xué)習(xí)方法總結(jié)資料分享
    發(fā)表于 11-13 20:36 ?6次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>學(xué)習(xí)方法</b>總結(jié)資料分享

    單片機(jī)學(xué)習(xí)筆記————單片機(jī)學(xué)習(xí)方法和步驟

    ,根據(jù)筆者的親身學(xué)習(xí)經(jīng)驗(yàn)和教授徒弟學(xué)習(xí)的感受,提出筆者的學(xué)習(xí)方法和步驟。目錄第一步:基礎(chǔ)理論知識(shí)學(xué)習(xí)第二步:
    發(fā)表于 11-14 14:06 ?5次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>學(xué)習(xí)</b>筆記————<b class='flag-5'>單片機(jī)</b><b class='flag-5'>學(xué)習(xí)方法</b>和步驟

    對(duì)單片機(jī)概念和學(xué)習(xí)方法的個(gè)人理解

    對(duì)單片機(jī)概念和學(xué)習(xí)方法的個(gè)人理解單片機(jī),通俗的講就是一塊集成芯片,這個(gè)芯片上有許多的引腳,通過引腳連接外圍電路實(shí)現(xiàn)單片機(jī)的多種功能。比如說:51單片
    發(fā)表于 11-14 16:36 ?8次下載
    對(duì)<b class='flag-5'>單片機(jī)</b>概念和<b class='flag-5'>學(xué)習(xí)方法</b>的個(gè)人理解

    梳理單片機(jī)學(xué)習(xí)方法、產(chǎn)品開發(fā)流程

    梳理單片機(jī)學(xué)習(xí)方法、產(chǎn)品開發(fā)流程
    的頭像 發(fā)表于 09-21 17:20 ?1127次閱讀
    梳理<b class='flag-5'>單片機(jī)</b><b class='flag-5'>學(xué)習(xí)方法</b>、產(chǎn)品開發(fā)流程