C/C++區別
可以這樣理解C++是C語言的超集,C++包含C語言所有內容,除此之外還有C語言所不具備的多余的58個頭檔案,例外處理,類和物件(面向物件編程),STL,模板(泛型編程),Lambda運算式(函式式編程)
編程范式
編程范式分為四種,分別是:函式式編程,泛型編程,面向程序編程,面向物件編程
- 函式式編程
函式式編程把電腦運算視作函式的計算,屬于“結構化編程”一種,主要思想是把運算程序盡量寫成一系列嵌套的函式呼叫,例如lambda運算式,代碼如下:
var print = function(i){ console.log(i);};
- 泛型編程
泛型編程目的是為了實作一個通用的標準容器庫,代表作STL,泛型編程可以使撰寫完全一般化并且可以重復使用的演算法,其效率是根據某特定的資料型別而設計的演算法想相同,泛型是指具有多種資料型別上都可操作的含義,與模板有些類似,STL中演算法是泛型的,不與任何特定的資料結構或者物件型別聯系在一起,簡言之,泛型編程本質是屏蔽資料和操作資料的細節,讓演算法更為通用,讓編程者更為關注演算法的結構,
- 面向程序編程
面向程序是一種以程序為中心的編程思想,與面向物件不同的是封裝、繼承、類,其中C語言就是面向程序編程,就是先分析出解決問題所需要的步驟,然后用函式把這些步驟一步一步實作,使用的時候一次一次呼叫即可,
public class 汽車運營 {
void 汽車啟動 {
發生了什么···
}
void 汽車到站 {
發生了什么···
}
}
- 面向物件編程
面向物件編程本質上是建立模型體現出來的抽象思維程序和面向物件的方法,模型是用來反映現實世界中事物特征的,任何一個模型都不能反應客觀事物的一切具體特征,只能根據事物特征和變化規律的一種抽象,且在它所涉及的范圍內更加普遍、集中、深刻的描述客體的特征,通過建立模型而達到的抽象是人們對于客體認識的一種深化, 面向物件程式設計中的概念主要包括:物件、類、資料抽象、繼承、動態系結、資料封裝、多型性、訊息傳遞,通過這些概念面向物件的思想得到了具體的體現,
1)物件(Object) :
可以對其做事情的一些東西,一個物件有狀態、行為和標識三種屬性,
2)類(class):
一個共享相同結構和行為的物件的集合,類(Class)定義了一件事物的抽象特點,通常來說,類定義了事物的屬性和它可以做到的(它的行為),舉例來說,“狗”這個類會包含狗的一切基礎特征,例如它的孕育、毛皮顏色和吠叫的能力,類可以為程式提供模版和結構,一個類的方法和屬性被稱為“成員”,
3)封裝(encapsulation):
第一層意思:將資料和操作捆綁在一起,創造出一個新的型別的程序,第二層意思:將介面與實作分離的程序,
4)繼承:
類之間的關系,在這種關系中,一個類共享了一個或多個其他類定義的結構和行為,繼承描述了類之間的“是一種”關系,子類可以對基類的行為進行擴展、覆寫、重定義,
5)組合:
既是類之間的關系也是物件之間的關系,在這種關系中一個物件或者類包含了其他的物件和類,
組合描述了“有”關系,
6)多型、
型別理論中的一個概念,一個名稱可以表示很多不同類的物件,這些類和一個共同超類有關,因此,這個名稱表示的任何物件可以以不同的方式回應一些共同的操作集合,
7)動態系結:
也稱動態型別,指的是一個物件或者運算式的型別直到運行時才確定,通常由編譯器插入特殊代碼來實作,與之對立的是靜態型別,
8)靜態系結:
也稱靜態型別,指的是一個物件或者運算式的型別在編譯時確定,
9)訊息傳遞:
指的是一個物件呼叫了另一個物件的方法(或者稱為成員函式),
10)方法:
也稱為成員函式,是指物件上的操作,作為類宣告的一部分來定義,方法定義了可以對一個物件執行那些操作,
常見的面向物件編程語言有C++,Java等, java語言典型示例如下
public class 汽車 {
void 到站() {
}
void 啟動() {
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244198.html
標籤:其他
下一篇:C++ string
