對于許多軟件開發(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:
聲明將會發(fā)生在 stack.h 文件中,允許模塊的用戶使用 StackPtr_t ,它是指向 StackStruct_t 的指針。從用戶的角度來看, StackStruct_t 的成員的細(xì)節(jié)是完全隱藏的。任何與 StackPtr_t 的交互都必須使用預(yù)定義的操作完成。
步驟2 -定義可對數(shù)據(jù)執(zhí)行的操作
可以在ADT上執(zhí)行的操作完全取決于ADT的用途。例如,堆棧的ADT可能包括諸如初始化,推送數(shù)據(jù),彈出數(shù)據(jù),銷毀堆棧,檢查堆棧是否已滿,檢查堆棧是否為空等操作,等等。請記住,使用ADT與開發(fā)人員通常操作數(shù)據(jù)的方式完全不同。通常,開發(fā)人員會定義數(shù)據(jù)并編寫直接操作數(shù)據(jù)的代碼。使用抽象數(shù)據(jù)類型,開發(fā)人員創(chuàng)建一個(gè)接口,在這個(gè)接口中間接修改數(shù)據(jù)。
步驟3 -填寫接口規(guī)范
接口規(guī)范是可以在ADT上執(zhí)行的所有公共操作的函數(shù)原型。接口規(guī)范應(yīng)位于ADT頭文件中。回到堆棧示例,開發(fā)人員可能會發(fā)現(xiàn)接口規(guī)范如下所示:
步驟4 -創(chuàng)建實(shí)現(xiàn)
ADT的實(shí)現(xiàn)可能會從一個(gè)應(yīng)用程序更改為下一個(gè)應(yīng)用程序。事實(shí)上,ADT實(shí)施可能會在項(xiàng)目開發(fā)期間發(fā)生變化。這是使用ADT的一個(gè)很好的方面:實(shí)現(xiàn)細(xì)節(jié)位于源模塊中,并且從高級應(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ā)人員會發(fā)現(xiàn),他們能夠快速適應(yīng)不斷變化的需求并節(jié)省時(shí)間,而無需通過代碼搜索晦澀的數(shù)據(jù)引用。
-
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13663 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21833 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27938 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43178
發(fā)布評論請先 登錄
相關(guān)推薦
C語言數(shù)據(jù)類型詳解
![<b class='flag-5'>C</b>語言<b class='flag-5'>數(shù)據(jù)類型</b>詳解](https://file1.elecfans.com/web2/M00/AC/0A/wKgaomVDGCqARVwHAABRlk-dUg8506.jpg)
Python中常用的數(shù)據(jù)類型
請問c5515中數(shù)據(jù)類型定義是怎么樣的?
C程序的運(yùn)行環(huán)境和C語言的數(shù)據(jù)類型
51單片機(jī)中的數(shù)據(jù)類型解析
![51單片機(jī)<b class='flag-5'>中</b>的<b class='flag-5'>數(shù)據(jù)類型</b>解析](https://file1.elecfans.com//web2/M00/A6/E6/wKgZomUMQSSAJVOnAAAamzHN2CY563.jpg)
Oracle數(shù)據(jù)類型與表的管理
電腦卡怎么辦簡單步驟
C語言的數(shù)據(jù)儲存與數(shù)據(jù)類型及類型轉(zhuǎn)換的詳細(xì)資料說明
五個(gè)簡單步驟掌握TensorFlow中的Tensor
使用LTpowerCAD在五個(gè)簡單步驟中設(shè)計(jì)電源
![使用LTpowerCAD<b class='flag-5'>在</b>五<b class='flag-5'>個(gè)</b><b class='flag-5'>簡單步驟</b><b class='flag-5'>中</b>設(shè)計(jì)電源](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
重視變量的數(shù)據(jù)類型
![重視變量的<b class='flag-5'>數(shù)據(jù)類型</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言的數(shù)據(jù)類型-2
![<b class='flag-5'>C</b>語言的<b class='flag-5'>數(shù)據(jù)類型</b>-2](https://file.elecfans.com/web2/M00/92/C6/poYBAGP0ZRyADmSaAAAauKdGrW4934.jpg)
ARRAY 數(shù)據(jù)類型的變量
C語言數(shù)據(jù)類型有哪些
![<b class='flag-5'>C</b>語言<b class='flag-5'>數(shù)據(jù)類型</b>有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
評論