第一章 預備知識 C++ Primer Plus C++ Primer Plus 2018_2_2
阿新 • • 發佈:2019-02-05
個人總結如下:
本章內容包括: C語言,初衷是用它編寫UNIX系統程式,是UNIX的“副產品”。
1979年,Bjame Sgoustrup到了Bell實驗室,開始從事將C改良為帶類的C(C
with classes)的工作。1983年該語言被正式命名為C++。
3 基本原理:
(1)C語言
C語言 = 資料 + 演算法 --- 資料:程式要使用和處理的資訊 演算法:程式處理資料的方法
因此 C語言是面向過程的語言,強調的程式設計的演算法方面。
C語言使用自頂向下的原則和結構化程式設計的方法,來實現一個程式的編寫。本質上反映了C語言的面向過程思想,即根據執行的操作來構思一個程式。(當然,為了更好地實現“將分支限制為一個行為良好的結構” 這種結構化程式設計方法,C語言做了一些準備,如:for、while、do...while迴圈、if...else等。)
舉例說明上述原則和方法:將最大塊的清理屋子這件事情,分成幾個小塊:整理書桌、書櫥、床鋪、地面,這幾個小塊不夠細到讓自己輕易完成,則繼續分成更小的模組,以整理書桌為例,整理桌面、整理抽屜、擺放整齊,順序執行。顯然,這是一種自頂向下、結構化的體現。
舉例說明:
||
資料 + 演算法 = 程式
(2)C++
C++面向物件 的程式設計,強調的是資料,其理念是設計與問題本質特性相對應的資料格式。
面向物件不像面向過程那樣,試圖讓問題滿足語言的過程性方法,而是試圖讓語言滿足問題的要求。換句說,C語言不是直接根據問題就能用的,她需要一步步轉換,即把一個總的問題轉換一個個可以解決的小的過程才行。但是,C++就有所不同。
C++是按照人的思維直接來解決的問題的,不需要一步步地轉換。如果你想解決一個實際問題,你需要做的就是“找到與該問題本質特性相對應的資料格式”就可以了。你只需要找到解決該問題的相應資料,並根據這些資料提取出相應特性,構建出一個新的資料格式,然後利用這個通用的資料格式解決實際問題就好了。說白了,這就是C++所講的:類。
類是一種規範,描述了上述的新型資料格式,物件則是根據這種資料格式創建出來的資料結構。這樣的話,類規定了可以使用哪些資料來表示物件以及可以對這些資料執行哪些操作。也就是類的屬性和方法規定了其例項化的物件具有哪些屬性和方法。
(可這樣近似理解:
)
舉例說明:
條件:已知公司人員的個人資訊
問題:建立一個公司人員資訊管理系統,可以增刪改查
解決:
I 通過已知條件可以提取公司人員的通用特徵,如工號、姓名、性別、年齡、特長等等。
------類的屬性
II 通過問題要求可知,需要對資料做這些操作:根據工號查詢其相應資訊、新增新的工作人員、移除某工作人員、修改某工作人員的個人資訊等。
------類的方法
III 知道了資料的屬性以及要對這些資料做什麼操作,那麼我們就可以據此建立一種新的資料格式---即類,然後通過這種資料格式定義出元素,也就是通過類來例項化物件,接著對該物件進行一系列操作來滿足問題需求。本質上還是先根據資料的屬性和對其的相應操作來建立一個滿足問題要求的類。這些資料其實就是是從實際問題中一個個物件。
------建立類
Note:
The programming philosophy underlying classes is OOP(面向物件)。
C++特點---繼承C的特點 具有物件、類、資料隱藏、 封裝、多型、繼承等新特性,以及另一種程式設計方法:泛型程式設計---
面向物件
------C++ 面向物件 目標:抽象通用概念 和 儘可能地重用程式碼
面向物件不僅僅是將資料和方法結合併為類定義,還有助於建立可重用的程式碼,這將減少大量工作。而且,資訊隱藏可以保護資料,使其免遭不適當的訪問。多型允許對運算子和函式建立多個定義,通過程式設計上下文來確定使用哪個定義。繼承可以使用舊類派生出新類。OOP不是將重點放在任務上,而是放在表示概念上。
OOP程式設計:有時不一定使用自上而下的程式設計方法,而是使用自下而上的程式設計方法。
------自下而上:從低階組織(類)到高階組織(程式)的處理過程。
泛型程式設計:OOP強調的是程式設計的資料方面,而泛型程式設計強調的是獨立於特定資料型別。OOP更像是一個管理大型專案的工具,而泛型程式設計提供了執行常見任務(如:對資料進行排序和合並連結串列)的工具。(具體內容見
C++ Primer Plus 第六版 第一章的1.2.4和第十六章)
本章內容包括:
- C語言 C++發展歷史、基本原理。
- 過程性程式設計、面向物件程式設計。
- C++是如何在C語言的基礎上新增面向物件的概念的。。
- C++是如何在C語言的基礎上新增泛型程式設計的概念的。
資料 | 演算法 | |
幾片茶葉 | 從抽屜裡拿取放入杯中 | |
一杯糖 | + | 向杯中逐漸加糖 |
白開水 | 向杯中倒入白開水並攪拌 | |
... | .... |
程式 |
一杯熱茶 |
C語言 | 結構體 | 結構體定義的變數 |
C++ | 類 | 類例項化的物件 |
抽象(記憶時,以此為準) | 資料格式 | 元素 |