999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語(yǔ)言的面向?qū)ο髮?shí)現(xiàn)在車燈軟件中的應(yīng)用

2018-02-26 07:53:50于杰
電子技術(shù)與軟件工程 2018年15期
關(guān)鍵詞:單片機(jī)汽車

于杰

摘要

隨著汽車LED前燈的功能越來(lái)越豐富,集成度越來(lái)越高,對(duì)于LED前燈控制器的實(shí)現(xiàn)加入軟件模塊已成為必然,但隨著軟件復(fù)雜程度的提高往往伴隨著系統(tǒng)缺陷數(shù)量的增長(zhǎng)。與面向過(guò)程編程相比,面向?qū)ο缶幊痰姆庋b、多態(tài)和繼承特性降低了軟件開(kāi)發(fā)復(fù)雜度,提升了軟件的可靠性、穩(wěn)定性和擴(kuò)展性。為了降低前燈軟件的復(fù)雜度,可以在資源有限的單片機(jī)中利用C語(yǔ)言實(shí)現(xiàn)面向?qū)ο缶幊蹋越档烷_(kāi)發(fā)難度,提升軟件質(zhì)量

【關(guān)鍵詞】汽車 LED C語(yǔ)言 面向?qū)ο?單片機(jī)

1 引言

車燈作為汽車的外部關(guān)鍵部件,近些年發(fā)展十分迅速,LED車燈應(yīng)用越來(lái)越廣泛,功能越來(lái)越豐富。因?yàn)槌杀镜脑?,在汽車LED前燈中往往使用價(jià)格低廉,資源有限的微控制器,在這類控制器中,一般只能使用面向過(guò)程的C語(yǔ)言進(jìn)行編程。而與面向過(guò)程編程相比,面向?qū)ο缶幊叹哂蟹庋b、多態(tài)和繼承特性,更加容易維護(hù)、復(fù)用和擴(kuò)展。如果能使用面向?qū)ο髮?shí)現(xiàn)LED前燈的軟件系統(tǒng),可以提高整個(gè)系統(tǒng)的可靠性、穩(wěn)定性、可擴(kuò)展性。

本文分析了面向?qū)ο蟮闹饕攸c(diǎn),給出了使用C語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮姆椒ā?/p>

2 面向?qū)ο蟮闹饕攸c(diǎn)及C語(yǔ)言實(shí)現(xiàn)

2.1 封裝

類是面向?qū)ο缶幊汤镒钪匾囊粋€(gè)概念,它是對(duì)現(xiàn)實(shí)世界中具有共同屬性的一類對(duì)象的抽象。類的概念中包含兩部分內(nèi)容:屬性和行為。屬性是對(duì)象擁有的性質(zhì)和狀態(tài),行為是定義在對(duì)象上的一組操作。一個(gè)好的封裝設(shè)計(jì)可以降低軟件設(shè)計(jì)的復(fù)雜性,提升軟件產(chǎn)品質(zhì)量。

C++語(yǔ)言通過(guò)關(guān)鍵詞class定義一個(gè)類,實(shí)現(xiàn)對(duì)一個(gè)對(duì)象屬性和方法的封裝,類的概念相當(dāng)于定義了一個(gè)新的數(shù)據(jù)類型。在C語(yǔ)言中,雖然沒(méi)有類的概念和class關(guān)鍵字,但是可以使用相似的struct來(lái)模擬一個(gè)類,對(duì)于屬性依然使用變量來(lái)定義,對(duì)于方法可以使用函數(shù)指針來(lái)定義。

typedef struct_led

{

void(*Led0n)(struct_pwm_led*this);

void(*LedOff)(struct_pwm_led*this);

}CLed;

對(duì)于定義的函數(shù)指針必須進(jìn)行初始化,指向具體的函數(shù)之后才能使用,這里提供一個(gè)宏來(lái)實(shí)現(xiàn)對(duì)內(nèi)部變量和函數(shù)指針進(jìn)行初始化,其中Led_SetDuty、Led_On均是定義完整的函數(shù)

#define LED GENERATE{\

Led_On,\

Led_Off\

}

CLed led=LED_GENERATE;

