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

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

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

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

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

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

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

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

3、例子

假如要乘出租車去機(jī)場(chǎng)。

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

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

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

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

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

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

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

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

1、一些基本概念

  • 類 - 類可以定義為描述對(duì)象行為/狀態(tài)的模板/藍(lán)圖。
  • 對(duì)象 - 對(duì)象具有狀態(tài)和行為。例如:一只狗的狀態(tài) - 顏色、名稱、品種,行為 - 搖動(dòng)、叫喚、吃。對(duì)象是類的實(shí)例。
  • 方法 - 從基本上說,一個(gè)方法表示一種行為。一個(gè)類可以包含多個(gè)方法。可以在方法中寫入邏輯、操作數(shù)據(jù)以及執(zhí)行所有的動(dòng)作。

2、類 && 對(duì)象

代碼:

#include <iostream>
 
using namespace std;

/* Box類 */ 
class Box
{

   public:
      double length;   // 長(zhǎng)度
      double breadth;  // 寬度
      double height;   // 高度
};
 
int main( )
{
   Box Box1;             // 聲明 Box1,類型為 Box
   Box Box2;             // 聲明 Box2,類型為 Box
   double volume = 0.0;  // 用于存儲(chǔ)體積
 
   // Box1對(duì)象
   Box1.height = 5.0
   Box1.length = 6.0
   Box1.breadth = 7.0;
 
   // Box2對(duì)象
   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;
}

運(yùn)行結(jié)果:

3、繼承

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

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

代碼:

#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);
 
   // 輸出對(duì)象的面積
   cout << "Total area: " << Rect.getArea() << endl;
 
   return 0;
}

運(yùn)行結(jié)果:


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

4、多態(tài)

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

下面的實(shí)例中,基類 Shape 被派生為兩個(gè)類,如下所示:

#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);
 
   // 存儲(chǔ)矩形的地址
   shape = &rec;
   // 調(diào)用矩形的求面積函數(shù) area
   shape->area();
 
   // 存儲(chǔ)三角形的地址
   shape = &tri;
   // 調(diào)用三角形的求面積函數(shù) area
   shape->area();
   
   return 0;
}

運(yùn)行結(jié)果:

5、抽象

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

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

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

代碼:

#include <iostream>
using namespace std;
 
class Adder{
   public:
      // 構(gòu)造函數(shù)
      Adder(int i = 0)
      {
        total = i;
      }
      // 對(duì)外的接口
      void addNum(int number)
      
{
          total += number;
      }
      // 對(duì)外的接口
      int getTotal()
      
{
          return total;
      };
   private:
      // 對(duì)外隱藏的數(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ù)捆綁在一起的機(jī)制,數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實(shí)現(xiàn)細(xì)節(jié)隱藏起來的機(jī)制。

class Box
{

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

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

猜你喜歡

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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