www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式大雜燴
[導(dǎo)讀]來源:菜鳥教程、立功科技、百度百科 面向?qū)ο?&面向過程 1、什么是面向過程編程? 比較官方的解釋就是:“面向過程”(Procedure Oriented)是一種以過程為中心的編程思想。這些都是以什么正在發(fā)生為主要目標(biāo)進行編程,不同于面向?qū)ο蟮氖钦l在受影響。C語言就

來源:菜鳥教程、立功科技、百度百科

面向?qū)ο?/a>&&面向過程

1、什么是面向過程編程?

比較官方的解釋就是:“面向過程”(Procedure Oriented)是一種以過程為中心的編程思想。這些都是以什么正在發(fā)生為主要目標(biāo)進行編程,不同于面向?qū)ο蟮氖钦l在受影響。C語言就是一門面向過程的語言。

2、什么是面向?qū)ο缶幊蹋?/h3>

比較官方的解釋就是:面向?qū)ο蟪绦蛟O(shè)計(Object Oriented Programming,OOP)是一種計算機編程架構(gòu)。OOP的一條基本原則是計算機程序由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。

OOP達到了軟件工程的三個主要目標(biāo):重用性、靈活性和擴展性。OOP=對象+類+繼承+多態(tài)+消息,其中核心概念是類和對象。C++就是一門面向?qū)ο蟮恼Z言。

3、例子

假如要乘出租車去機場。

面向過程的方式是:告訴司機,按照啟動、右轉(zhuǎn)、左轉(zhuǎn)、停止等單獨的接口去機場。這種方式需要乘客對自己的行為負(fù)責(zé),乘客需要知道每個城市去機場的路線。

面向?qū)ο蟮姆绞绞牵?/strong>告訴司機,請載我去機場。顯然這種方法比面向過程的方法要容易得多。

在面向過程編程時,由于主程序承擔(dān)的責(zé)任太多,要確保一切正確工作,還要協(xié)調(diào)各個函數(shù)并控制它們的先后順序,因此經(jīng)常會產(chǎn)生非常復(fù)雜的代碼。

很多時候變化是不可避免的,而功能分解法(面向過程思想)卻又無法應(yīng)對可能出現(xiàn)的變化。一旦修改代碼,則bug越來越多。

因此,面對復(fù)雜的軟件開發(fā)時,主程序不能做太多的事情,必須通過分離關(guān)注點進行職責(zé)轉(zhuǎn)移。

在上面的例子中,盡管具體實現(xiàn)在廣州、北京或上海等不同城市中是不同的,但在任何城市都可以這么說,因為司機知道怎么去機場,這就是職責(zé)轉(zhuǎn)移

面向?qū)ο蟪绦驅(qū)嵗?/span>

因為C++是一門面向?qū)ο蟮恼Z言,所以C++ 完全支持面向?qū)ο蟮某绦蛟O(shè)計,包括面向?qū)ο?/a>開發(fā)的四大特性:封裝、抽象、繼承、多態(tài)。

1、一些基本概念

  • 類 - 類可以定義為描述對象行為/狀態(tài)的模板/藍(lán)圖。
  • 對象 - 對象具有狀態(tài)和行為。例如:一只狗的狀態(tài) - 顏色、名稱、品種,行為 - 搖動、叫喚、吃。對象是類的實例。
  • 方法 - 從基本上說,一個方法表示一種行為。一個類可以包含多個方法??梢栽诜椒ㄖ袑懭脒壿嫛⒉僮鲾?shù)據(jù)以及執(zhí)行所有的動作。

2、類 && 對象

代碼:

#include <iostream>
 
using namespace std;

/* Box類 */ 
class Box
{

   public:
      double length;   // 長度
      double breadth;  // 寬度
      double height;   // 高度
};
 
int main( )
{
   Box Box1;             // 聲明 Box1,類型為 Box
   Box Box2;             // 聲明 Box2,類型為 Box
   double volume = 0.0;  // 用于存儲體積
 
   // Box1對象
   Box1.height = 5.0
   Box1.length = 6.0
   Box1.breadth = 7.0;
 
   // Box2對象
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
 
   // box 1 的體積
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的體積:" << volume <<endl;
 
   // box 2 的體積
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Box2 的體積:" << volume <<endl;
   return 0;
}

運行結(jié)果:

3、繼承

當(dāng)創(chuàng)建一個類時,您不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類繼承了一個已有的類的成員即可。這個已有的類稱為基類,新建的類稱為派生類。

繼承代表了 is a 關(guān)系。例如,哺乳動物是動物,狗是哺乳動物,因此,狗是動物,等等。

代碼:

#include <iostream>
 
using namespace std;
 
// 基類
class Shape 
{

   public:
      void setWidth(int w)
      
{
         width = w;
      }
      void setHeight(int h)
      
{
         height = h;
      }
   protected:
      int width;
      int height;
};
 
