国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux系統(tǒng)下imx6ull QT編程—— C++數(shù)據(jù)封裝與數(shù)據(jù)抽象(八)

這篇具有很好參考價(jià)值的文章主要介紹了Linux系統(tǒng)下imx6ull QT編程—— C++數(shù)據(jù)封裝與數(shù)據(jù)抽象(八)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Linux QT編程


前言

封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個(gè)概念,這樣能避免受到外界的干擾和誤用,從而確保了安全。數(shù)據(jù)封裝引申出了另一個(gè)重要的 OOP 概念,即數(shù)據(jù)隱藏。數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機(jī)制,數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實(shí)現(xiàn)細(xì)節(jié)隱藏起來的機(jī)制,C++ 通過創(chuàng)建類來支持封裝和數(shù)據(jù)隱藏(public、protected、private)。

在 C++程序中,任何帶有公有和私有成員的類都可以作為數(shù)據(jù)封裝和數(shù)據(jù)抽象的實(shí)例。通常情況下,我們都會(huì)設(shè)置類成員狀態(tài)為私有(private),除非我們真的需要將其暴露,這樣才能保證良好的封裝性。這通常應(yīng)用于數(shù)據(jù)成員,但它同樣適用于所有成員,包括虛函數(shù)。

一、數(shù)據(jù)封裝

是以狗類為例,增加一個(gè)食物的方法 addFood(int number)。將獲得食物的方法設(shè)定在 public 下,這樣 addFood(int number)方法就暴露出來了,也就是對外的接口。然后我們設(shè)置狗類的私有成員(private)食物的份數(shù) total。

然后我們還寫一個(gè)公開的方法 getFood()在 public 下,通過 getFood()來打印出小狗總共獲得了幾份食物。
新建一個(gè)目錄 10_encapsulation_example,編輯一個(gè) 10_encapsulation_example.cpp 內(nèi)容如下。

1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 class Dog
6 {
7 public:
8 string name;
9 
10 Dog(int i = 0)
11 {
12 total = i;
13 }
14 
15 void addFood(int number) {
16 total = total + number;
17 }
18 
19 int getFood() {
20 return total;
21 }
22 private:
23 int total;
24 };
25
26
27 int main()
28 {
29 Dog dog;
30 
31 dog.name = "旺財(cái)";
32 
33 dog.addFood(3);
34 dog.addFood(2);
35 
36 cout<<dog.name<<"總共獲得了"<<dog.getFood()<<"份食物"<<endl;
37 
38 return 0;
39 }

第 10 至第 13 行,在構(gòu)造函數(shù)里初始化 total 的數(shù)量,不初始化 total 的數(shù)量默認(rèn)是隨 int 類型的數(shù)。所以我們需要在構(gòu)造函數(shù)里初始化,也體現(xiàn)了構(gòu)造函數(shù)的功能,一般是在構(gòu)造函數(shù)里初始化。不要在類內(nèi)直接賦值初始化。
第 15 至 17 行,addFood(int number),在這個(gè)方法里,將獲得的食物份數(shù)賦值給 total。
第 19 至 21,getFood(),在這個(gè)方法里,將返回食物的總份數(shù)。通過調(diào)用這個(gè)方法,即可訪問私有成員的 total 總數(shù)。
第 33 和 34 行,添加食物的份數(shù)。
第 36 行,打印食物的總份數(shù)。

然后我們編譯運(yùn)行
Linux系統(tǒng)下imx6ull QT編程—— C++數(shù)據(jù)封裝與數(shù)據(jù)抽象(八)

二、數(shù)據(jù)抽象

數(shù)據(jù)抽象是指,只向外界提供關(guān)鍵信息,并隱藏其后臺(tái)的實(shí)現(xiàn)細(xì)節(jié),即只表現(xiàn)必要的信息而不呈現(xiàn)細(xì)節(jié)。數(shù)據(jù)抽象是一種依賴于接口和實(shí)現(xiàn)分離的編程(設(shè)計(jì))技術(shù)。
數(shù)據(jù)抽象的好處:文章來源地址http://www.zghlxwxcb.cn/news/detail-466420.html

  1. 類的內(nèi)部受到保護(hù),不會(huì)因無意的用戶級錯(cuò)誤導(dǎo)致對象狀態(tài)受損。
  2. 類實(shí)現(xiàn)可能隨著時(shí)間的推移而發(fā)生變化,以便應(yīng)對不斷變化的需求,或者應(yīng)對那些要求不改變用戶級代碼的錯(cuò)誤報(bào)告。
    舉個(gè)簡單的例子,比如我們生活中的手機(jī)。手機(jī)可以拍照、聽音樂、收音等等。這些都是手機(jī)上的功能,用戶可以直接使用。但是拍照的功能是如何實(shí)現(xiàn)的,是怎么通過攝像頭取像然后怎么在屏幕上顯示的過程,作為用戶是不需要知道的。也就是暴露的不用太徹底,用戶也不必須知道這種功能是如何實(shí)現(xiàn)的,只需要知道如何拍照即可。就 C++ 編程而言,C++ 類為數(shù)據(jù)抽象提供了可能。它們向外界提供了大量用于操作對象
    數(shù)據(jù)的公共方法,也就是說,外界實(shí)際上并不清楚類的內(nèi)部實(shí)現(xiàn)。其實(shí)像 cout 這個(gè)對象就是一個(gè)公共的接口,我們不必要知道 cout 是如何在屏幕上顯示內(nèi)容的。cout 已經(jīng)在底層實(shí)現(xiàn)好了。

