對于簡單問題和任務,一個函數(面向功能方法)或一個類(面向對象方法)便可以解決或完成。
面對複雜問題或任務,應對方法通常是分解(decomposing)和抽象(abstracting)。分解以後,需要多個函數或多個類,函數或類之間的關系便變得尤為重要。
一般而言,任何東西都有結構。所謂結構是指各個基本組成部分及其相互關系所形成的表現形态。程序也有結構,最早的程序是無結構的(本質上它是結構的退化,即隻有一個基本組成部分),稱為一體式“鋼闆程序”。随着程序規模的變大,為了提高開發效率、增加維護和調試的便捷性并降低成本、提高程序質量等,陸續誕生以函數和函數的交互關系為基礎的程序結構、以對象和對象的交互關系為基礎的程序結構。
依據面向功能方法的基本原理,它需要解決兩個核心問題:基本功能模塊如何實現,以及基本功能模塊之間的耦合關系如何實現。
面向功能方法中,基本功能模塊代表一種相對獨立及完整的處理功能單元,因此,它的構造必然會涉及數據組織和數據處理。也就是說,作為面向功能方法的基本建築塊,基本功能模塊相當于是由數據組織和數據處理兩個程序基因綜合而成的程序細胞。目前,(高級)程序設計語言中,一般都是基于函數概念來建立基本功能模塊的抽象表達模型。
一個處理功能模塊的分解粒度及基本原則以該模塊隻處理一件事為基礎。也就是說,一個模塊内部的各種功能必須是直接相關的,稱為高内聚;模塊與模塊之間一般不應該存在交叉的處理功能,稱為松耦合。也就是說,盡量保證一個功能模塊相對獨立和簡單
作為面向功能方法構建的另一個核心問題,基本功能模塊之間的耦合(或連接)具有重要意義,隻有通過耦合,多個基本功能模塊才能構成完整程序。
函數間的數據共享:
2 對象間關系① 傳址的副作用;
② 函數的内部狀态:函數局部static變量;
③ 函數間全局共享的數據:全局變量;
面向對象方法建立在對象及其關系基礎之上。
面向對象方法主要解決如何方便地為應用問題正确建模,它面向問題域而不是面向機器。它的基本原理是,将一個程序的基本結構形态定義為由一系列對象及其相互關系組成。
對象作為一種抽象數據類型,需要開創并建立自己的世界——對象社會。在對象社會中,不同的對象之間需要建立各種各樣的協作關系、需要交流,每一種對象也需要繁衍後代。因此,從對象到對象社會,首要問題就是對對象關系的認識。然後,在此基礎上,進一步認識其所帶來的各種問題并建立各種相應的支持機制。
面向對象方法建立在對象及其關系基礎之上。從本質上看,同族對象仍然體現單個(單族)對象的形态,異族對象才能體現社會的群體效應,異族對象及其關系構成面向對象程序的基本結構,各種對象通過相互發送消息,協作完成程序的功能。
橫向(異族對象)和縱向(同族對象)關系:
類的6類關系:
對象之間的數據共享:
① 單個類對象之間的數據共享:static數據成員;
② 多個同族或民異族類對象之間的數據共享:繼承或複合實現;
③ 不同類之間的數據共享:全局變量。
ref:
沈軍《計算思維之程序設計》
-End-
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!