《《面向?qū)ο蠹夹g(shù)》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蠹夹g(shù)》PPT課件(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第二講 面向?qū)ο蠹夹g(shù) 主講人: 呂松茂 主要內(nèi)容 面向?qū)ο蠹夹g(shù)的提出 什么是面向?qū)ο蠹夹g(shù) 對象 類 封裝性 問題的提出 傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計( Structured Programming-SP) 方法 使用 SP方法設(shè)計程序的步驟 數(shù)據(jù)聲明 數(shù)據(jù)處理 結(jié)果輸出 在數(shù)據(jù)處理過程中,采用的是自頂向下、分而 治之的方法,將整個程序按功能劃分為幾個可 獨立編程的子過程模塊,每一子模塊完成指定 的子任務(wù),并且提供一個清晰、嚴(yán)格的調(diào)用界 面,主過程通過調(diào)用各子過程完來成全部處理 工作 。 f( 1) 過程 /函數(shù) f( 2) f( 2) f( 3) 數(shù)據(jù)結(jié)構(gòu) B A C 返回 存在的問題 ( 1) 數(shù)據(jù)
2、和函數(shù)分開 , 重疊的數(shù)據(jù)存取 使并行性和完整性的問題變得復(fù)雜 ( 2) 本質(zhì)上是 面向過程 的 , 以功能和需 求為核心 , 而 “ 功能 ” 和 “ 需求 ” 又是 不穩(wěn)定和多變的 , 因此程序代碼經(jīng)常要 進行修改 , 不易維護 。 ( 3) 程序代碼 可重用性差 。 程序中除少 數(shù)標(biāo)準(zhǔn)庫函數(shù)外 , 每設(shè)計一個程序時 , 程序員幾乎從零做起 。 即使重用代碼 , 通常也是通過拷貝或編輯重新生成一份 。 如何解決 面向?qū)ο蠹夹g(shù) ( Object-Oriented Programming -OOP) 何為面向?qū)ο蠹夹g(shù) 與面向過程相對應(yīng)(結(jié)構(gòu)化程序設(shè)計) 心理學(xué)研究表明,客觀世界由許多對象組成,
3、 對象具有其屬性和行為,對象之間存在著各種 聯(lián)系,這樣能夠更好的刻畫問題域,也更接近 人類的自然思維方式。這就是面向?qū)ο蟪绦蜷_ 發(fā)思想的由來。 面向?qū)ο蟮某绦蛟O(shè)計方法強調(diào)直接以問題域 (現(xiàn)實世界)中的事物為中心來思考和認(rèn)識問 題,并按照這些事物的本質(zhì)特征把它們抽象為 對象,以作為構(gòu)成軟件系統(tǒng)的基礎(chǔ)。 f(1) f(2) 數(shù)據(jù)結(jié)構(gòu) 簡單類(規(guī)則) + 復(fù)雜聯(lián)系 = 復(fù)雜系統(tǒng) 接口 函數(shù) 數(shù)據(jù) 比較 面向?qū)ο笈c面向過程設(shè)計對比 是一種數(shù)學(xué)思維或計 算機思維方法,與人 們認(rèn)識世界的方法不 同 以不穩(wěn)定的、多變的 “過程”和“操作” 為中心來構(gòu)造系統(tǒng) 可重用性較差 是建立在認(rèn)識方法學(xué) 基礎(chǔ)上的一項技術(shù)
4、科 學(xué),比較自然地模擬 了人類認(rèn)識客觀世界 的方式; 以相對穩(wěn)定的“對象” 為中心來構(gòu)造系統(tǒng) 可重用性較好 面向過程程序設(shè)計 面向?qū)ο蟪绦蛟O(shè)計 將設(shè)計目標(biāo)從模擬現(xiàn)實世界的行為轉(zhuǎn)向了模 擬現(xiàn)實世界中存在的對象及其各自的行為。 面向?qū)ο蟪绦蛟O(shè)計是在吸取結(jié)構(gòu)化程序設(shè)計 的一切優(yōu)點的基礎(chǔ)上發(fā)展起來的一種新的程序 設(shè)計方法。它的 本質(zhì) 是 把數(shù)據(jù)和處理數(shù)據(jù)的 過程當(dāng)成一個整體 對象。 在 OOP中,將 “ 對象 ” 作為系統(tǒng)中最基本的 運行實體,整個程序即由各種不同類型的對象 組成,各對象既是一個獨立的實體,又可通過 消息相互作用,對象中的方法決定要向哪個對 象發(fā)消息、發(fā)什么消息以及收到消息時如何進 行
5、處理等。 面向?qū)ο蠹夹g(shù) 對象 ( Object) 對象 是客觀世界中的事物在人腦中的映像 , 這種映像通過對同一類對象的抽象反映成 人的意識 , 并做為一種概念而存在 。 每個對象都具有 屬性 ( Attribute) 和 方 法 ( Method) 這兩方面的特征 。 對象的屬 性描述了對象的狀態(tài)和特征 , 對象的方法 說明了對象的行為和功能 , 并且對象的屬 性值只應(yīng)由這個對象的方法來讀取和修改 , 兩者結(jié)合在一起就構(gòu)成了對象的完整描述 。 對象例一 例 1:考慮對象 “學(xué)生”,具體描述為: 對象名 屬性 操作 學(xué)號、姓名、專業(yè)、性別、 年齡、身份證號、電話等等 獲取和修改學(xué)號、姓名、 專
6、業(yè)、性別、年齡等等 學(xué)生 ( 表一 ) 注意點 : 一體性 三者成為一體 對象例二 例 2:對象 “課程” 的有關(guān)抽象描述。 對象名 屬性 操作 課程 課程名、編號、學(xué)時數(shù)、選課 要求、任課教師等 獲取并修改課程名、編號、學(xué) 時數(shù)、選課要求、任課教師等 (表二 ) 注意點: 1. 屬性是對對象的靜態(tài)描述 . 2. 操作是對對象的動態(tài)描述 . 外部是通過調(diào)用服務(wù)與對 象取得聯(lián)系 . 類( Class) 具有相似屬性和行為的一組對象,就稱 為類??梢?,有了類的概念以后,就可 以對具有共同特征的事物進行統(tǒng)一描述 類是面向?qū)ο笳Z言必需提供的用戶定義 的數(shù)據(jù)類型,它將具有相同狀態(tài)、操作 和訪問機制的多個
7、對象 抽象 成為一個對 象類。 類與對象的關(guān)系 從一般意義上講,對象( Object) 是現(xiàn)實 世界中的 客觀事物 。 類是把具有相同屬性的事物劃分為一類, 從而得出的 抽象概念 。 類與對象的關(guān)系 類與對象的關(guān)系 類 對象 抽象定義 實例 學(xué)生 學(xué)生王強 汽車 桑塔納,奔馳,寶馬 類型 變量 , 如 C 語言中的 int 和 int x; 類的特點 -封裝與隱藏 將算法和數(shù)據(jù)結(jié)構(gòu)有機集成在一起 傳統(tǒng)方法:數(shù)據(jù)和操作分離 支持模塊化程序設(shè)計 類成為基本的模塊,作為程序設(shè)計的基礎(chǔ) 保護私有成員,隱藏實現(xiàn)細(xì)節(jié) 使程序的可維護性、安全性得到保證 封裝( Encapsulation) 面向?qū)ο笳Z言把數(shù)
8、據(jù)和操作封裝于對象 體之中,并提供一種訪問機制,使對象 的“私有數(shù)據(jù)”僅能由這個對象的操作 來執(zhí)行。用戶只能通過允許公開的操作 提出要求(消息),才能查詢和修改對 象的狀態(tài)。 封裝 封裝是面向?qū)ο蠓椒ǖ囊粋€重要原則。它有兩 個涵義: 第一個涵義是,把對象的全部屬性和全部服務(wù) 結(jié)合在一起,形成一個不可分割的獨立單位 (即對象)。 第二個涵義也稱作“信息隱蔽”,即盡可能隱 蔽對象的內(nèi)部細(xì)節(jié),對外形成一個邊界(或者 說形成一道屏障),只保留有限的對外接口使 之與外部發(fā)生聯(lián)系。這主要是指對象的外部不 能直接地存取對象的屬性,只能通過幾個允許 外部使用的服務(wù)與對象發(fā)生聯(lián)系。 f(1) f(2) 數(shù)據(jù)結(jié)構(gòu)
9、 接口 封裝的例子 鍵盤 電視機 手機 面向?qū)ο蠹夹g(shù)的特點 ( 1) 以 對象 為中心 。 由于對象自然地反映了應(yīng)用領(lǐng) 域的模塊性 , 因此具有相對穩(wěn)定性 , 可以被用作一 個組件去構(gòu)成更復(fù)雜的應(yīng)用 , 又由于對象一般封裝 的是某一實際需求的各種成分 , 因此 , 某一對象的 改變對整個系統(tǒng)幾乎沒有影響 。 ( 2) 封裝性 。 實現(xiàn)細(xì)節(jié)隱藏 , 增強了安全性和簡化 編程 , 使用者不必了解具體的實現(xiàn)細(xì)節(jié) , 而只需要 通過外部接口 , 以特定的訪問權(quán)限 , 來使用類的成 員 ( 3) 可復(fù)用性 。 新的應(yīng)用程序設(shè)計可在原有對象的 數(shù)據(jù)類型和功能的基礎(chǔ)上通過重用 、 擴展和細(xì)化來 進行 , 而不必從頭做起或復(fù)制原有代碼 , 這樣 , 大 大減少了重新編寫新代碼的工作量 , 同時降低了程 序設(shè)計過程中出錯的可能性 , 達到了事半功倍的效 果 。 總結(jié) 面向?qū)ο蠹夹g(shù) 對象 類 封裝性 謝謝大家