// 派生類
class Rectangle: public Shape
{
   public:
      int getArea()
      

         return (width * height); 
      }
};
 
int main(void)
{
   Rectangle Rect;
 
   Rect.setWidth(5);
   Rect.setHeight(7);
 
   // 輸出對象的面積
   cout << "Total area: " << Rect.getArea() << endl;
 
   return 0;
}

運行結(jié)果:


這里只是演示了最基本的一個繼承的例子,關(guān)于C++繼承相關(guān)的還有公有繼承(public)、保護繼承(protected)、私有繼承(private)、多繼承等知識點,大家可以自己去學(xué)習(xí)。

4、多態(tài)

多態(tài)按字面的意思就是多種形態(tài)。C++ 多態(tài)意味著調(diào)用成員函數(shù)時,會根據(jù)調(diào)用函數(shù)的對象的類型來執(zhí)行不同的函數(shù)。

下面的實例中,基類 Shape 被派生為兩個類,如下所示:

#include <iostream> 
using namespace std;

// 基類  
class Shape {
   protected:
      int width, height;
   public:
      Shape( int a=0int b=0)
      {
         width = a;
         height = b;
      }
      virtual int area()
      
{
         cout << "Parent class area :" <<endl;
         return 0;
      }
};

// 派生類Rectangle
class Rectangle: public Shape{
   public:
      Rectangle( int a=0int b=0):Shape(a, b) { }
      int area ()
      

         cout << "Rectangle class area :" <<endl;
         return (width * height); 
      }
};

// 派生類Triangle
class Triangle: public Shape{
   public:
      Triangle( int a=0int b=0):Shape(a, b) { }
      int area ()
      

         cout << "Triangle class area :" <<endl;
         return (width * height / 2); 
      }
};

// 程序的主函數(shù)
int main( )
{
   Shape *shape;
   Rectangle rec(10,7);
   Triangle  tri(10,5);
 
   // 存儲矩形的地址
   shape = &rec;
   // 調(diào)用矩形的求面積函數(shù) area
   shape->area();
 
   // 存儲三角形的地址
   shape = &tri;
   // 調(diào)用三角形的求面積函數(shù) area
   shape->area();
   
   return 0;
}

運行結(jié)果:

5、抽象

數(shù)據(jù)抽象是指,只向外界提供關(guān)鍵信息,并隱藏其后臺的實現(xiàn)細(xì)節(jié),即只表現(xiàn)必要的信息而不呈現(xiàn)細(xì)節(jié)。

讓我們舉一個現(xiàn)實生活中的真實例子,比如一臺電視機,您可以打開和關(guān)閉、切換頻道、調(diào)整音量、添加外部組件(如喇叭、錄像機、DVD 播放器),但是您不知道它的內(nèi)部實現(xiàn)細(xì)節(jié),也就是說,您并不知道它是如何通過纜線接收信號,如何轉(zhuǎn)換信號,并最終顯示在屏幕上。

因此,我們可以說電視把它的內(nèi)部實現(xiàn)和外部接口分離開了,您無需知道它的內(nèi)部實現(xiàn)原理,直接通過它的外部接口(比如電源按鈕、遙控器、聲量控制器)就可以操控電視。

代碼:

#include <iostream>
using namespace std;
 
class Adder{
   public:
      // 構(gòu)造函數(shù)
      Adder(int i = 0)
      {
        total = i;
      }
      // 對外的接口
      void addNum(int number)
      
{
          total += number;
      }
      // 對外的接口
      int getTotal()
      
{
          return total;
      };
   private:
      // 對外隱藏的數(shù)據(jù)
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);
 
   cout << "Total " << a.getTotal() <<endl;
   return 0;
}


6、封裝

數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機制,數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實現(xiàn)細(xì)節(jié)隱藏起來的機制。

class Box
{

   public:
      double getVolume(void)
      
{
         return length * breadth * height;
      }
   private:
      double length;      // 長度
      double breadth;     // 寬度
      double height;      // 高度
};

變量 length、breadth 和 height 都是私有的(private)。這意味著它們只能被 Box 類中的其他成員訪問,而不能被程序中其他部分訪問。這是實現(xiàn)封裝的一種方式。

猜你喜歡

C語言、嵌入式重點知識:回調(diào)函數(shù)

深度實踐嵌入式調(diào)試神器MicroLab

空間換時間,查表法的經(jīng)典例子


免責(zé)聲明:本文來源網(wǎng)絡(luò),免費傳達知識,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請聯(lián)系我進行刪除。

為了便于公眾號讀者交流學(xué)習(xí),小編創(chuàng)建了相關(guān)相關(guān)交流群??游挥邢?,感興趣的朋友可以掃碼下方二維碼加我微信,由我邀請入群:

歡迎大家進群交流、共同進步。同時,我也會關(guān)注一些大家問的一些問題,從中挑選一些具有代表性的、并且在我知識范圍內(nèi)的問題寫出相關(guān)文章做分享。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