led.LedOn(&led);//由于C語(yǔ)言編譯器中不會(huì)為函數(shù)提供this指針,因此這里手工添加

2.2 繼承

汽車LED前燈中,不同型號(hào)的產(chǎn)品間有許多相同或相似的功能,即使是同一產(chǎn)品也會(huì)因?yàn)榻党杀净騼?yōu)化,在不改變功能的情況下更改硬件設(shè)計(jì),因此在汽車LED前燈的軟件產(chǎn)品中,軟件的復(fù)用性就顯得更加重要。在面向?qū)ο缶幊讨校^承是復(fù)用己存在代碼元素的一項(xiàng)重要特性。

在面向?qū)ο缶幊讨?,繼承是復(fù)用己存在代碼元素的一項(xiàng)重要特性,通過(guò)定義一個(gè)繼承自基類的派生類,在不編寫一行代碼的情況下,即可擁有基類的全部特性,在派生類中編寫代碼即可實(shí)現(xiàn)對(duì)己有功能進(jìn)行擴(kuò)展。在C語(yǔ)言的結(jié)構(gòu)體中并沒(méi)有提供繼承的方法,這里我們使用包含的關(guān)系來(lái)模擬面向?qū)ο笾械睦^承,在模擬的派生類中包含基類的對(duì)象,并將其作為模擬派生類的第一個(gè)元素(為了方便使用基類指針訪問(wèn)派生類對(duì)象),即可擁有與繼承相同的特性:

//CLed為己定義的結(jié)構(gòu)體

typedef struct_pwm_led

{

CLed base;

uint32_t pwm_duty;

void(*SetDuty)(struct_pwm_led*this,uint32_t duty):

}CPwmLed;

#define PWMLED GENERATE{\

LED_GENERATE,\

0,\

LED SetDuty\

}

2.3 多態(tài)

汽車LED前燈往往需要在不同的外界條件或點(diǎn)亮?xí)r機(jī)有不同的點(diǎn)亮行為,使用面向過(guò)程的方法,則需要針對(duì)每一種點(diǎn)亮模式定義不同的接口函數(shù),在應(yīng)用中在根據(jù)當(dāng)前條件進(jìn)行調(diào)用,當(dāng)點(diǎn)亮模式改變或增加新的模式時(shí),我們就需要對(duì)接口函數(shù)和調(diào)用進(jìn)行刪減更改,這無(wú)形中降低了軟件的可擴(kuò)展性,在每次修改中更容易引入新的bug。

在面向?qū)ο蟮脑O(shè)計(jì)中,多態(tài)是指一組相關(guān)的類對(duì)象具有相同的函數(shù)原型,但具有不同的函數(shù)行為。C++語(yǔ)言中使用虛函數(shù)實(shí)現(xiàn)多態(tài)的功能,但C語(yǔ)言中雖然沒(méi)有虛函數(shù)這樣的特性,但可以利用函數(shù)指針實(shí)現(xiàn)多態(tài)的功能。首先通過(guò)定義函數(shù)指針抽象出統(tǒng)一的函數(shù)接口,在將函數(shù)指針指向不同的函數(shù)實(shí)現(xiàn),這樣當(dāng)調(diào)用函數(shù)指針時(shí)就會(huì)表現(xiàn)出不同的行為:

//CLed為己定義的結(jié)構(gòu)體

typedefstruct_bin_led

{

CLed led;

}CB1nLed;

//通過(guò)宏對(duì)基類中的函數(shù)指針進(jìn)行重新定義

#define BLNLED_GENERATE{\

{B1nLed_On}\

}

CB1nLed bln_led=BLNLED_GENERATE;

CLed*pLed=(CLed*)(&bln_led);

pLed->LedOn(pLed);

3 結(jié)論

