chap18类别与物件.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap18类别与物件

Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉! 《莊子﹒外篇 在宥第十一》 本章介紹定義類別,以及如何使用類別來定義物件的基本語法。這種使用類別和物件來設計程式的方式稱為「以物件為基礎的程式設計」(object-based programming)。 類別與物件 18.1 程式設計方法的演進 18.2 抽象化和資料的隱藏 18.3 物件與類別的關係 18.4 以物件為基礎的銀行帳戶操作程式實例 18.5 以物件為基礎的電梯操作模擬範例 18.6 朋友函數 程式設計方法的演進 函數 (function,或稱為副程式,subroutine)。 結構式程式設計 (structured programming)。 以程序為基礎的程式設計 (procedural-based programming)。 以物件為基礎的程式設計 (object-based programming)。 物件導向程式設計 (object-oriented programming,簡稱OOP)。 物件 (objects) 具有各種特質 (attributes)。 能夠展現各種行為 (behaviors)。 物件導向(object-oriented) 的程式設計 不是只重視處理問題的步驟: 在程式中保留各種物件的特性,規劃出使用者與物件,以及物件與物件間的互動關係,以完成程式資料處理的功能。 物件導向程式設計的來源: 電腦模擬 (Computer simulation) 。 Windows作業系統的誕生。 抽象化(Abstraction) 在思考問題和規劃程式的時候,先考慮: (1) 在整個系統裏面,有那些參與的物 件。 (2) 這些物件有什麼特質,能夠展現什 麼行為。 (3) 外界與物件,以及物件與物件間如 何互動。 封裝(Encapsulation) -- 資料的隱藏 物件與外界的內外區隔。 物件的特質、行為等實作的細節則被封裝在物件的內側。 通常我們可以用一個蛋的三重構造來比擬一個物件: 物件的三重構造 1. 特徵值 (attributes): 代表物件的狀態。 2. 介面 (interface): 可以和外界直接接觸。 3. 行為 (behaviors): 經由介面與外界互動而改變內部的特徵值,並把反應經由介面表現出來。 物件導向程式設計的好處 1. 提高程式的再利用率 區隔清楚,功能內涵,能夠發揮提綱挈領的特性。 嚴謹的介面限制,避免資料和函數間不受控制的互動。 2. 問題和程式間更直接的對應關係 問題領域 (problem domain) 的每個物件,都可在程式領域 (program domain)找到相對應的物件; 可以比較直觀的進行程式規劃。 變得更有組織,更容易理解,也更易設計和除錯。 物件的特性 1. 狀態 (state)。 以一部電梯為例,它的狀態包括目前所在的樓層位置,目前的速度,要前往的目標樓層,內部乘客人數,總重,等與運作有關的細節。 2. 行為 (behavior) 。 以一部電梯為例,它的行為則有:接受按鈕呼叫,接受目的樓層選擇,以及驅動升降等功能,可以與外界互動或改變狀態。 問題領域物件與程式物件間的對應關係 成員函數又稱為方法 (methods);它能夠改變資料成員,具體的呈現物件的行為。 訊息 (messages) 的三個要素 1.接受此訊息的物件名稱。 2.所要觸動的方法。 3.執行此方法所需要的參數。 傳送訊息相當於呼叫成員函數。 類別(class) 類別是廣義的資料型態, 是某類物件的藍圖,定義了所有這類物件擁有的資料成員和成員函數。 struct可以包括不同種類的基本資料型態,而類別 (class) 更進一步把成員函數都包裝在裏面。 int、struct和class資料型態定義的比較 public和private成員 「private:」之後的成員 (包括資料成員和成員函數) 只有同一個class內的成員函數才可以取用和呼叫。 在「public:」之後的成員開放給程式內的所有敘述。 struct除了內部成員的預設開放程度都是public以外,它和class沒有任何差異。 介面(Interface) 被設定為private的資料成員和成員函數必需透過被設定為public的函數成員才能存取。 public函數成員稱為這個class的介面。 成員函數的實作 (Implementation of member functions) 在class的本體之內實作inline成員函數 在class的本體之外實作inline成員函數 在class的本體之外實作一般的成員函數 在class的本體 (body) 之

文档评论(0)

yanpizhuang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档