?? 最近開始閱讀 c++ 編程思想 反思自己的cc++, 連載筆記歡迎討論.txt
字號:
作者:rick1126
email: rickzhang@sina.com
日期:2001-7-12 13:42:06
<< C++ 編程思想 >>
第01章 對象的演化
1.0 內容概要
介紹OOP的基本概念
討論OOP的開發方法
介紹使程序員, 項目和公司使用OOP的策略
1.1 基本概念
C++ 包含了比OOP基本概念更多的內容.
1.1.1 對象: 特性 + 行為
【類】
. 描述了一組相同特性(數據元素)和行為(函數)的對象. 就是數據類型.
. 和基本數據類型相比
- 類和結構一樣是程序員為適應具體問題而自行定義的. 而不是為了描述計算機的基本存儲單元
- 如果說基本數據類型著重描述計算機本身的物理存儲的邏輯概念, 類就是程序員為了描述顯示世界的具體一類對象的抽象的基本數據類型擴展和應用
- 這和結構不謀而和或者類本身就是結構的擴展.
. 所以類就是一種抽象數據類型
【抽象數據類型】
. 抽象數據類型是OOP的一個基本概念
. 程序員使用抽象數據類型可以和使用內部數據類型一樣準確工作
1.1.2 繼承: 類型關系
【類型】
. 類型說明了一組對象的約束, 這里我理解類型就是術語類(Class), 還說明了與其他類型之間的關系
【繼承】
. 繼承表示了基本類型(基類 Base Class)和派生類型(派生類 Derived Class)之間的相似性
. 基類擁有派生類的共性特性和行為, 派生類擁有自己的特殊行為和特性
. 程序員使用基類描述系統中對于一些基本對象的核心認識, 使用派生類描述核心認識的不同途徑
. 程序員可以使用繼承建立類的層次結構, 該層次結構使用類術語表達解決問題的方法
【OOP的特點】
. 可以分層次的解決問題
. 使用類可以更接近自然邏輯語言, 而過去使用計算機術語更解決機器本身
1.1.3 多態性
【多態性的意義】
. 程序員使用希望編寫不依賴于特殊類型的代碼, 是的程序具有擴展性
. 程序可以根據不同的情況選擇不同的方法實現, 以實現"智能化"
. 編譯器不知道連接哪一段代碼
. "早捆綁" -- 前綁定: 使用絕對地址連接函數, 不適用于多態性
. "晚捆綁" -- 后綁定: 編譯器僅僅保證函數調用存在而不確定調用地址
. 程序員使用 virtual 關鍵字獲得"晚捆綁"特性 -- 虛函數
1.1.4 操作概念 OOP程序象什么
【C語言的程序】
. 過程程序: 數據定義和函數調用
. 使用中間表示 -- 函數調用和函數實現本身
. 中間表示容易引起混淆, 因為它們更偏向計算機, 而不是需要解決的問題
【OOP程序】
. 只需要掌握一些描述問題空間對象的定義
. 可讀性強, 代碼量少
〖個人理解〗
其實<< C++編程思想 >>本身就是一本基于C語言角度從計算機特點描述C++語言特點的書籍, 從不同的視角對于C++編程進行理解性的表述, 而不是象某些國內書籍從操作性或者純OOP角度進行描述, 僅僅將C++作為一種工具, 而忽略了其思維方式和思想內涵. 這大概就是類似國內 "職業" 球員和國外職業球員對于本行的認識問題的區別了.
下面就是針對OOP的基本特性 -- 封裝(抽象), 繼承和多態性的描述
從現實世界中將基本矛盾實體抽象出來進行共性描述, 然后根據特性派生子類, 最終通過多態性賦予對象實體生命力; 我想這大概就是OOP的大致工作方式, 更接近于思維本身, 而更少的考慮機器的特性, 語言本身的特性.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -