色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

[C++]從面向過程到面向對象

汽車電子技術 ? 來源:C語言Plus ? 作者: Maye426 ? 2023-02-27 15:38 ? 次閱讀

面向過程 ——步驟化:是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。

面向對象 ——行為化:面向對象是把整個需求按照特點、功能劃分,將這些存在共性的部分封裝成對象,創建了對象不是為了完成某一個步驟,而是描述某個事物在解決問題的步驟中的行為

**面向過程和面向對象的優缺點:**面向過程:

  • 優點:性能上它是優于面向對象的,因為類在調用的時候需要實例化,開銷過大。
  • 缺點:不易維護、復用、擴展

面向對象:

  • 優點:易維護、易復用、易擴展,由于面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易于維護
  • 缺點:
    • 低耦合:簡單的理解就是說,模塊與模塊之間盡可能的獨立,兩者之間的關系盡可能簡單,盡量使其獨立的完成成一些子功能,這避免了牽一發而動全身的問題。
    • 性能比面向過程低

了解完面向對象和面向過程的基本概念之后,我們來看一下類和對象是什么?

**什么是類?**類,即類別:類是具有相似屬性和行為的一組實例集合

**什么是對象?**對象,即類的實例:現實世界是由各種各樣的事物組成,包括真實的事物和抽象的事物。例如,人、動物、汽車(真實的事物)和程序、直線(抽象的事物)等。

每一類事物都有自己特定的屬性(如大小、形狀、重量等)和行為(如生長、行走、轉彎、運算等),人們通過研究事物的屬性和行為而認識事物。在計算機科學中將這些現實世界中的事物稱之為對象。

面向對象四大特征

  • 抽象抽象是人類認識問題的最基本手段之一。抽象是指對具體問題(對象)進行概括,抽出一類對象的公共屬性和行為并加以描述的過程。類是對象的抽象,對象是類的特例。
  • 封裝封裝是把每個對象的數據(屬性)和操作(行為)包裝在一個類中。一旦定義了對象的屬性和行為,則必須決定哪些屬性和行為只用于表示內部狀態,哪些屬性和行為在外部是可見的。 封裝保證了模塊具有較好的獨立性,使得程序維護修改較為容易。
  • 繼承繼承是指一個新類可以從現有的類派生而來。新類繼承了現有類的特性,包括一些屬性和行為,并且可以修改或增加新的屬性和行為,使之適合具體的需要。繼承為了重用父類代碼,同時為實現多態性作準備。
  • 多態多態性是指類中具有相似功能的同名函數,并根據不同類的對象對同一消息產生的不同行為。

如何定義類

我們先不說多么高深的東西,大家都學過C語言吧!在C++中,我們可以使用結構體表示類。

#include
using namespace std;
struct Stu //定義學生結構
{
  int id;
  int age;
  char name[10];
};
int main()
{
  Stu cPlus;//前面講過在C++中可以省略,struct關鍵字
  cPlus.id = 100;
  cPlus.age = 5;
  strcpy(cPlus.name, "C語言Plus");
  cout << cPlus.id << " " << cPlus.age << " " << cPlus.name << endl;
  return 0;
}
output:100 5 C語言Plus

這種寫法大家都非常熟悉吧,不知道大家發現沒有,如果我要輸出學生的所有信息我就需要寫一行輸出代碼,有的伙伴會說,我們可以把輸出封裝成函數,確實可以。

void showStuInfo(Stu s)
{
  cout << s.id << " " << s.age << " " << s.name << endl;
}

但是這樣做也有不方便之處,每次輸出時,需要傳入一個學生的參數,麻煩。這里我們可以使用面向對象的思想,把行為(輸出信息)也封裝到結構體中(在C語言中是不允許的)。

struct Stu //定義學生結構
{
  int id;
  int age;
  char name[10];
  void showStuInfo(Stu s)
{
    cout << s.id << " " << s.age << " " << s.name << endl;
  }
};
訪問方法:cPlus.showStuInfo(cPlus);

訪問成員函數的方法,和訪問成員變量的方法一樣,用成員運算符.即可,但是這里大家又會發現一個問題,既然是哦通過cPlus訪問的輸出函數,那為啥還要傳一個cPlus進去,不是多此一舉嗎?

確實,如果在結構體內部函數中,訪問自己的成員就不需要通過傳參來使用了,可以直接使用,如:

struct Stu //定義學生結構
{
  int id;
  int age;
  char name[10];
  void showStuInfo()
{
    cout << id << " " << age << " " << name << endl;
  }
};

很簡單吧,那么同樣,對于初始化函數,咱們也可以把它寫到結構體里面去

struct Stu //定義學生結構
{
  int id;
  int age;
  char name[10];
  void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
    id = sid;
    age = sage;
    strcpy(name, sname);
  }
  void showStuInfo()
{
    cout << id << " " << age << " " << name << endl;
  }
};


