對(duì)于許多軟件開發(fā)人員來說,面向?qū)ο?a target="_blank">編程是一個(gè)很好的工具。遺憾的是,使用過程C編程語言的嵌入式軟件工程師在許多現(xiàn)代編程語言功能上都失敗了。抽象數(shù)據(jù)類型(通常簡稱為ADT)是數(shù)據(jù)類型,其實(shí)現(xiàn)細(xì)節(jié)隱藏在數(shù)據(jù)結(jié)構(gòu)的用戶視圖中,但ADT可以使用五個(gè)簡單步驟在C中開發(fā)。
步驟1 -定義抽象數(shù)據(jù)類型
C中的ADT通常被定義為指向結(jié)構(gòu)的指針。頭文件包含沒有任何底層細(xì)節(jié)的ADT聲明,由實(shí)現(xiàn)者完全聲明源模塊中的ADT。 ADT的示例包括 StackPtr_t , NodePtr_t 或 QueuePtr_t 等等。下面的示例顯示了開發(fā)人員如何聲明ADT:
聲明將會(huì)發(fā)生在 stack.h 文件中,允許模塊的用戶使用 StackPtr_t ,它是指向 StackStruct_t 的指針。從用戶的角度來看, StackStruct_t 的成員的細(xì)節(jié)是完全隱藏的。任何與 StackPtr_t 的交互都必須使用預(yù)定義的操作完成。
步驟2 -定義可對(duì)數(shù)據(jù)執(zhí)行的操作
可以在ADT上執(zhí)行的操作完全取決于ADT的用途。例如,堆棧的ADT可能包括諸如初始化,推送數(shù)據(jù),彈出數(shù)據(jù),銷毀堆棧,檢查堆棧是否已滿,檢查堆棧是否為空等操作,等等。請(qǐng)記住,使用ADT與開發(fā)人員通常操作數(shù)據(jù)的方式完全不同。通常,開發(fā)人員會(huì)定義數(shù)據(jù)并編寫直接操作數(shù)據(jù)的代碼。使用抽象數(shù)據(jù)類型,開發(fā)人員創(chuàng)建一個(gè)接口,在這個(gè)接口中間接修改數(shù)據(jù)。
步驟3 -填寫接口規(guī)范
接口規(guī)范是可以在ADT上執(zhí)行的所有公共操作的函數(shù)原型。接口規(guī)范應(yīng)位于ADT頭文件中?;氐蕉褩J纠?,開發(fā)人員可能會(huì)發(fā)現(xiàn)接口規(guī)范如下所示:
步驟4 -創(chuàng)建實(shí)現(xiàn)
ADT的實(shí)現(xiàn)可能會(huì)從一個(gè)應(yīng)用程序更改為下一個(gè)應(yīng)用程序。事實(shí)上,ADT實(shí)施可能會(huì)在項(xiàng)目開發(fā)期間發(fā)生變化。這是使用ADT的一個(gè)很好的方面:實(shí)現(xiàn)細(xì)節(jié)位于源模塊中,并且從高級(jí)應(yīng)用程序開發(fā)人員的視圖中“隱藏”。因此,ADT的使用為開發(fā)者提供了高度的靈活性??梢栽谙旅嬲业蕉褩?shí)現(xiàn)的哪些部分的示例:
步驟5 -將抽象數(shù)據(jù)類型放入測試
最后,一旦開發(fā)人員指定并實(shí)現(xiàn)了ADT,就可以通過編寫一些應(yīng)用程序代碼來進(jìn)行測試。應(yīng)用程序代碼應(yīng)該聲明一個(gè)ADT,然后通過使用接口規(guī)范來操縱數(shù)據(jù)的內(nèi)容。初始化ADT并與其數(shù)據(jù)交互的示例如下所示:
結(jié)論
C中的ADT通常分為三個(gè)不同的部分:應(yīng)用程序,規(guī)范和實(shí)現(xiàn)。 ADT的目的是隱藏?cái)?shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)細(xì)節(jié),從而改進(jìn)軟件維護(hù),重用和可移植性。使用ADT的開發(fā)人員會(huì)發(fā)現(xiàn),他們能夠快速適應(yīng)不斷變化的需求并節(jié)省時(shí)間,而無需通過代碼搜索晦澀的數(shù)據(jù)引用。
-
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13637 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21732 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27799 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43080
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論