到了這里,關(guān)于Linux系統(tǒng)下imx6ull QT編程—— C++數(shù)據(jù)封裝與數(shù)據(jù)抽象(八)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于IMX6ULL的AP3216C的QT動(dòng)態(tài)數(shù)據(jù)曲線圖顯示

    基于IMX6ULL的AP3216C的QT動(dòng)態(tài)數(shù)據(jù)曲線圖顯示

    前言: 本文為手把手教學(xué) Linux+QT 的典型基礎(chǔ)項(xiàng)目 AP3216C 的數(shù)據(jù)折線圖顯示,項(xiàng)目使用正點(diǎn)原子的 IMX6ULL ?阿爾法( Cortex-A7 系列)開發(fā)板。項(xiàng)目需要實(shí)現(xiàn) AP3216C 在 Linux 系統(tǒng)下的驅(qū)動(dòng),使用 QT 設(shè)計(jì) AP3216C 的數(shù)據(jù)顯示頁面作為項(xiàng)目的應(yīng)用層。該項(xiàng)目屬于非常簡單的入門級項(xiàng)目,核心

    2024年02月16日
    瀏覽(35)
  • [imx6ull]SPI接口編程-回環(huán)測試

    [imx6ull]SPI接口編程-回環(huán)測試

    SPI 是串行外設(shè)接口( Serial Peripheral Interface )的縮寫。是 Motorola 公司推出的一種同步串行接口技術(shù),是一種高速的,全雙工,同步的通信總線。SPI通常由一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備組成。主設(shè)備選擇一個(gè)從設(shè)備進(jìn)行同步通信,以完成數(shù)據(jù)的交換。SPI通信采用環(huán)形結(jié)構(gòu),至少

    2024年02月12日
    瀏覽(16)
  • 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】08.IMX6ULL通過GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED

    【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】08.IMX6ULL通過GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED

    通過GPIO子系統(tǒng)函數(shù)點(diǎn)亮LED 1、GPIO子系統(tǒng)函數(shù) 1.1 確定 led 的GPIO標(biāo)號,查看內(nèi)核中的gpiochip 查看 gpiochip ,以正點(diǎn)原子的IMX6ULL阿爾法開發(fā)板為例 查看原理圖,發(fā)現(xiàn)led接的引腳是 GPIO1_IO3,對應(yīng) /sys/kernel/debug/gpio 中的 gpiochip0 組,gpiochip0 組從0開始算起, 所以 GPIO1_IO3 對應(yīng)的標(biāo)號就

    2024年02月10日
    瀏覽(25)
  • 基于IMX6ULL的智能車載終端項(xiàng)目(代碼開源)_imx6ull 開源 linux 項(xiàng)目 車載終端

    基于IMX6ULL的智能車載終端項(xiàng)目(代碼開源)_imx6ull 開源 linux 項(xiàng)目 車載終端

    1.4 車載終端:雜項(xiàng)功能 車載終端是一個(gè)非常復(fù)雜且常用的裝置,隨著電車與自動(dòng)駕駛技術(shù)的不斷升級迭代,需求也與日俱增!我們往往需要在終端上附加許許多多其他的功能,比如:智能家居聯(lián)動(dòng)、車內(nèi)環(huán)境監(jiān)測、天氣預(yù)報(bào)與網(wǎng)上瀏覽等! 作者強(qiáng)調(diào):考慮到篇幅有限,作者

    2024年04月08日
    瀏覽(35)
  • 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】14.Linux驅(qū)動(dòng)開發(fā) - GPIO中斷(設(shè)備樹 + GPIO子系統(tǒng))

    【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】14.Linux驅(qū)動(dòng)開發(fā) - GPIO中斷(設(shè)備樹 + GPIO子系統(tǒng))

    代碼自取 【14.key_tree_pinctrl_gpios_interrupt】: https://gitee.com/chenshao777/imx6-ull_-drivers 主要接口函數(shù): 1. of_gpio_count (獲得GPIO的數(shù)量) 2. kzalloc (向內(nèi)核申請空間) 3. of_get_gpio (獲取GPIO子系統(tǒng)標(biāo)號) 4. gpio_to_irq (根據(jù)GPIO子系統(tǒng)標(biāo)號得到軟件中斷號) 5. request_irq (根據(jù)軟件中斷號

    2024年02月12日
    瀏覽(35)
  • IMX6ULL 自學(xué)筆記(Makefile 以及 系統(tǒng)移植)

    IMX6ULL 自學(xué)筆記(Makefile 以及 系統(tǒng)移植)

    1、語法 目標(biāo)…… : 依賴文件集合…… 命令 1 命令 2 …… 例子: 生成main可執(zhí)行文件需要main.o input.o calcu.o,命令是gcc -o main main.o input.o calcu.o 2、變量 Makefile中的變量只能是字符串 例 :將object賦值 main.o input.o calcu.o,變量引用的時(shí)候要加$() 3、幾種賦值運(yùn)算符 “=” :不一定要

    2024年02月11日
    瀏覽(24)
  • IMX6ULL系統(tǒng)移植篇-鏡像燒寫方法

    IMX6ULL系統(tǒng)移植篇-鏡像燒寫方法

    本文我們就來學(xué)習(xí) :windows 系統(tǒng)下燒錄系統(tǒng)的方法。燒寫的主要文件 包括: uboot,內(nèi)核鏡像,設(shè)備樹文件,文件系統(tǒng)。 學(xué)習(xí)如何使用 NXP 官方提供的 MfgTool 工具通過 USB OTG 口來 燒寫系統(tǒng)。 (1)從開發(fā)板上拔下 SD卡。 (2)硬件連接 首先,正點(diǎn)原子的阿爾法開發(fā)板需要一個(gè)

    2024年02月11日
    瀏覽(26)
  • 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】21.Linux驅(qū)動(dòng)之PWM子系統(tǒng)(以SG90舵機(jī)為例)

    【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】21.Linux驅(qū)動(dòng)之PWM子系統(tǒng)(以SG90舵機(jī)為例)

    首先在 imx6ull.dtsi 文件中已經(jīng)幫我們定義好了一些pwm的設(shè)備樹節(jié)點(diǎn),這里以pwm2為例 我們要在設(shè)備樹(.dts)文件中引用和使能該節(jié)點(diǎn),同時(shí)指定好pwm映射到的GPIO引腳(即pinctrl子系統(tǒng),我這里映射到了GPIO1_9上) 使用pwm 只需要在設(shè)備樹節(jié)點(diǎn)中添加兩條屬性信息,如下所示 pwms :屬

    2024年02月12日
    瀏覽(90)
  • 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】11.Linux之SPI驅(qū)動(dòng)

    【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】11.Linux之SPI驅(qū)動(dòng)

    參考:驅(qū)動(dòng)程序開發(fā):SPI設(shè)備驅(qū)動(dòng)_spi驅(qū)動(dòng)_鄧家文007的博客-CSDN博客 目錄 一、SPI驅(qū)動(dòng)簡介 1.1 SPI架構(gòu)概述 1.2 SPI適配器(控制器)數(shù)據(jù)結(jié)構(gòu) 1.2 SPI設(shè)備數(shù)據(jù)結(jié)構(gòu) 1.3 SIP設(shè)備驅(qū)動(dòng) 1.4 接口函數(shù) ?二、SPI驅(qū)動(dòng)模板 SPI驅(qū)動(dòng)框架和I2C驅(qū)動(dòng)框架是十分相似的,不同的是因?yàn)镾PI是通過片選引

    2024年02月11日
    瀏覽(32)
  • 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】12.Linux驅(qū)動(dòng)之設(shè)備樹

    【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】12.Linux驅(qū)動(dòng)之設(shè)備樹

    承接上一篇博客 【IMX6ULL驅(qū)動(dòng)開發(fā)學(xué)習(xí)】11.驅(qū)動(dòng)設(shè)計(jì)之面向?qū)ο骭分層思想(學(xué)習(xí)設(shè)備樹過渡部分) 代碼獲取: https://gitee.com/chenshao777/imx6-ull_-drivers 我后面將三個(gè)層合并了(實(shí)際上只有前兩層),合并成一個(gè)dev_drv.c了,暫時(shí)沒有加GPIO操作,只是個(gè)框架 合并前的代碼在 11.butt

    2024年02月13日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包