int main()
{
  Stu cPlus;//前面講過在C++中可以省略,struct關鍵字
  cPlus.init();
  cPlus.showStuInfo();


  return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分析
    +關注

    關注

    2

    文章

    134

    瀏覽量

    33302
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62573
  • 調用
    +關注

    關注

    0

    文章

    8

    瀏覽量

    3226
收藏 人收藏

    評論

    相關推薦

    C語言實現面向對象的方式 C++中的class的運行原理

    這里主要介紹下在C語言中是如何實現的面向對象。知道了C語言實現面向對象的方式,再聯想下,
    發表于 10-21 09:00 ?1131次閱讀

    基于C/C++面向對象的方式封裝socket通信類

    在掌握了基于 TCP 的套接字通信流程之后,為了方便使用,提高編碼效率,可以對通信操作進行封裝,本著有淺入深的原則,先基于 C 語言進行面向過程的函數封裝,然后再基于 C++ 進行
    的頭像 發表于 12-26 09:57 ?1332次閱讀

    C++筆記005:用面向過程面向對象方法求解圓形面積

    鍵盤輸入的內容流到了某某某中!面向過程程序比較簡單,只要有一些C語言的基礎,加上對C++輸入輸出流就可以了!第二,面向
    發表于 03-05 12:59

    面向對象編程總結

    如何面向過程面向對象OOP?面向
    發表于 09-29 08:19

    什么是向對象?什么叫面向過程

    節,if, for, while循環什么的,感覺也就能算一些小學就會的題目,全國計算機等級二級也就糊涂的過了。我這個專業沒學過C++,一開始不知道什么是向對象,什么叫面向過程,這可能讓
    發表于 12-17 06:28

    C++ 面向對象多線程編程下載

    C++ 面向對象多線程編程下載
    發表于 04-08 02:14 ?70次下載

    Visual C++面向對象與可視化程序設計習題解析與編程實

    Visual C++面向對象與可視化程序設計習題解析與編程實例最基本的概念出發,詳細地講述了使用Visual C++進行
    發表于 07-12 15:16 ?0次下載
    Visual <b class='flag-5'>C++</b><b class='flag-5'>面向</b><b class='flag-5'>對象</b>與可視化程序設計習題解析與編程實

    面向對象程序設計—C++語言描述_PDF版

    電子發燒友網站提供《面向對象程序設計—C++語言描述_PDF版.txt》資料免費下載
    發表于 09-24 15:44 ?0次下載

    面向對象的程序設計(C++

    面向對象的程序設計(C++).面向對象的基本思想 C++
    發表于 03-22 14:40 ?0次下載

    C++語言和面向對象程序設計教程

    C++語言和面向對象程序設計代表了旨在使計算機問題解更加符合人的思維活動,是軟件開發方法的一場革命;面向對象建模和
    發表于 03-02 08:00 ?6次下載

    為什么要用C語言實現面向對象

    不知道有多少人去了解過語言的發展史,早期C語言的語法功能其實比較簡單。隨著應用需求和場景的變化,C語言的語法功能在不斷升級變化。 雖然我們的教材有這么一個結論:C語言是面向
    的頭像 發表于 11-05 18:05 ?1708次閱讀
    為什么要用<b class='flag-5'>C</b>語言實現<b class='flag-5'>面向</b><b class='flag-5'>對象</b>

    C語言是如何實現面向對象

    C++面向對象 的編程語言,但面向對象的概念是在C語言階段就有了,而且應用到了很多地方,比
    的頭像 發表于 12-24 17:08 ?2w次閱讀
    <b class='flag-5'>C</b>語言是如何實現<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的

    面向對象開發的SOLID五大基本原則

    C語言開發的應該都知道,C面向過程開發的,而c++面向
    的頭像 發表于 10-17 14:31 ?778次閱讀

    C語言是怎么面向對象編程

    在嵌入式開發中,C/C++語言是使用最普及的,在C++11版本之前,它們的語法是比較相似的,只不過C++提供了面向
    的頭像 發表于 02-14 13:57 ?1663次閱讀
    <b class='flag-5'>C</b>語言是怎么<b class='flag-5'>面向</b><b class='flag-5'>對象</b>編程

    面向過程面向對象的區別

    說起面向對象,大家可能會想到其他的,但是此對象非彼對象哈哈,不必驚慌,也特別好搞定。 在聽到面向
    的頭像 發表于 02-15 11:10 ?4171次閱讀
    <b class='flag-5'>面向</b><b class='flag-5'>過程</b>與<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的區別
    主站蜘蛛池模板: 桃花论坛POWERED2019| 久久精品热老司机| YELLOW视频直播在线观看| 伊人久久伊人| 亚洲免费视频在线观看| 同时和两老师双飞| 双性将军粗壮H灌满怀孕| 青柠在线视频| 青青精品国产自在线拍| 欧美午夜特黄AAAAAA片| 欧美视频精品一区二区三区| 免费毛片视频网站| 免费看到湿的小黄文软件APP| 麻豆国产99在线中文| 蜜桃色欲AV久久无码精品| 免费可以看黄的视频s色| 欧美国产精品主播一区| 欧美精品华人在线| 日本乱hd高清videos| 乳色吐息在线观看全集免费观看| 色宅男看片午夜大片免费看| 神马午夜不卡片| 香港成人社区| 亚洲视频在线观看免费| 在线国产三级| 538久久视频在线| avove主播| 国产99r视频精品免费观看| 国产精品久久久久久久久爆乳| 国产精品涩涩涩视频网站| 国内精品一级毛片免费看| 久久精品国产免费播高清无卡| 麻豆国产人妻欲求不满| 欧美深深色噜噜狠狠yyy| 天天综合亚洲综合网站| 亚洲九九视频| 69日本xxⅹxxxxx18| 成年人视频在线观看免费| 国产蜜臀AV在线一区视频| 寂寞夜晚在线视频观看| 理论片午午伦夜理片久久|