通過(guò)使用C語(yǔ)言模擬出面向?qū)ο笳Z(yǔ)言的特點(diǎn),使得軟件系統(tǒng)的模塊化設(shè)計(jì)更加容易的實(shí)現(xiàn)。高內(nèi)聚低耦合的模塊設(shè)計(jì)提高軟件系統(tǒng)代碼的重復(fù)利用率,方便了軟件系統(tǒng)的維護(hù)和修改,便于調(diào)試排錯(cuò),易于擴(kuò)展,進(jìn)一步降低了軟件復(fù)雜度,提高了系統(tǒng)的健壯性、靈活性、可靠性。在獲得面向?qū)ο缶幊痰膬?yōu)點(diǎn)的同時(shí),依然保留著C語(yǔ)言高效的特點(diǎn),適合在資源有限的單片機(jī)中應(yīng)用。

參考文獻(xiàn)

[1]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2005.

[2]錢能.C++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,1999.

[3]章遠(yuǎn)陽(yáng),楊芙清,邵維中.C++語(yǔ)言的面向?qū)ο筇匦苑治鯷J].計(jì)算機(jī)工程與應(yīng)用,1992(09).

[4]劉宇,王煒,張見(jiàn)威.C++語(yǔ)言面向?qū)ο髾C(jī)制的底層實(shí)現(xiàn)[J].華南師范大學(xué)學(xué)報(bào),1998(04).

[5]陳飛,陳啟安.面向?qū)ο蟮那度胧较到y(tǒng)開(kāi)發(fā)技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005.

猜你喜歡
單片機(jī)汽車
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
2019年8月汽車產(chǎn)銷環(huán)比增長(zhǎng) 同比仍呈下降
汽車與安全(2019年9期)2019-11-22 09:48:03
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
汽車的“出賣”
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
汽車們的喜怒哀樂(lè)
Microchip推出兩個(gè)全新PIC單片機(jī)系列
3D 打印汽車等
決策探索(2014年21期)2014-11-25 12:29:50
主站蜘蛛池模板: 欧美中文字幕无线码视频| 美美女高清毛片视频免费观看| 日韩第九页| 伊人久久影视| 日本欧美成人免费| 六月婷婷激情综合| 久久永久视频| 亚洲精品国产日韩无码AV永久免费网| 亚洲国产精品一区二区第一页免 | 日本www在线视频| 日韩视频福利| 日本久久网站| 网友自拍视频精品区| 免费国产无遮挡又黄又爽| 国产熟睡乱子伦视频网站| 国产极品美女在线观看| 欧美国产综合色视频| 亚洲三级色| 国产三级韩国三级理| 欧美人在线一区二区三区| 国产成人精品一区二区免费看京| 亚洲第一成年免费网站| 久久77777| 中国国产一级毛片| 欧美午夜网| 国产精品精品视频| 无码国内精品人妻少妇蜜桃视频| 精品国产美女福到在线不卡f| 国产精品欧美亚洲韩国日本不卡| 亚洲免费黄色网| 久久99国产乱子伦精品免| 国产69精品久久久久妇女| 91无码视频在线观看| 亚洲浓毛av| 亚洲国产精品无码久久一线| 九九视频免费看| 色噜噜久久| 国产激情国语对白普通话| 亚洲日本在线免费观看| 亚洲二三区| 欧美精品成人一区二区视频一| 亚洲首页在线观看| a网站在线观看| 亚洲色图另类| 青青操国产| 欧美一区中文字幕| 免费女人18毛片a级毛片视频| 国产毛片基地| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲国产欧美国产综合久久| 视频二区中文无码| 欧美综合成人| 亚洲av无码久久无遮挡| 日本尹人综合香蕉在线观看| 玖玖精品在线| 国产精品污污在线观看网站| 亚洲第一视频网站| 999精品在线视频| 欧美黄网站免费观看| 日韩黄色大片免费看| 欧美福利在线| 国产第八页| 一区二区无码在线视频| 99视频在线免费| 国产三级韩国三级理| 精品色综合| 日韩第九页| 老色鬼欧美精品| 亚洲精品成人福利在线电影| 91网红精品在线观看| 亚洲大学生视频在线播放| 18禁影院亚洲专区| 自慰高潮喷白浆在线观看| 国产永久无码观看在线| 人妻无码中文字幕第一区| 亚洲国产精品国自产拍A| 欧美无专区| 精品自窥自偷在线看| 伊人激情久久综合中文字幕| 欧美一级在线看| 草逼视频国产| 亚洲人成网站在线观看播放不卡|