C語言是程式導向程式設計的語言,而C++是物件導向程式設計的語言,兩者具有不同點。
程式導向程式設計(pop):是一種以過程為中心的程式設計思想。
基本思想:
--利用過程或函式來抽象和模擬客觀現實
--程式程式碼採用三大結構:順利、分支、迴圈
--結構化程式設計方法:自頂向下、逐步求精、模組化
程式導向程式設計的軟體實現方法:
重點:放在如何實現細節過程方面,將資料與函式分開
--形式:主模組 + 若干個子模組(如C:main() + 子函式)
--特點:自頂向下,逐步求精——功能分解--缺點:效率低,是手工作坊式的程式設計
存在的問題——資料與演算法分離,程式資料和運算元據的函式是分離的,不足之處是:編寫大型程式困難,程式的升級維護不便, 資料安全性差,無法重用程式碼,程式設計效率不高。
物件導向程式設計(oop):
--使用物件導向的觀點來描述模仿並處理現實問題
--要求:高度概括、分類和抽象。
主要目標:重用性、靈活性和擴充套件性。
物件
用來描述客觀事物的一個實體,它是構成系統的一個基本單元。一個物件具有一組屬性和行為。
物件構成要素:
--物件名稱:這是物件的標識,用來區別與其他物件
--屬性: 用來描述物件靜態特徵的一個資料項
--行為 : 用來描述物件動態特徵和行為的一個操作
類(class)
概念:是具有相同屬性和行為的一組物件的集合, 它為屬於該類的全部物件提供統一的抽象描述。
類的描述:不同的物件導向程式語言採用不同的描述形式。在C++中用關鍵字class來定義描述一個類
#include<iostream>
//標準名稱空間(包含很多標準定義)
using namespace std;
const double PI = 3.14;
class MyClass
{
public:
void setR(double r){
this->r = r;
}
double getS(){
return PI*r*r;
}
private:
double r;
double s;
};
void main(){
double r;
cout << "請輸入圓的半徑:";
cin >> r;
MyClass m;
m.setR(r);
cout << "圓的面積:" << m.getS() << endl;
getchar();
}
複製程式碼
OOP基本特徵(即一個方法、三個特性)
1)、抽象方法:資料抽象,行為抽象
2)、封裝性: 資料與行為(或功能)相結合,形成一個有機整體即“類”。不同“類”的資料、函式相互獨立,互不影響; 將“類”中的某些部分隱蔽,只留下少量介面與外界聯絡,增加安全性,減少出錯的可能性。
3)、繼承性:利用一個已有的類去建立一個新的類,這就可以重用已有軟體中的一部分甚至大部分,大大節省了程式設計的工作量。這是實現“軟體重用”的重要途徑。
4)、多型性(polymorphism):幾個相似而又不完全相同的物件,接到相同的訊息時產生完全不同的行為的現象。
多型性的實現:
執行時多型性:虛擬函式
編譯時多型性:過載
過載分為:
a)、函式過載:是指在同一作用域內的若干個引數特徵不同的函式可以使用相同的函式名字
b)、運算子過載:是指同一個運算子可以施加於不同型別的運算元上面
優點:過載進一步提高了物件導向系統的靈活性和可讀性
C與C++的關係:
1、C++可以與C程式碼進行混編
2、C++物件導向程式語言、C程式導向的程式設計
3、C++對C的一個增強