版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、2022-4-1819 9章章 數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計鮑玉斌鮑玉斌東北大學信息學院東北大學信息學院計算機軟件與理論研究所計算機軟件與理論研究所Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 2Outline1.大型程序設計概述大型程序設計概述2.數(shù)據(jù)抽象和抽象數(shù)據(jù)類型數(shù)據(jù)抽象和抽象數(shù)據(jù)類型3. 抽象數(shù)據(jù)類型的形式規(guī)范描述抽象數(shù)據(jù)類型的形式規(guī)范描述4. 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢5.面向對象基本概念面向對
2、象基本概念6. 面向對象的設計過程面向對象的設計過程7.面向對象面向對象 vs 傳統(tǒng)的設計方法傳統(tǒng)的設計方法8. 面向對象設計的基本原則面向對象設計的基本原則Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 39.1大型程序設計概述大型程序設計概述內(nèi)容提要內(nèi)容提要:n 大型程序的基本特點大型程序的基本特點n 與小型程序設計的差別與小型程序設計的差別n 大型程序設計方法大型程序設計方法n 模塊分解準則模塊分解準則 Chap9數(shù)據(jù)抽象與面向對象程序
3、設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 49.1大型程序設計概述大型程序設計概述一、一、 大型程序的特點大型程序的特點n大型程序是相對程序的大型程序是相對程序的復雜性復雜性而言而言,復雜性來自復雜性來自兩個方面兩個方面:n由多個人合作完成由多個人合作完成,形成大型程序的設計管理時的,形成大型程序的設計管理時的復雜性復雜性: 任務劃分、估計、資源分配、每個程序員任務劃分、估計、資源分配、每個程序員進度的掌握、控制,檢查每個階段的設計標準進度的掌握、控制,檢查每個階段的
4、設計標準等。等。n來自于大量的系統(tǒng)狀態(tài)來自于大量的系統(tǒng)狀態(tài)。正確處理每個狀態(tài)、組織。正確處理每個狀態(tài)、組織系統(tǒng)的程序邏輯、驗證系統(tǒng)的正確性非常困難系統(tǒng)的程序邏輯、驗證系統(tǒng)的正確性非常困難n正確性仍然是程序設計的首要目標。正確性仍然是程序設計的首要目標。健壯性、健壯性、易維護性、可靠性、可重用性易維護性、可靠性、可重用性Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 59.1大型程序設計概述大型程序設計概述二、二、 大型程序設計大型程序設計n大
5、型程序設計必然用模塊化設計思想大型程序設計必然用模塊化設計思想.n自頂向下、分而治之是對付系統(tǒng)復雜性的重要手段。自頂向下、分而治之是對付系統(tǒng)復雜性的重要手段。n分解和抽象是設計大型程序的重要方法。分解和抽象是設計大型程序的重要方法。n大型程序設計大型程序設計n就是如何將一個大型的程序就是如何將一個大型的程序系統(tǒng)分解為易于管理的模塊、系統(tǒng)分解為易于管理的模塊、如何定義模塊的界面、如何把這些模塊組織成一個程序如何定義模塊的界面、如何把這些模塊組織成一個程序系統(tǒng)系統(tǒng)的過程。的過程。n實質(zhì)是用模塊進行程序設計實質(zhì)是用模塊進行程序設計n重點在于模塊的連接和相互作用。重點在于模塊的連接和相互作用。n大型程
6、序的設計大型程序的設計=大型程序設計大型程序設計+小型程序設計小型程序設計n另一個很重要的方面是軟件開發(fā)環(huán)境和開發(fā)工具的選擇另一個很重要的方面是軟件開發(fā)環(huán)境和開發(fā)工具的選擇.Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 69.1大型程序設計概述大型程序設計概述三、三、 模塊分解的原則模塊分解的原則n模塊化方法通過減少任意時刻所必須考慮的細節(jié)模塊化方法通過減少任意時刻所必須考慮的細節(jié)(即抽象的即抽象的方法方法)來控制系統(tǒng)的復雜性來控制系統(tǒng)的復
7、雜性. n不同的模塊分解方法對系統(tǒng)的效率和復雜性的控制有很大不同的模塊分解方法對系統(tǒng)的效率和復雜性的控制有很大的影響的影響. 四、四、 模塊分解的兩種方法模塊分解的兩種方法:n基于基于功能抽象的模塊分解功能抽象的模塊分解方法方法. 數(shù)據(jù)作為模塊的界面數(shù)據(jù)作為模塊的界面, 成為成為橫向模塊化橫向模塊化設計設計. n基于數(shù)據(jù)抽象的模塊分解方法基于數(shù)據(jù)抽象的模塊分解方法. 以以“信息隱蔽信息隱蔽”為模塊分解為模塊分解原則原則. 數(shù)據(jù)上的操作作為模塊的界面數(shù)據(jù)上的操作作為模塊的界面, 稱為稱為縱向模塊化縱向模塊化設計設計, n大型軟件系統(tǒng)的設計一般是橫向和縱向模塊化設計的綜合大型軟件系統(tǒng)的設計一般是橫
8、向和縱向模塊化設計的綜合Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 79.2 數(shù)據(jù)抽象和抽象數(shù)據(jù)類型數(shù)據(jù)抽象和抽象數(shù)據(jù)類型n數(shù)據(jù)和對數(shù)據(jù)的處理是整個程序設計的核心數(shù)據(jù)和對數(shù)據(jù)的處理是整個程序設計的核心n數(shù)據(jù)表示的復雜性數(shù)據(jù)表示的復雜性決定其上操作實現(xiàn)的復雜性決定其上操作實現(xiàn)的復雜性: Algorithm+Data Structure= Programn有效地控制有效地控制數(shù)據(jù)的表示數(shù)據(jù)的表示,是控制程序復雜性的關鍵,是控制程序復雜性的關鍵
9、.n基于功能分解的模塊化設計方法不能用于控制大型基于功能分解的模塊化設計方法不能用于控制大型軟件系統(tǒng)的復雜性。軟件系統(tǒng)的復雜性。n數(shù)據(jù)抽象是一種新的設計方法,它把一組數(shù)據(jù)對象數(shù)據(jù)抽象是一種新的設計方法,它把一組數(shù)據(jù)對象及其作用其上的操作組成一個程序實體,使得外部及其作用其上的操作組成一個程序實體,使得外部只知道它做什么,而不知道它怎么做,也不知道其只知道它做什么,而不知道它怎么做,也不知道其數(shù)據(jù)對象是如何表示的。數(shù)據(jù)對象是如何表示的。數(shù)據(jù)抽象的背景與動機數(shù)據(jù)抽象的背景與動機Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學
10、院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 89.2數(shù)據(jù)抽象和抽象數(shù)據(jù)類型數(shù)據(jù)抽象和抽象數(shù)據(jù)類型n控制大型程序的復雜性要解決的問題:控制大型程序的復雜性要解決的問題:n更新程序設計語言中的類型定義的設施更新程序設計語言中的類型定義的設施,使得類型的內(nèi),使得類型的內(nèi)部表示細節(jié)對外界不可見,使得用戶程序不依賴于數(shù)據(jù)部表示細節(jié)對外界不可見,使得用戶程序不依賴于數(shù)據(jù)的某一具體的表示。的某一具體的表示。n尋求連接模塊的新方法,尋求連接模塊的新方法,盡可能縮小模塊的界面盡可能縮小模塊的界面。n解決途徑:解決途徑:n在程序設計語言中更新模塊的概念,尋求訪問類型對象在程序設
11、計語言中更新模塊的概念,尋求訪問類型對象的新途徑。的新途徑。nSimula67語言引入類(語言引入類(class)的概念。一個邏輯模的概念。一個邏輯模塊在其中可以表示為過程、函數(shù)、或類塊在其中可以表示為過程、函數(shù)、或類n設計具有下面特征的語言,如并行設計具有下面特征的語言,如并行Pascal、Ada等:等:數(shù)據(jù)抽象的背景與動機數(shù)據(jù)抽象的背景與動機Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 99.2數(shù)據(jù)抽象和抽象數(shù)據(jù)類型數(shù)據(jù)抽象和抽象數(shù)據(jù)類
12、型n類型不在是單純的一組值集,而是類型不在是單純的一組值集,而是一組值集和一組操作一組值集和一組操作的的二元合成。二元合成。n為用戶提供自定義類型的設施,如并發(fā)為用戶提供自定義類型的設施,如并發(fā)Pascal中的進程,中的進程,管程,過程,管程,過程,Ada中的中的Package。使得類型表示細節(jié)、操使得類型表示細節(jié)、操作的實現(xiàn)對外不可見,故稱為抽象數(shù)據(jù)類型作的實現(xiàn)對外不可見,故稱為抽象數(shù)據(jù)類型。n用戶自定義類型設施正是語言中的基本程序模塊,從而將用戶自定義類型設施正是語言中的基本程序模塊,從而將模塊和數(shù)據(jù)類型等同起來;一個模塊是由數(shù)據(jù)和作用在其模塊和數(shù)據(jù)類型等同起來;一個模塊是由數(shù)據(jù)和作用在其
13、上的操作構成的實體。上的操作構成的實體。n這時,模塊不在是一個功能抽象單位,而是一個數(shù)據(jù)抽象這時,模塊不在是一個功能抽象單位,而是一個數(shù)據(jù)抽象單位。模塊間的界面不再是復雜的數(shù)據(jù),而是作用在數(shù)據(jù)單位。模塊間的界面不再是復雜的數(shù)據(jù),而是作用在數(shù)據(jù)上的具有形式說明的操作上的具有形式說明的操作數(shù)據(jù)抽象的背景與動機數(shù)據(jù)抽象的背景與動機Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 109.2數(shù)據(jù)抽象和抽象數(shù)據(jù)類型數(shù)據(jù)抽象和抽象數(shù)據(jù)類型總之:總之:n數(shù)據(jù)
14、抽象是程序設計方法學的一個極為重數(shù)據(jù)抽象是程序設計方法學的一個極為重要的方法,是要的方法,是70年代程序設計方法學的主年代程序設計方法學的主要成就之一。要成就之一。n把把數(shù)據(jù)抽象和結構化程序設計數(shù)據(jù)抽象和結構化程序設計一起譽為程一起譽為程序設計方法學發(fā)展史上的兩個序設計方法學發(fā)展史上的兩個里程碑里程碑。Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 119.3 抽象數(shù)據(jù)類型的形式規(guī)范描述抽象數(shù)據(jù)類型的形式規(guī)范描述n為什么:為什么:n程序員如何
15、來定義數(shù)據(jù)抽象模塊?程序員如何來定義數(shù)據(jù)抽象模塊?n模塊的用戶怎樣才能在不知道細節(jié)的情模塊的用戶怎樣才能在不知道細節(jié)的情況下,正確地使用語言數(shù)據(jù)抽象模塊?況下,正確地使用語言數(shù)據(jù)抽象模塊?Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 129.3.1 抽象數(shù)據(jù)類型的規(guī)范描述抽象數(shù)據(jù)類型的規(guī)范描述1. 抽象數(shù)據(jù)類型的規(guī)范描述抽象數(shù)據(jù)類型的規(guī)范描述:n程序員在劃分模塊時程序員在劃分模塊時,必須給出模塊語義的注釋必須給出模塊語義的注釋規(guī)范描述規(guī)范描
16、述:n說明模塊將做什么說明模塊將做什么;n使得設計者能夠以此作為模塊設計的目標使得設計者能夠以此作為模塊設計的目標;n確保編寫的模塊滿足規(guī)范描述的要求確保編寫的模塊滿足規(guī)范描述的要求,保證模塊實現(xiàn)的保證模塊實現(xiàn)的正確性正確性;n模塊的使用者以此作為使用的依據(jù)模塊的使用者以此作為使用的依據(jù),保證用戶正確理解保證用戶正確理解模塊和正確使用模塊模塊和正確使用模塊n便于證明模塊實現(xiàn)的正確性便于證明模塊實現(xiàn)的正確性;n為使用模塊的應用程序的正確性證明提供條件為使用模塊的應用程序的正確性證明提供條件Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟
17、件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 139.3.1 抽象數(shù)據(jù)類型的規(guī)范描述抽象數(shù)據(jù)類型的規(guī)范描述2. ADT規(guī)范描述方法規(guī)范描述方法nADT的形式規(guī)范有許多方法,可歸為兩類:的形式規(guī)范有許多方法,可歸為兩類:n操作規(guī)范操作規(guī)范n定義規(guī)范定義規(guī)范n操作規(guī)范:操作規(guī)范:不是描述抽象類型的性質(zhì),而是給出不是描述抽象類型的性質(zhì),而是給出構造它的方法構造它的方法,即用某種底層語言為這個類型建,即用某種底層語言為這個類型建立模型。特點:立模型。特點:n它容易被培訓過的程序員構造。它容易被培訓過的程序員構造。n對于包含少量中等運算的抽象類型,操作規(guī)范
18、提供了對于包含少量中等運算的抽象類型,操作規(guī)范提供了充分的清晰度充分的清晰度n當被描述的運算變得復雜時,操作規(guī)范勢必變得冗長當被描述的運算變得復雜時,操作規(guī)范勢必變得冗長Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 149.3.1 抽象數(shù)據(jù)類型的規(guī)范描述抽象數(shù)據(jù)類型的規(guī)范描述n定義規(guī)范:定義規(guī)范:給出抽象類型的目標及其運算必備給出抽象類型的目標及其運算必備的性質(zhì)的性質(zhì)n特點:傾向于一般的定義類型,不過多涉及特點:傾向于一般的定義類型,不過多
19、涉及多余的細節(jié),因而能增加規(guī)范的清晰度多余的細節(jié),因而能增加規(guī)范的清晰度n方法:方法:nHoare公理規(guī)范方法:應用廣泛公理規(guī)范方法:應用廣泛n數(shù)學語義的格理論方法:特點對論述的定數(shù)學語義的格理論方法:特點對論述的定義域限制更少;可以對實現(xiàn)者提供引導義域限制更少;可以對實現(xiàn)者提供引導Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 15Hoare公理化方法公理化方法n例:例:Module smallintset: n給出了在域給出了在域1100
20、的整數(shù)集合的抽象。的整數(shù)集合的抽象。n運算包括:運算包括:insert, remove, has。n當類型當類型smallintset的變量被聲明時,它被初始的變量被聲明時,它被初始化為空集?;癁榭占該集合將由該集合將由100個元素的布爾數(shù)組個元素的布爾數(shù)組S描述,即:描述,即: s: array 1.100 of boolean其中,其中,s(i)=TRUE表示表示i屬于該集合。屬于該集合。Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved
21、 16Module smallintsetn該抽象類型的規(guī)范如下:該抽象類型的規(guī)范如下:Type smallintset= pre true module smallset abstract invariant true concrete invariant true exports( insert, remove, has, :=) var a:array 1.100 of boolean(Cont)Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reser
22、ved 17Module smallintset(Cont)procedure insert(i:integer)= pre 1=i=100 and smallset=smallset post smallset=smallset union i begin s(i):=true end insertProcedure remove(i:integer)= pre 1=i=100 and smallset=smallset post smallset=smallset - i begin s(i):=false end removeChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計
23、2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 18Module smallintset(Cont)nFunction has(i:integer) return hasresult:boolean= pre 1=i=100 post hasresult=(i smallset) begin hasresult := s(i) end hasInitially post smallset= begin for j in s.indextype loop s(j):=false end loop end
24、initiallyChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 19Module smallintset(Cont)Abstraction function setvalue returns result =import(s) begin resultset=j| s(j) and 1=j=100 end invariant trueEnd smallintset 該模型提供了不同層次的信息:模型的用戶僅看到與該模型提供了不同層次的信息:模
25、型的用戶僅看到與模型子程序相聯(lián)系的模型子程序相聯(lián)系的Pre/Post條件,以及與模型本身相條件,以及與模型本身相聯(lián)系的聯(lián)系的Pre/Post條件。條件。 模型實現(xiàn)者還會看到模型子程序的體和模型中說明的模型實現(xiàn)者還會看到模型子程序的體和模型中說明的標識符標識符Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 20代數(shù)方法代數(shù)方法n抽象類型的代數(shù)規(guī)范由三部分組成:抽象類型的代數(shù)規(guī)范由三部分組成:n語法規(guī)范:語法規(guī)范:該規(guī)范提供了語法和類型檢查信息,
26、該規(guī)范提供了語法和類型檢查信息,即與類型相聯(lián)系的運算的名字、定義域和值域。即與類型相聯(lián)系的運算的名字、定義域和值域。n語義規(guī)范:語義規(guī)范:一組公理集合,這些公理一組公理集合,這些公理使用確定使用確定運算之間運算之間的關系定義運算。的關系定義運算。n約束規(guī)范:約束規(guī)范:約束規(guī)范涉及前置條件和執(zhí)行條件。約束規(guī)范涉及前置條件和執(zhí)行條件。n例:例:Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 21類型類型BAG的代數(shù)規(guī)范的代數(shù)規(guī)范n語法規(guī)范:語法規(guī)
27、范:nEmpty-bag: bagnInsert: bag x integer bagnDelete: bag x integer bagnMember-of: bag x integer booleanChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 22類型類型BAG的代數(shù)規(guī)范的代數(shù)規(guī)范(Cont)n語義規(guī)范語義規(guī)范nDeclare b: bag; i, i:integer1.Member-of ? (empty-bag, i) = fal
28、se2.Member-of ?(insert(b, i), i) = if ? = ? (i, i) then true else member-of ?(b, i)3.Delete( empty-bag, i)=empty-bag4.Delete(insert(b, i), i)= if ?=?(i, i) then b else insert(delete(b,i), i)Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 23例例2:類型:
29、類型SET的代數(shù)規(guī)范的代數(shù)規(guī)范n語法規(guī)范語法規(guī)范nEmpty-set: setnInsert: set x integer setnDelete: set x integer setnMember-of?: set x integer booleanChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 24例例2:類型:類型SET的代數(shù)規(guī)范的代數(shù)規(guī)范n語義規(guī)范語義規(guī)范nDeclare s: set; i,i:integer;1.Member-of?
30、 (empty-set, i) = false2.Member-of?(insert(s,i), i) = if ?=?(i,i) then true else member-of?(s,i)3.Delete (empty-set, i) = empty-set4.Delete (insert(s,i),i) = if ?=?(i,i) then delete(s,i) else insert(delete(s,i), i)Bag 與與Set 的的區(qū)別區(qū)別Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計
31、方法學程序設計方法學 All Rights Reserved 259.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢n穩(wěn)定穩(wěn)定: 較小的需求變化不會導致系較小的需求變化不會導致系統(tǒng)結構大的改變統(tǒng)結構大的改變n舉例:某公司的銷售處理系統(tǒng)舉例:某公司的銷售處理系統(tǒng)定單定單合同合同出費出費Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 269.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢n 穩(wěn)定穩(wěn)定: 數(shù)據(jù)和功能都打包在一起,從而改善軟件的再數(shù)據(jù)和功能都打包
32、在一起,從而改善軟件的再重用性重用性n軟件重用能提高質(zhì)量軟件重用能提高質(zhì)量,減少由于編制新的系統(tǒng)代碼而,減少由于編制新的系統(tǒng)代碼而產(chǎn)生的成本產(chǎn)生的成本FileMgrMacroEditorMathUtilitiesTextEditorPrintUtilitiesFormatEditorMenusStringUtilitiesSpreadsheetWord ProcessorReusable-Component RepositoryChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All
33、 Rights Reserved 279.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢n面向對象的模型更加貼切地反映了現(xiàn)實世界面向對象的模型更加貼切地反映了現(xiàn)實世界n更加準確地描述公共數(shù)據(jù)和過程更加準確地描述公共數(shù)據(jù)和過程n易于理解,尤其對于使用者易于理解,尤其對于使用者現(xiàn)實世界現(xiàn)實世界Laser PrinterExternal DriveComputer對象圖對象圖Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 289.4 面向對象技術的優(yōu)勢面
34、向對象技術的優(yōu)勢n 面向對象的方法支持大規(guī)模開發(fā)面向對象的方法支持大規(guī)模開發(fā)n 可以嚴格定義各個組件之間的交互可以嚴格定義各個組件之間的交互n 減少內(nèi)部的依賴關系減少內(nèi)部的依賴關系n 減少集成的問題減少集成的問題n 支持并行開發(fā)支持并行開發(fā)Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 299.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢n幫助開發(fā)多層結構幫助開發(fā)多層結構 Equipment and Customer specific CodeP
35、rocesses and other application code Major abstractions, classes, etc. MechanismsH/W specific code, O/S specific code general-purpose code12345ApplicationSpecificApplicationIndependentLess ReuseMore ReuseChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reser
36、ved 309.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢n對系統(tǒng)的一部分進行再工程,保護前對系統(tǒng)的一部分進行再工程,保護前期軟件應用的投資期軟件應用的投資Existing SoftwareReengineered SoftwareChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 319.4 面向對象技術的優(yōu)勢面向對象技術的優(yōu)勢(小結小結)n需求改變時系統(tǒng)穩(wěn)定需求改變時系統(tǒng)穩(wěn)定n高水準的軟件高水準的軟件Reusabilityn更準確的模型,更易于
37、理解更準確的模型,更易于理解n嚴格定義大規(guī)模開發(fā)的交互界限嚴格定義大規(guī)模開發(fā)的交互界限n對象的封裝有利于對象的封裝有利于 client-server 應用的開發(fā)應用的開發(fā)n再工程保護前期投資再工程保護前期投資OOD增加細節(jié)和設計決策增加細節(jié)和設計決策開發(fā)人員的角度開發(fā)人員的角度OOA開發(fā)需求模型開發(fā)需求模型用戶的角度用戶的角度OOP實現(xiàn)和測試實現(xiàn)和測試Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 329.5 面向對象的基本概念面向對象的基本
38、概念 n對象、類、消息對象、類、消息n封裝性、繼承性和多態(tài)性封裝性、繼承性和多態(tài)性n概念內(nèi)涵的區(qū)別概念內(nèi)涵的區(qū)別OOM = Object+ Class + Inheritance + Communication with messagesChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 331. 對象對象Object化學過程化學過程連接顯示連接顯示n一個對象代表了一個現(xiàn)實的或虛構的實體一個對象代表了一個現(xiàn)實的或虛構的實體n自然實體自然實體n概念
39、實體概念實體n軟件實體軟件實體Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 34對象對象在在OO中,所謂對象,是一個屬性(數(shù)據(jù))集及中,所謂對象,是一個屬性(數(shù)據(jù))集及其操作(行為)的封裝體。其操作(行為)的封裝體。對象對象 = = 數(shù)據(jù)數(shù)據(jù) + + 功能功能n作為計算機模擬真實世界的抽象,一個對象就作為計算機模擬真實世界的抽象,一個對象就是一個實際問題論域、一個物理的實體或邏輯是一個實際問題論域、一個物理的實體或邏輯的實體。的實體。n在計
40、算機程序中,可視為一個在計算機程序中,可視為一個“基本程序模塊基本程序模塊”,因為它包含了數(shù)據(jù)結構和所提供的相關操作功因為它包含了數(shù)據(jù)結構和所提供的相關操作功能。能。 Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 35對象的屬性對象的屬性n對象是應用中具有明顯邊界和含義的概對象是應用中具有明顯邊界和含義的概念、抽象或事物念、抽象或事物n 一個對象有三個重要屬性一個對象有三個重要屬性: :n 狀態(tài)狀態(tài)n 行為行為n 標識標識n 術語術語“實例
41、實例”是是“對象對象”的同義詞的同義詞Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 36對象的狀態(tài)對象的狀態(tài)n 一個對象的狀態(tài)是它反映于現(xiàn)實世界的一個對象的狀態(tài)是它反映于現(xiàn)實世界的一系列屬性:一系列屬性:n 參數(shù)的數(shù)值參數(shù)的數(shù)值 ( (也就是也就是, ,與對象有關系的數(shù)據(jù)與對象有關系的數(shù)據(jù)) )n 它與其它對象的關系它與其它對象的關系n 任一時刻的歷史狀態(tài)任一時刻的歷史狀態(tài)n包括那些屬性取決于視點包括那些屬性取決于視點可能的狀態(tài)可能的狀態(tài)(
42、運營角度)(運營角度)停泊停泊 運營運營著陸著陸 終止終止班機班機 747 747可能的狀態(tài)可能的狀態(tài)(維修(維修角度)角度)發(fā)動機型號發(fā)動機型號 線路規(guī)范線路規(guī)范 Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 37對象的行為對象的行為n定義當其它對象發(fā)出請求時,該對象如定義當其它對象發(fā)出請求時,該對象如何反應何反應n由為對象定義的一系列操作決定由為對象定義的一系列操作決定班機班機 747核對出發(fā)時間核對出發(fā)時間(返回返回 9:27)機票代
43、理機票代理Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 38對象的標識對象的標識OIDn 每一個對象都有一個唯一的標識每一個對象都有一個唯一的標識, , 即使即使其狀態(tài)有可能與其它對象一樣其狀態(tài)有可能與其它對象一樣班機班機 747 on 11/10班機班機 747 on 11/11班機班機 747 on 11/12Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件
44、所 程序設計方法學程序設計方法學 All Rights Reserved 392. 什么是類(什么是類(Class)n 類是一組具有相同結構和行為的對象的集合類是一組具有相同結構和行為的對象的集合n 共同的結構通過屬性表現(xiàn)出來共同的結構通過屬性表現(xiàn)出來 (i.e. 數(shù)據(jù)數(shù)據(jù))n 共同的行為通過操作表現(xiàn)出來共同的行為通過操作表現(xiàn)出來 (i.e. 功能功能)班機班機 747結構結構班機號班機號日期日期分配的班分配的班機機起點起點終點終點狀態(tài)狀態(tài)行為行為裝載設備裝載設備起飛起飛延遲延遲取消取消終止終止Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信
45、息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 403. 消息(消息(Message)n消息(消息(Message)是面向對象系統(tǒng)中實現(xiàn)對象間的通)是面向對象系統(tǒng)中實現(xiàn)對象間的通信和請求任務的操作。信和請求任務的操作。n消息傳遞是系統(tǒng)構成的基本元素,是程序運行的基本消息傳遞是系統(tǒng)構成的基本元素,是程序運行的基本處理活動。處理活動。nMessage: = object_ID. method_ID (parameter(s);n一個對象所能接受的消息及其所帶參數(shù),構成該對象一個對象所能接受的消息及其所帶參數(shù),構成該對象的外部接口。的外部接口。n
46、一個對象可以同時向多個對象發(fā)送消息,也可以接受一個對象可以同時向多個對象發(fā)送消息,也可以接受多個對象發(fā)來的消息,消息只反映發(fā)送者的請求,由多個對象發(fā)來的消息,消息只反映發(fā)送者的請求,由于消息的識別、解釋取決于接受者,因而同樣的消息于消息的識別、解釋取決于接受者,因而同樣的消息在不同對象中可解釋成相應的行為。在不同對象中可解釋成相應的行為。 Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 414. 封裝性封裝性(Encapsulation)n封
47、裝的目的是有效實現(xiàn)信息隱藏原則。這是軟件設計模封裝的目的是有效實現(xiàn)信息隱藏原則。這是軟件設計模塊化、軟件復用和軟件維護的一個基礎。塊化、軟件復用和軟件維護的一個基礎。n封裝是一種機制,它將某些代碼和數(shù)據(jù)鏈接起來,形成封裝是一種機制,它將某些代碼和數(shù)據(jù)鏈接起來,形成一個自包含的黑盒子(即一個對象)。封裝的定義為:一個自包含的黑盒子(即一個對象)。封裝的定義為:n一個清楚的邊界,封裝的基本單位是對象;一個清楚的邊界,封裝的基本單位是對象;n一個接口,描述該對象與其它對象之間的相互作用;一個接口,描述該對象與其它對象之間的相互作用; n受保護的內(nèi)部實現(xiàn),提供對象的相應的軟件功能細節(jié),受保護的內(nèi)部實現(xiàn)
48、,提供對象的相應的軟件功能細節(jié),且實現(xiàn)細節(jié)不能在定義該對象的類之外且實現(xiàn)細節(jié)不能在定義該對象的類之外DirLocSet-in-griddisplayFacing WallTurn-left/rightAdvanceLocationChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 425. 繼承性(繼承性(Inheritance)n繼承性體現(xiàn)了現(xiàn)實世界中對象之間的獨特關系。繼承性體現(xiàn)了現(xiàn)實世界中對象之間的獨特關系。n既然類是對具體對象的抽象,那么
49、就可以有不同既然類是對具體對象的抽象,那么就可以有不同級別的抽象,就會形成類的層次關系。級別的抽象,就會形成類的層次關系。FlyingThingAnimalAirplaneHelicopterBirdWolfHorseChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 43繼承繼承n 繼承表示子類從父類繼承時抽象的層次繼承表示子類從父類繼承時抽象的層次n 單繼承:子類只從一個父類繼承單繼承:子類只從一個父類繼承n 多繼承:子類從多于一個的父類繼承
50、多繼承:子類從多于一個的父類繼承n 繼承通常被稱為繼承通常被稱為 “is-a” 或或“kind-of” n 一個子類的實例也一個子類的實例也 “is a” 父類的實例父類的實例n 一個子類的實例是一個子類的實例是 “kind-of” 父類父類n繼承的內(nèi)容:繼承的內(nèi)容:n屬性、操作、關系、約束屬性、操作、關系、約束Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 44多重繼承多重繼承n 在建模中直觀、準確地反映現(xiàn)實世界在建模中直觀、準確地反映現(xiàn)實
51、世界n 在實現(xiàn)中有可能帶來困難在實現(xiàn)中有可能帶來困難n名字沖突名字沖突: 兩個或更多的子類定義了同樣的屬性和操作兩個或更多的子類定義了同樣的屬性和操作n重復繼承重復繼承: 兩個或更多的同級父類有同一個子類兩個或更多的同級父類有同一個子類n 每一個編程語言每一個編程語言/環(huán)境都有解決的方法環(huán)境都有解決的方法n 并不是所有面向對象編程語言都直接支持多重繼承并不是所有面向對象編程語言都直接支持多重繼承VehicleGroundVehicleAirVehicleCarTruckAmphibiousVehicleSailboatChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-
52、18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 45繼承的益處繼承的益處n增加軟件重用的機會增加軟件重用的機會n降低開發(fā)和維護費用降低開發(fā)和維護費用n 開發(fā)一個更貼近現(xiàn)實的模型開發(fā)一個更貼近現(xiàn)實的模型n 系統(tǒng)更加靈活系統(tǒng)更加靈活n所有的子類自動繼承父類的改變所有的子類自動繼承父類的改變n可以通過增加一個子類來處理需求的改變可以通過增加一個子類來處理需求的改變n 保證類之間的一致性保證類之間的一致性n父類可以為所有子類定制規(guī)則父類可以為所有子類定制規(guī)則; (許多(許多OOP語語言必須指定這類規(guī)則)言必須指定這類規(guī)則)n
53、繼承界面和實現(xiàn)過程繼承界面和實現(xiàn)過程n支持多態(tài)支持多態(tài)Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 46繼承繼承 vs. 聚合聚合n 容易混淆容易混淆n 繼承是繼承是 “is-a” 或或 “kind-of” 的關系的關系n 聚合是聚合是 “has-a” 的關系的關系n 替代法則:測試繼承關系替代法則:測試繼承關系替代法則替代法則如果子類如果子類 D 的一個對象被替換為父類的一個對象被替換為父類 B 的一個對象的一個對象, 在類在類 B 中定
54、義的所有程序的行為應保持不變。中定義的所有程序的行為應保持不變。Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 476. 多態(tài)性多態(tài)性 (Polymorphism)n多態(tài)性原意是指一種具有多種形態(tài)的事物,這里是指同一消多態(tài)性原意是指一種具有多種形態(tài)的事物,這里是指同一消息為不同的對象所接受時,可導致不同的行為。息為不同的對象所接受時,可導致不同的行為。n多態(tài)性支持多態(tài)性支持“同一接口,多種方法同一接口,多種方法”,使高層代碼(算法),使高層代
55、碼(算法)只寫一次而在低層可多次復用,面向對象的多種多態(tài)性方法只寫一次而在低層可多次復用,面向對象的多種多態(tài)性方法的使用,如動態(tài)綁定(的使用,如動態(tài)綁定(dynamic binding)、重載)、重載(overload)等,提高了程序設計的靈活性和效率。等,提高了程序設計的靈活性和效率。n在在C+中,利用多態(tài)性概念,使用函數(shù)名和參數(shù)類別來實現(xiàn)中,利用多態(tài)性概念,使用函數(shù)名和參數(shù)類別來實現(xiàn)功能重載功能重載.PolygonareaRECTANGLEareaTRIANGLEareaHEXAGONareaChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大
56、信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 48double avg (const double a , int size) ;double avg (const int a , int size) ;double avg (const double a , int size) ; double sum = 0.0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( sum / size ) ; double avg (const int a , int size) ; int s
57、um = 0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( (double) sum / size ) ; main() int k3 = 1, 2, 3 ; double x3 = 1.1, 2.2, 3.3 ; cout avg(k, 3) “ int average n” ; cout avg(x, 3) “ double average n” ; Function (or parameter) overloading :不同函數(shù)共用一個不同函數(shù)共用一個名字,而調(diào)用參數(shù)名字,而調(diào)用參數(shù)的特征不同。的特征不同。例:例:7 Over
58、loadingChap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 49 Operator overloading : 同一運算符同一運算符 (operator)作用于不同作用于不同類型的操作數(shù)類型的操作數(shù) (operand) 上面。上面。 在編譯在編譯(compile)階段就決定了使用類型及執(zhí)行階段就決定了使用類型及執(zhí)行代碼,故亦稱為代碼,故亦稱為靜態(tài)聯(lián)編靜態(tài)聯(lián)編 (static binding)或或先先前聯(lián)編前聯(lián)編 (early binding
59、) 。7 Overloading多態(tài)和重載的區(qū)別:多態(tài)和重載的區(qū)別:多態(tài)允許不同的類所定義的方法具有相同的名字多態(tài)允許不同的類所定義的方法具有相同的名字重載允許同名的方法重載允許同名的方法在同一個類中定義多次。在同一個類中定義多次。Chap9數(shù)據(jù)抽象與面向對象程序設計數(shù)據(jù)抽象與面向對象程序設計2022-4-18鮑玉斌鮑玉斌 東大信息學院軟件所東大信息學院軟件所 程序設計方法學程序設計方法學 All Rights Reserved 509.6 面向對象設計的過程面向對象設計的過程n“面向對象面向對象”是一個認識論和方是一個認識論和方法學的基本原則。法學的基本原則。n人對客觀世界的認識和判斷常常人
60、對客觀世界的認識和判斷常常是采用由一般到特殊(演譯法)是采用由一般到特殊(演譯法)和由特殊到一般(歸納法)的兩和由特殊到一般(歸納法)的兩種方法,這實際上是對認識判斷種方法,這實際上是對認識判斷的問題論域對象進行分解和歸類的問題論域對象進行分解和歸類的過程。的過程。OOD增加細節(jié)和設計決策增加細節(jié)和設計決策開發(fā)人員的角度開發(fā)人員的角度OOA開發(fā)需求模型開發(fā)需求模型用戶的角度用戶的角度OOP實現(xiàn)和測試實現(xiàn)和測試描述一個解所描述一個解所需要的對象需要的對象問題空間中問題空間中的對象的對象實現(xiàn)一個解所實現(xiàn)一個解所需要的對象需要的對象解空間中解空間中的對象的對象類庫中所擁有類庫中所擁有的對象的對象由面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄭州黃河護理職業(yè)學院《動畫短片創(chuàng)作實踐》2023-2024學年第一學期期末試卷
- 浙大寧波理工學院《生物藥物化學》2023-2024學年第一學期期末試卷
- 全程種植玉米高產(chǎn)高效栽培技術
- 餐飲行業(yè)投資指南模板
- DB2201T 72-2024 公共數(shù)據(jù)授權運營評估規(guī)范
- 生物學開題答辯模板
- 七夕節(jié)文化講座
- 申請外國人簽證邀請函需提供的材料
- 讀后感《小王子》
- 二零二五年度贍養(yǎng)協(xié)議及養(yǎng)老產(chǎn)業(yè)市場調(diào)研合同范本3篇
- 2024屆北京市通州區(qū)英語高三上期末統(tǒng)考試題含解析
- 國家免疫規(guī)劃疫苗兒童免疫程序說明-培訓課件
- 能源管理體系記錄表單
- 智慧城市建設課件
- 污水處理廠提標升級可研
- 湖南省建設工程施工階段監(jiān)理服務費計費規(guī)則【實用文檔】doc
- GB/T 6913-2008鍋爐用水和冷卻水分析方法磷酸鹽的測定
- GB/T 18717.2-2002用于機械安全的人類工效學設計第2部分:人體局部進入機械的開口尺寸確定原則
- 中國文化概論(第三版)全套課件
- 117-鋼結構工程質(zhì)量常見問題與管控措施
- SHS5230三星指紋鎖中文說明書
評論
0/150
提交評論