CH03第三章物件導向觀念.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CH03第三章物件導向觀念

第三章 物件導向的觀念 軟體工程 -物件導向程式設計與UML系統分析實作 3.1 模組與物件 在物件導向程式設計的觀念提出之前,軟體開發者,大多是使用結構化的程式設計。 模組 模組就是用一個單一的函式所組成一連串的程式敘述, 可解決一最小的問題。 圖3-1汽車行駛程式呼叫的模組圖 [註:以流程圖來表現,每個方塊代表一個模組] 物件導向語言 物件導向語言顧名思義就是以物件為程式設計時最主要考慮到的對象。 圖3-2物件之間靠傳遞訊息,啟動某些操作 3.2物件導向基本觀念 世界是由各種「物件」(Object)所組成,同類的物件可以再加以抽象化而成「類別」(Class),而每一類別具有自己的「屬性」(Attribute)來描述其特性與「方法」(Method)來描述其動態之行為,彼此間之互動是藉由「訊息」(Message)傳遞來溝通。 類別(Class) 為了簡化問題必須將各個物件加以分類,分類的結果便是產生類別(Class), ? 實體 (Instance) 實體也就是物件實體,是經由類別描述過的物件,可說是類別的實體化,也就是產生一個一個的物件。 屬性(Attribute) 屬性是物件所擁有的資料描述或項目,亦有稱為資料結構或狀態。有的將靜態的資料稱為屬性,動態的資料稱為狀態(State)。 方法(Method) 方法亦稱為操作(Operation)或行為(Behavior),方法是物件的動作,不同的訊息會對應到不同的處理方法。 訊息(Message) 訊息是物件之間互相溝通的工具,當物件收到訊息後,物件會依據訊息內容而執行不同的動作。 3.3 物件重要特性 封裝性(Encapsulation) 繼承(Inheritance) 多型 (Polymorphism) 覆蓋(Overriding) 動態連結(Dynamic Binding) 封裝性(Encapsulation) 封裝即所謂資訊隱藏(Information Hiding),主要是將物件的內外部份分開來,其他物件只能藉由外部的界面取得其提供的資料,物件內部的細節資料則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。 圖3-5 物件的封裝性 繼承(Inheritance) :又稱為一般化(Generalization)與特殊化(Specialization)的關係,A繼承B乃指物件類別A是物件類別B的一種,因此物件類別A可以繼承物件類別B的屬性與方法。兩個以上類別一般化後之類別稱為超類別(Superclass)。 圖3-6 類別的繼承 多型 (Polymorphism) 所謂多型是指類別內同名的「方法」,因在不同的類別中定義,執行時會有不同結果的功能。 圖3-7多型 覆蓋(Overriding) 覆蓋之意義如其詞,是用來覆寫父類別的某個特定的方法,我們知道,當一個子類別繼承父類別之後,會繼承父類別所有的成員,若,父類別中的方法不適合子類別中的特定需求該如何? 我們可以在子類別中將父類別的方法藉由overriding的方式,提供一個同名同式的方法,進而提供一個不一樣的行為來! 圖3-8 覆蓋 動態連結(Dynamic Binding) 所謂連結是將程式中所使用到的各名稱(包括程式名稱及變數名稱),分配到適當的記憶體位置。如果是在程式執行過程中才完成連結的,則稱為動態連結(Dynamic Binding),又稱為延後連結(Late Binding) 圖3-9 動態繫結圖 3.4內聚力與耦合力 評估一個系統設計的好壞,亦即計算獨立性的標準,有內聚力(cohesion)與耦合力(coupling)兩種。 3.4.1 耦合力分類 程式設計的領域時,表示程式單元之間牽連相依的程度,模組之間的耦合度欲寬鬆愈好。 耦合力 耦合力是指兩個模組之間的獨立性高低,以物件導向程式而言是指物件與物件之間的獨立性高低。 圖3-10耦合力由低至高 3.4.2 內聚力分類 程式的內聚力則是愈強愈好。 內聚力(Cohesion) 內聚力(Cohesion)指的就是事物凝聚的狀態或程度。 圖3-11 內聚力的由低至高 3.4.3 物件的內聚力和耦合力 物件導向語言的特性,剛好符合了「高內聚力」和「低耦合力」,這是物件導向的優點,也更促進了軟體的可重覆再使用的能力。 3.5 物件導向語言的種類 4個基本的分支: 基於Smalltalk語言的;包括Smalltalk的5個版本,以Smalltalk-80爲代表。 基於C語言的;包括 objective-C、 C++、 Java。(編輯註:及 Microsoft 近來所提出的 C#)。 基於LISP語言的;包括 Flavors、 X

您可能关注的文档

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档