嵌入式開發(fā)中的抽象、封裝與繼承
## 1 何從實(shí)現(xiàn)?
OOP 是 CPP 的顯著特征,盡管它是一種多重范式的語言
第一部分談的是產(chǎn)品的實(shí)現(xiàn)(implement)而非產(chǎn)品的設(shè)計(jì),因?yàn)閷?duì)于個(gè)人開發(fā)者而言,往往是知道如何實(shí)現(xiàn)產(chǎn)品,而后才著手做整體設(shè)計(jì)的。這并不是說實(shí)現(xiàn)高于設(shè)計(jì),而是承認(rèn)此類開發(fā)者的首要驅(qū)動(dòng)力通常不是用戶需求,而是嘗試新事物的熱情。
對(duì)新事物的嘗試是以一些原則為基礎(chǔ)的。從一年級(jí)學(xué)習(xí)電路原理開始,基爾霍夫定律指導(dǎo)下的‘前后級(jí)獨(dú)立’的分析原則就印刻在每個(gè)電子/控制/儀器專業(yè)的預(yù)備工程師心中。各類軟件工程實(shí)施原則也時(shí)刻提醒我們模塊化設(shè)計(jì)對(duì)系統(tǒng)的可維護(hù)性與可拓展性的重要意義。這就是說,產(chǎn)品的模塊化應(yīng)當(dāng)盡早開展,最好在需求分析階段就將產(chǎn)品拆解成多個(gè)需求模塊,后續(xù)設(shè)計(jì)時(shí)則只需針對(duì)各個(gè)需求模塊之間的銜接關(guān)系做出定義即可。
盡管C++(C PLUS PLUS) 是一種多重范式(Multiple paradigms)的語言,但面向?qū)ο螅∣bject Oriented Programming)仍不失為它最顯著的特征。類似于 CPP,盡管產(chǎn)品設(shè)計(jì)的原則成千上萬,但對(duì)需求的抽象仍是并仍將長(zhǎng)期是產(chǎn)品實(shí)現(xiàn)最關(guān)鍵的預(yù)處理。
2 何必抽象?
計(jì)算機(jī)科學(xué)是關(guān)于計(jì)算機(jī)的科學(xué),計(jì)算機(jī)技術(shù)是關(guān)于抽象的技術(shù)
- 應(yīng)用
- 編程語言/運(yùn)行時(shí)
- 操作系統(tǒng)
- 處理器
- 計(jì)算單元
- 數(shù)字邏輯/電路
- 物理布局(VLSI)
- 流片
計(jì)算機(jī)體系結(jié)構(gòu)中,每一層級(jí)的設(shè)計(jì)者都只需要考慮下一層層級(jí)的問題,不需要考慮下一層級(jí)的下一層級(jí)的問題。所以抽象即是簡(jiǎn)化,抽象提高效率。
3 何須封裝?
尼泊爾軍刀或許比電鉆功能更多,但我們需要的是電鉆
這是某處理器的地址映射圖,從中可以看到兩條 APB 總線的地址范圍。片上所有的外設(shè)都掛載在這兩條總線上,開發(fā)者要操作外設(shè),就得以這兩條總線的起始地址為基地址訪問外設(shè)。
這是 C++ Boost 庫主頁上的圖,一個(gè)紅色按鈕,體現(xiàn)了一鍵可得的設(shè)計(jì)哲學(xué)。
當(dāng)然這種對(duì)比略顯夸張,但良好的封裝的卻可以屏蔽掉不必要的細(xì)節(jié),極大節(jié)省開發(fā)者的精力。
4 何談繼承?
“尋找別人已經(jīng)走過的路”(Find a path that others have already traveled)
我們?cè)诮鉀Q問題或?qū)崿F(xiàn)目標(biāo)時(shí),應(yīng)當(dāng)尋找已經(jīng)有人成功探索過的方法和經(jīng)驗(yàn)。通過借鑒他人的經(jīng)驗(yàn),我們可以避免重復(fù)的探索和錯(cuò)誤,并更有效地達(dá)到目標(biāo)。
文章來源:http://www.zghlxwxcb.cn/news/detail-657482.html
以操作系統(tǒng)為例,它將處理器抽象為進(jìn)程/線程、將主存抽象為內(nèi)存管理、將磁盤抽象為文件系統(tǒng),我們可以借鑒/復(fù)用操作系統(tǒng)中的這些組件,而不必自行開發(fā)。文章來源地址http://www.zghlxwxcb.cn/news/detail-657482.html
到了這里,關(guān)于嵌入式開發(fā)中的抽象、封裝與繼承的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!