版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、貴州民族學(xué)院本科畢業(yè)論文(設(shè)計(jì))開題報(bào)告題目:C+設(shè)計(jì)模式及其應(yīng)用學(xué) 院計(jì)算機(jī)與信息工程學(xué)院 專 業(yè) 電子信息科學(xué)與技術(shù) 班 級(jí) 2006級(jí) 姓 名 劉定發(fā) 學(xué) 號(hào) 200612030030 指導(dǎo)教師 蔡 立 填表日期 蔡 立 C+設(shè)計(jì)模式及應(yīng)用劉定發(fā)摘要:C+的設(shè)計(jì)模式是一個(gè)被很多人討論過的話題,其實(shí)我們不用把模式看的很神秘,所謂的模式就是我們思考問題的一種方法,一些達(dá)人為了后人的方便,而將一些相類似問題的解決方法抽象出來了,從而形成一種模式。其實(shí),每個(gè)程序員在編程過程中都會(huì)自覺或不自覺的用到某些模式,所以大家不要刻意的去仿照某種模式,在你對(duì)編程有了一定的領(lǐng)悟后,模式就會(huì)不請(qǐng)自來的出現(xiàn)在你的
2、腦海里。C+的常用模式有:簡(jiǎn)單工廠模式(Simple Factory Pattern)、工廠方法模式(Factory Method Pattern)、抽象工廠模式(Abstract Factory)、單件模式(Single Pattern)等。 關(guān)鍵詞:程序設(shè)計(jì)、C+、設(shè)計(jì)模式、UML。C + + design patterns and applicationLiuDingFaAbstract: C + + is a design model by many people have discussed topics, actually we don't see the pattern
3、of the mysterious, so-called pattern is a way of thinking for posterity, some da, and some of the convenience of similar problem solving method was abstracted, thus forming a kind of mode. Actually, each programmer in the programming process will consciously or not to use certain mode, so you don
4、9;t painstakingly took a pattern of programming, you have understanding, pattern will not invited appeared in your mind. C+ is the common mode: Simple Factory Pattern、Factory Method Pattern、Abstract Factory)、Single Pattern and so on.Keywords:Programming、C+、common mode、UML、realizing.目 錄目 錄ii第一章 前 言1第
5、二章 程序設(shè)計(jì)語言發(fā)展簡(jiǎn)史22.1. 結(jié)構(gòu)化程序設(shè)計(jì):22.2. 面向?qū)ο蟪绦蛟O(shè)計(jì):2第三章 C+語言特性43.1.類53.2 繼承63.3.多態(tài)7第四章 統(tǒng)一建模語言UML94.1 UML簡(jiǎn)介94.2 UML的內(nèi)容10第五章 C+中類與對(duì)象及其關(guān)系135.1、關(guān)聯(lián)(Association)135.1.1 單向關(guān)聯(lián)135.1.2雙向關(guān)聯(lián)145.1.3 自身關(guān)聯(lián)155.1.4、多維關(guān)聯(lián)(N-ary Association)155.2 泛化(Generalization)165.3 依賴(Dependency)175.4聚合(Aggregation)175.5組合(Composite)18第六章
6、C+設(shè)計(jì)常用設(shè)計(jì)模式186.1 Factory模式186.1.1功能:186.1.2 UML結(jié)構(gòu)圖:186.1.3 抽象基類186.1.4 解析196.1.5示例代碼:196.2 Abstract Factory模式226.2.1功能226.2.2UML結(jié)構(gòu)圖226.2.3優(yōu)缺點(diǎn)226.2.4實(shí)現(xiàn)236.2.5示例代碼236.2.6實(shí)例246.3 Composite模式256.3.1功能256.3.2 UML結(jié)構(gòu)圖256.3.3 優(yōu)缺點(diǎn)256.3.4 實(shí)現(xiàn)266.3.5示例代碼286.3.6實(shí)例296.4 Proxy 模式306.4.1功能306.4.2 UML結(jié)構(gòu)306.4.4要點(diǎn)316.4
7、.5實(shí)現(xiàn)326.5 Singleton模式356.5.1功能356.5.2 UML結(jié)構(gòu)圖356.5.3優(yōu)缺點(diǎn)356.5.4實(shí)現(xiàn)356.5.5示例代碼36第七章 設(shè)計(jì)模式在軟件開發(fā)過程中的使用分區(qū)LED顯示屏取模軟件397.1 軟件概述397.2 開發(fā)目標(biāo)407.3 軟件詳細(xì)功能407.4 設(shè)計(jì)模式在該軟件中的使用407.4.1單例模式407.4.2工廠模式427.4.3 文檔視圖模型447.5、軟件設(shè)計(jì)457.5.1開發(fā)環(huán)境45第八章 總結(jié)47參考文獻(xiàn)49致謝50原 創(chuàng) 性 聲 明1關(guān)于學(xué)位論文使用授權(quán)的聲明1第一章 前 言在1966年,Dahl 和Nygaard 發(fā)表了關(guān)于在Simula中提
8、出類(Class)和子類(SubClass)的概念,這些概念后來被應(yīng)用到Simula 67中。1967年6月的一個(gè)會(huì)議上,Dahl建議對(duì)Type和Class概念進(jìn)行明確定義,這引發(fā)了一次認(rèn)真嚴(yán)謹(jǐn)?shù)挠懻?,為語言的標(biāo)準(zhǔn)化奠定了基礎(chǔ);Simlua是第一個(gè)實(shí)現(xiàn)的面向?qū)ο笳Z言,但并不是第一個(gè)完整實(shí)現(xiàn)的。Smalltalk雖然并沒有被廣泛使用,但它對(duì)面向?qū)ο蠹夹g(shù)的推廣起了非常大的作用。C+誕生于1979年Bells實(shí)驗(yàn)室,是第一個(gè)被廣泛使用的面向?qū)ο笳Z言。C+是一個(gè)從C語言演化過來的支持面向?qū)ο缶幊痰某绦蛘Z言。隨著C+等面向?qū)ο蟪绦蛘Z言的發(fā)展,開發(fā)人員在開發(fā)過程中不斷總結(jié)了各種經(jīng)驗(yàn),最終漸漸形成了一套理論
9、性的開發(fā)框架,這就是設(shè)計(jì)模式。由于設(shè)計(jì)模式是一個(gè)經(jīng)驗(yàn)累積型的概念,因此沒有能夠在實(shí)際教學(xué)過程中得到好的應(yīng)用;相反需要的開發(fā)人員長(zhǎng)時(shí)間的開發(fā)經(jīng)驗(yàn)才能夠接觸或領(lǐng)會(huì)。設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 設(shè)計(jì)模式的產(chǎn)生主要是由開發(fā)者在開發(fā)過程中不斷總結(jié)、歸納形成的一個(gè)可重用的代碼框架或者是設(shè)計(jì)思想。想對(duì)而言,這些關(guān)于單個(gè)設(shè)計(jì)模式的論述顯得比較零散,又因?yàn)楦鞣N程序設(shè)計(jì)語言的差異,導(dǎo)致部分設(shè)計(jì)模式在C+中的應(yīng)用顯得比較牽強(qiáng)或者不夠靈活1。再者,目前大部分學(xué)員對(duì)C+或其他面向?qū)ο笳Z言的學(xué)習(xí)還停留在語言特性的基礎(chǔ)上,幾乎沒有從面向?qū)ο蟮?/p>
10、角度去思考、沒有使用面向?qū)ο蟮姆椒▉硖幚砻嫦驅(qū)ο蟪绦蛟O(shè)計(jì)中遇到的問題,而改變這一傳統(tǒng)學(xué)習(xí)方式的方法就是在學(xué)習(xí)面向?qū)ο笳Z言的時(shí)候引入面向?qū)ο笤O(shè)計(jì)模式。第二章 程序設(shè)計(jì)語言發(fā)展簡(jiǎn)史2.1. 結(jié)構(gòu)化程序設(shè)計(jì):結(jié)構(gòu)化程序設(shè)計(jì)由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模塊化設(shè)計(jì)為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,這樣使完成每一個(gè)模塊的工作變單純而明確,為設(shè)計(jì)一些較大的軟件打下了良好的基礎(chǔ)。 由于模塊相互獨(dú)立,因此在設(shè)計(jì)其中一個(gè)模塊時(shí),不會(huì)受到其它模塊的牽連,因而可將原來較為復(fù)雜的問題化簡(jiǎn)為一系列簡(jiǎn)單模塊的設(shè)計(jì)。模塊的獨(dú)立性還為擴(kuò)充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方
11、便,因?yàn)槲覀兛梢猿浞掷矛F(xiàn)有的模塊作積木式的擴(kuò)展。 按照結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn),任何算法功能都可以通過由程序模塊組成的三種基本程序結(jié)構(gòu)的組合: 順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。 結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用"自頂向下,逐步求精"的程序設(shè)計(jì)方法和"單入口單出口"的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計(jì)方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;"單入口單出口"的思想認(rèn)為一個(gè)復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個(gè)新構(gòu)造的程序一定是一個(gè)單入
12、口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序來。2.2. 面向?qū)ο蟪绦蛟O(shè)計(jì):面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念主要包括:對(duì)象、類、數(shù)據(jù)抽象、繼承、動(dòng)態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。面向?qū)ο蟪霈F(xiàn)以前,結(jié)構(gòu)化程序設(shè)計(jì)是程序設(shè)計(jì)的主流,結(jié)構(gòu)化程序設(shè)計(jì)又稱為面向過程的程序設(shè)計(jì)。在面向過程程序設(shè)計(jì)中,問題被看作一系列需要完成的任務(wù),函數(shù)(在此泛指例程、函數(shù)、過程)用于完成這些任務(wù),解決問題的焦點(diǎn)集中于函數(shù)。其中函數(shù)是面向過程的,即它關(guān)注如何根據(jù)規(guī)定的條件完成指定的任務(wù)。一個(gè)語言要稱為面向?qū)ο笳Z言必須支持幾個(gè)主要面向?qū)ο蟮母拍睢8鶕?jù)支持程度的不同,通常所
13、說的面向?qū)ο笳Z言可以分成兩類:基于對(duì)象的語言,面向?qū)ο蟮恼Z言。基于對(duì)象的語言僅支持類和對(duì)象,而面向?qū)ο蟮恼Z言支持的概念包括:類與對(duì)象、繼承、多態(tài)。舉例來說,Ada就是一個(gè)典型的基于對(duì)象的語言,因?yàn)樗恢С掷^承、多態(tài),此外其他基于對(duì)象的語言還有Alphard、CLU、Euclid、Modula。面向?qū)ο蟮恼Z言中一部分是新發(fā)明的語言,如Smalltalk、Java,這些語言本身往往吸取了其他語言的精華,而又盡量剔除他們的不足,因此面向?qū)ο蟮奶卣魈貏e明顯,充滿了蓬勃的生機(jī);另外一些則是對(duì)現(xiàn)有的語言進(jìn)行改造,增加面向?qū)ο蟮奶卣餮莼鴣淼摹H缬蒔ascal發(fā)展而來的Object Pascal,由C發(fā)展而
14、來的Objective-C,C+,由Ada發(fā)展而來的Ada 95等,這些語言保留著對(duì)原有語言的兼容,并不是純粹的面向?qū)ο笳Z言,但由于其前身往往是有一定影響的語言,因此這些語言依然寶刀不老,在程序設(shè)計(jì)語言中占有十分重要的地位2。面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn):面向?qū)ο蟪霈F(xiàn)以前,結(jié)構(gòu)化程序設(shè)計(jì)是程序設(shè)計(jì)的主流,結(jié)構(gòu)化程序設(shè)計(jì)又稱為面向過程的程序設(shè)計(jì)。在面向過程程序設(shè)計(jì)中,問題被看作一系列需要完成的任務(wù),函數(shù)(在此泛指例程、函數(shù)、過程)用于完成這些任務(wù),解決問題的焦點(diǎn)集中于函數(shù)。其中函數(shù)是面向過程的,即它關(guān)注如何根據(jù)規(guī)定的條件完成指定的任務(wù)。在多函數(shù)程序中,許多重要的數(shù)據(jù)被放置在全局?jǐn)?shù)據(jù)區(qū),這樣它們可以被所
15、有的函數(shù)訪問。每個(gè)函數(shù)都可以具有它們自己的局部數(shù)據(jù)。下圖顯示了一個(gè)面向過程程序中函數(shù)和數(shù)據(jù)的關(guān)系面向?qū)ο蟮闹饕卣饔校悍庋b性、繼承性、多態(tài)性在面對(duì)對(duì)象方法中,對(duì)象和傳遞消息分別表現(xiàn)事物及事物間相互聯(lián)系的概念。類和繼承是是適應(yīng)人們一般思維方式的描述范式。方法是允許作用于該類對(duì)象上的各種操作。這種對(duì)象、類、消息和方法的程序設(shè)計(jì)范式的基本點(diǎn)在于對(duì)象的封裝性和類的繼承性。通過封裝能將對(duì)象的定義和對(duì)象的實(shí)現(xiàn)分開,通過繼承能體現(xiàn)類與類之間的關(guān)系,以及由此帶來的動(dòng)態(tài)聯(lián)編和實(shí)體的多態(tài)性,從而構(gòu)成了面向?qū)ο蟮幕咎卣?。面向?qū)ο笤O(shè)計(jì)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動(dòng)的系統(tǒng)方法,是建立在“對(duì)象
16、”概念基礎(chǔ)上的方法學(xué)。對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對(duì)應(yīng)關(guān)系,一個(gè)對(duì)象類定義了具有相似性質(zhì)的一組對(duì)象。而每繼承性是對(duì)具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯?duì)象概念,以對(duì)象為中心,以類和繼承為構(gòu)造機(jī)制,來認(rèn)識(shí)、理解、刻畫客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。按照Bjarne STroustRUP的說法,面向?qū)ο蟮木幊谭妒剑簂 決定你要的類;2 給每個(gè)類提供完整的一組操作;3 明確地使用繼承來表現(xiàn)共同點(diǎn)。由這個(gè)定義,我們可以看出:面向?qū)ο笤O(shè)計(jì)就是“根據(jù)需求決定所需的類、類的操作以及類之間關(guān)聯(lián)的過程”。面向?qū)ο笤O(shè)計(jì)方法的特點(diǎn)和面臨的問題面向?qū)ο笤O(shè)計(jì)
17、方法以對(duì)象為基礎(chǔ),利用特定的軟件工具直接完成從對(duì)象客體的描述到軟件結(jié)構(gòu)之間的轉(zhuǎn)換。這是面向?qū)ο笤O(shè)計(jì)方法最主要的特點(diǎn)和成就。面向?qū)ο笤O(shè)計(jì)方法的應(yīng)用解決了傳統(tǒng)結(jié)構(gòu)化開發(fā)方法中客觀世界描述工具與軟件結(jié)構(gòu)的不一致性問題,縮短了開發(fā)周期,解決了從分析和設(shè)計(jì)到軟件模塊結(jié)構(gòu)之間多次轉(zhuǎn)換映射的繁雜過程,是一種很有發(fā)展前途的系統(tǒng)開發(fā)方法。但是同原型方法一樣, 面向?qū)ο笤O(shè)計(jì)方法需要一定的軟件基礎(chǔ)支持才可以應(yīng)用,另外在大型的MIS開發(fā)中如果不經(jīng)自頂向下的整體劃分,而是一開始就自底向上的采用面向?qū)ο笤O(shè)計(jì)方法開發(fā)系統(tǒng),同樣也會(huì)造成系統(tǒng)結(jié)構(gòu)不合理、各部分關(guān)系失調(diào)等問題。所以面向?qū)ο笤O(shè)計(jì)方法和結(jié)構(gòu)化方法目前仍是兩種在系統(tǒng)開
18、發(fā)領(lǐng)域相互依存的、不可替代的方法。第三章 C+語言特性C+作為一門高效率的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,具有面向?qū)ο蟮乃刑匦裕悍庋b、繼承、多態(tài),并且完美的實(shí)現(xiàn)了這些特性,這對(duì)任何開發(fā)者來說都是幸運(yùn)的,這因?yàn)檫@些,我們的開發(fā)變得容易而充滿樂趣。我們可以將需要解決的問題方便的轉(zhuǎn)化為計(jì)算機(jī)的軟件模型,這一過程當(dāng)然需要面向?qū)ο笏枷氲闹С帧?.1.類類(Class)實(shí)際上是對(duì)某種類型的對(duì)象定義變量和方法的原型。它表示對(duì)現(xiàn)實(shí)生活中一類具有共同特征的事物的抽象,是面向?qū)ο缶幊痰幕A(chǔ)。比如我常說的人、小狗、公交車、學(xué)校等具有泛指的名詞,通常都是指代“類”。類常常是一類對(duì)象的統(tǒng)稱。類是對(duì)某個(gè)對(duì)象的定義。它包含有關(guān)對(duì)象
19、動(dòng)作方式的信息,包括它的名稱、方法、屬性和事件。需要注意的是類并不是實(shí)際意義的對(duì)象,類是一類事物具有相同或相似屬性動(dòng)作的事物的總稱??梢园杨惪醋鳌袄碚撋稀钡膶?duì)象,也就是說,它為對(duì)象提供藍(lán)圖。從這個(gè)藍(lán)圖可以創(chuàng)建任何數(shù)量的實(shí)際對(duì)象。從類創(chuàng)建的所有對(duì)象都有相同的成員:屬性、方法和事件。但是,每個(gè)對(duì)象都象一個(gè)獨(dú)立的實(shí)體一樣動(dòng)作。例如,一個(gè)對(duì)象的屬性可以設(shè)置成與同類型的其他對(duì)象不同的值,比如同樣是人類,各自的姓名不同、身高不同、愛好不同,就是這些相同屬性的不同值的對(duì)象形成了對(duì)象之間的獨(dú)立性,但是他們都屬于同一個(gè)類。C+中,類定義的一般形式如下:class Name public:類的公有接口MFC類圖p
20、rivate:私有的成員函數(shù)私有的數(shù)據(jù)成員定義;類的定義由 類頭 和 類體 兩部分組成。類頭由關(guān)鍵字 Class 開頭,然后是類名,其命名規(guī)則與一般標(biāo)識(shí)符的命名規(guī)則一致。類體包括所有的細(xì)節(jié),并放在一對(duì)花括號(hào)中。類的定義也是一個(gè)語句,所以要有分號(hào)結(jié)尾,否則會(huì)產(chǎn)生編譯錯(cuò)誤。類體定義類的成員,它支持兩種類型的成員:(1)數(shù)據(jù)成員,它們指定了該類對(duì)象的內(nèi)部表示。(2)成員函數(shù),他們指定了該類的操作。類成員有3種不同的訪問權(quán)限:(1)公有( public )成員可以在類外訪問。(2)私有( private )成員只能被該類的成員函數(shù)訪問。(3)保護(hù)( protected )成員只能被該類的成員函數(shù)或派生
21、類的成員函數(shù)訪問。數(shù)據(jù)成員通常是私有的,成員函數(shù)通常有一部分是公有的,一部分是私有的。公有的函數(shù)可以在類外被訪問,也稱之為類的接口??梢詾楦鱾€(gè)數(shù)據(jù)成員和成員函數(shù)指定合適的訪問權(quán)限。下面是一個(gè)人類的定義class CPerson /開始人類的定義public:char * m_name; /姓名屬性char * m_telephone;/電話號(hào)碼int m_hight;/身高public:void Sleep();/睡覺void Speak();/說話void Eat();/進(jìn)食上述屬性和動(dòng)作的訪問控制都是公開的(public),這是因?yàn)橹T如人的屬性:姓名、電話、身高和動(dòng)作:吃飯、睡覺、進(jìn)食都是
22、公開的,但是有的屬性和動(dòng)作應(yīng)該是私有的比如一個(gè)人的內(nèi)心世界這就應(yīng)該設(shè)置為protected (保護(hù))或者private(私有)。3.2 繼承繼承是指一個(gè)對(duì)象直接使用另一對(duì)象的屬性和方法。事實(shí)上,我們遇到的很多實(shí)體都有繼承的含義。例如,若把汽車看成一個(gè)實(shí)體,它可以分成多個(gè)子實(shí)體,如:卡車、公共汽車等。這些子實(shí)體都具有汽車的特性,因此,汽車是它們的"父親",而這些子實(shí)體則是汽車的"孩子"。繼承常常用于擴(kuò)展一類的屬性和功能,派生出特殊的類。下面是一個(gè)學(xué)生類,作為學(xué)生出了具有人類的基本屬性和動(dòng)作之外,還具有學(xué)校單位屬性、年級(jí)等屬性以及上學(xué)的行為;所以學(xué)生類定義如
23、下:class CStudent :public CPerson /從人類繼承而來 擴(kuò)展人類的屬性和動(dòng)作public:char * m_SchoolName;/學(xué)校名稱int m_grage;/年級(jí)public:void GotoSchool();/上學(xué)的行為3.3.多態(tài)C+是以C語言為基礎(chǔ),支持?jǐn)?shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C+對(duì)C語言的擴(kuò)充部分汲取了許多著名語言中最優(yōu)秀的特征,但人們對(duì)它許多潛在的性能(封裝、繼承、多態(tài)等)還沒有充分地理解和應(yīng)用,沒有充分發(fā)揮其優(yōu)勢(shì)。多態(tài)性是面向?qū)ο笙到y(tǒng)的重要概念之一,它指的是同樣的消息能被發(fā)送到父類的對(duì)象和它的子類的對(duì)象。多態(tài)對(duì)設(shè)計(jì)模式的實(shí)現(xiàn)具有特別重
24、要的意思多態(tài)性的實(shí)現(xiàn)形式從廣義上說,多態(tài)性是指一段程序能夠處理多種類型對(duì)象的能力。在C+語言中,這種多態(tài)性可以通過強(qiáng)制多態(tài)、重載多態(tài)、類型參數(shù)化多態(tài)、包含多態(tài)4種形式來實(shí)現(xiàn)。類型參數(shù)化多態(tài)和包含多態(tài)統(tǒng)稱為一般多態(tài)性,用來系統(tǒng)地刻畫語義上相關(guān)的一組類型。重載多態(tài)和強(qiáng)制多態(tài)統(tǒng)稱為特殊多態(tài)性,用來刻畫語義上無關(guān)聯(lián)的類型間的關(guān)系。子集構(gòu)成1個(gè)子類型。每一個(gè)子類型中的對(duì)象可以被用在高一級(jí)的類型中,高一級(jí)類型中的所有操作可用于下一級(jí)的對(duì)象。在C+中公有繼承關(guān)系是一種包含多態(tài),每一個(gè)類可以直接公有繼承父類或多個(gè)父類,如語句class Dpublic P1,public P2;表示類D分別是類P1和類P2的子
25、類型。C+中采用虛擬函數(shù)實(shí)現(xiàn)包含多態(tài),虛擬函數(shù)為C+提供了更為靈活的多態(tài)機(jī)制,這種多態(tài)性在程序運(yùn)行時(shí)才能確定,因此虛擬函數(shù)是多態(tài)性的精華,至少含有一個(gè)虛擬函數(shù)的類稱為多態(tài)類。包含多態(tài)在程序設(shè)計(jì)中使用十分頻繁。派生類繼承基類的所有操作,或者說,基類的操作能被用于操作派生類的對(duì)象,當(dāng)基類的操作不能適應(yīng)派生類時(shí),派生類需重載基類的操作,見下例中的void circle:showarea()。include iostream.hclass point 屏幕上的點(diǎn)類 int x,y;public;point(int x1,int y1)xx1;yy1;void showarea()coutArea of
26、 point is:0.0endl;class circle:public point圓類int radius;public:circle(int x,int y,int r):point(x,y) radiusr;void showarea()coutArea of circle is:3.14*radius*radiusendl;void disparea(const point*p) 多態(tài)程序段pshowarea();void main()circle c1(1,1,1);disparea(c1);程序的運(yùn)行結(jié)果為0.0(正確結(jié)果應(yīng)為3.14),出錯(cuò)的原因是:表達(dá)式pshowarea()
27、中的函數(shù)調(diào)用在編譯時(shí)被束定到函數(shù)體上,使得這個(gè)表達(dá)式中的函數(shù)調(diào)用執(zhí)行point類的showarea()。為此,當(dāng)程序員在實(shí)現(xiàn)一個(gè)派生類而變動(dòng)了基類中的操作實(shí)現(xiàn)時(shí),C+提供的虛函數(shù)機(jī)制可將這種變動(dòng)告訴編譯器,即將關(guān)鍵字virtual放在類point中該函數(shù)的函數(shù)說明之前(virtual void showarea(),程序其它部分保持不變(circle:showarea()自動(dòng)地成為虛函數(shù)),編譯器就不會(huì)對(duì)函數(shù)調(diào)用pshowarea()進(jìn)行靜態(tài)束定(在編譯連接時(shí)進(jìn)行的束定)而產(chǎn)生有關(guān)的代碼,使函數(shù)調(diào)用與它所應(yīng)執(zhí)行的代碼的束定工作在程序運(yùn)行時(shí)進(jìn)行,這樣上述程序的運(yùn)行結(jié)果即為3.14。在程序運(yùn)行時(shí)進(jìn)
28、行的束定被稱為動(dòng)態(tài)束定。利用虛函數(shù),可在基類和派生類中使用相同的函數(shù)名定義函數(shù)的不同實(shí)現(xiàn),從而實(shí)現(xiàn)“一個(gè)接口,多種方式”。當(dāng)用基類指針或引用對(duì)虛函數(shù)進(jìn)行訪問時(shí),軟件系統(tǒng)將根據(jù)運(yùn)行時(shí)指針或引用所指向或引用的實(shí)際對(duì)象來確定調(diào)用對(duì)象所在類的虛函數(shù)版本。C+語言還增加了純的虛函數(shù)機(jī)制用來更好地設(shè)計(jì)包含多態(tài)性。假如每個(gè)類中都有一個(gè)函數(shù)“void display(void);”,那么,怎樣對(duì)它們按多態(tài)性進(jìn)行統(tǒng)一處理呢?對(duì)這類問題應(yīng)先設(shè)計(jì)一個(gè)抽象的類,使它成為所有類的祖先類。設(shè)置類A的目的是由它說明統(tǒng)一使用該層次中的display()函數(shù)的方法(賦值兼容規(guī)則從語法上保證了A的子孫類可按A說明的方式使用dis
29、play()函數(shù);多態(tài)性則從語義上保證了在執(zhí)行時(shí),根據(jù)實(shí)際的對(duì)象訪問相應(yīng)對(duì)象類中的display()函數(shù))。為了保證在類A中設(shè)置的display()函數(shù)是抽象動(dòng)作,并能說明類A是一個(gè)抽象的類,在C+中,可用純的虛函數(shù)語言機(jī)制在類A中聲明1個(gè)成員函數(shù)“virtual void display(void)0;”。請(qǐng)注意,在類A的子孫類中要么給出display()的定義,要么重新將該函數(shù)聲明為純的。從上面的分析可以看出,類A的設(shè)計(jì)盡管是用繼承性語法表達(dá)的,但它的主要目的不是為代碼共享而設(shè)計(jì)的,而是為了提高多態(tài)性而設(shè)計(jì)的,它是另一個(gè)維度的抽象。第四章 統(tǒng)一建模語言UML4.1 UML簡(jiǎn)介UML是一種定
30、義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言。它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持從需求分析開始的軟件開發(fā)的全過程。面向?qū)ο蠹夹g(shù)和UML的發(fā)展過程可用圖形來表示,標(biāo)準(zhǔn)建模語言的出現(xiàn)是其重要成果。在美國(guó),截止1996年10月,UML獲得了工業(yè)界、科技界和應(yīng)用界的廣泛支持,已有700多個(gè)公司表示支持采用UML作為建模語言。1996年底,UML已穩(wěn)占面向?qū)ο蠹夹g(shù)市場(chǎng)的85,成為可視化建模語言事實(shí)上的工業(yè)標(biāo)準(zhǔn)。1997年11月17日,OMG采納UML 1.1作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語言。UML代表了面向?qū)ο蠓椒ǖ能浖_發(fā)技術(shù)的發(fā)展方向,
31、具有巨大的市場(chǎng)前景,也具有重大的經(jīng)濟(jì)價(jià)值和國(guó)防價(jià)值3。4.2 UML的內(nèi)容首先,UML融合了Booch、OMT和OOSE方法中的基本概念,而且這些基本概念與其他面向?qū)ο蠹夹g(shù)中的基本概念大多相同,因而,UML必然成為這些方法以及其他方法的使用者樂于采用的一種簡(jiǎn)單一致的建模語言;其次,UML不僅僅是上述方法的簡(jiǎn)單匯合,而是在這些方法的基礎(chǔ)上廣泛征求意見,集眾家之長(zhǎng),幾經(jīng)修改而完成的,UML擴(kuò)展了現(xiàn)有方法的應(yīng)用范圍;第三,UML是標(biāo)準(zhǔn)的建模語言,而不是標(biāo)準(zhǔn)的開發(fā)過程。盡管UML的應(yīng)用必然以系統(tǒng)的開發(fā)過程為背景,但由于不同的組織和不同的應(yīng)用領(lǐng)域,需要采取不同的開發(fā)過程。作為一種建模語言,UML的定義包
32、括UML語義和UML表示法兩個(gè)部分。(1) UML語義 描述基于UML的精確元模型定義。元模型為UML的所有元素在語法和語義上提供了簡(jiǎn)單、一致、通用的定義性說明,使開發(fā)者能在語義上取得一致,消除了因人而異的最佳表達(dá)方法所造成的影響。此外UML還支持對(duì)元模型的擴(kuò)展定義(2) UML表示法 定義UML符號(hào)的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號(hào)和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。這些圖形符號(hào)和文字所表達(dá)的是應(yīng)用級(jí)的模型,在語義上它是UML元模型的實(shí)例。標(biāo)準(zhǔn)建模語言UML的重要內(nèi)容可以由下列五類圖(共9種圖形)來定義:第一類是用例圖,從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。如下是學(xué)生管理系統(tǒng)的
33、用例圖(圖4.1):圖4.1 學(xué)生管理系統(tǒng)用例圖從這個(gè)用例圖中,我們可以方便的看到整個(gè)系統(tǒng)的功能模塊一個(gè)各個(gè)模塊之間的交互關(guān)系。第二類是靜態(tài)圖 (Static diagram),包括類圖、對(duì)象圖和包圖。其中類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和操作)。類圖描述的是一種靜態(tài)關(guān)系,在系統(tǒng)的整個(gè)生命周期都是有效的。對(duì)象圖是類圖的實(shí)例,幾乎使用與類圖完全相同的標(biāo)識(shí)。他們的不同點(diǎn)在于對(duì)象圖顯示類的多個(gè)對(duì)象實(shí)例,而不是實(shí)際的類。一個(gè)對(duì)象圖是類圖的一個(gè)實(shí)例。由于對(duì)象存在生命周期,因此對(duì)象圖只能在系統(tǒng)某一時(shí)間段存在。包由包或類組成,
34、表示包與包之間的關(guān)系。包圖用于描述系統(tǒng)的分層結(jié)構(gòu)。這是一個(gè)選課系統(tǒng)的簡(jiǎn)單領(lǐng)域分析類圖(圖4.2)。圖4.2分析類圖可以看到,主要實(shí)體有教師、學(xué)生、課程和開課安排。每個(gè)實(shí)體標(biāo)注了其在業(yè)務(wù)上具有的屬性和方法。而且圖中還標(biāo)明了實(shí)體間的關(guān)系。第三類是行為圖(Behavior diagram),描述系統(tǒng)的動(dòng)態(tài)模型和組成對(duì)象間的交互關(guān)系。其中狀態(tài)圖描述類的對(duì)象所有可能的狀態(tài)以及事件發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件。通常,狀態(tài)圖是對(duì)類圖的補(bǔ)充。在實(shí)用上并不需要為所有的類畫狀態(tài)圖,僅為那些有多個(gè)狀態(tài)其行為受外界環(huán)境的影響并且發(fā)生改變的類畫狀態(tài)圖。而活動(dòng)圖描述滿足用例要求所要進(jìn)行的活動(dòng)以及活動(dòng)間的約束關(guān)系,有利于識(shí)別并行活
35、動(dòng)。第四類是交互圖(Interactive diagram),描述對(duì)象間的交互關(guān)系。其中順序圖顯示對(duì)象之間的動(dòng)態(tài)合作關(guān)系,它強(qiáng)調(diào)對(duì)象之間消息發(fā)送的順序,同時(shí)顯示對(duì)象之間的交互;合作圖描述對(duì)象間的協(xié)作關(guān)系,合作圖跟順序圖相似,顯示對(duì)象間的動(dòng)態(tài)合作關(guān)系。除顯示信息交換外,合作圖還顯示對(duì)象以及它們之間的關(guān)系。如果強(qiáng)調(diào)時(shí)間和順序,則使用順序圖;如果強(qiáng)調(diào)上下級(jí)關(guān)系,則選擇合作圖。這兩種圖合稱為交互圖。第五類是實(shí)現(xiàn)圖 ( Implementation diagram )。其中構(gòu)件圖描述代碼部件的物理結(jié)構(gòu)及各部件之間的依賴關(guān)系。一個(gè)部件可能是一個(gè)資源代碼部件、一個(gè)二進(jìn)制部件或一個(gè)可執(zhí)行部件。它包含邏輯類或?qū)?/p>
36、現(xiàn)類的有關(guān)信息。第五章 C+中類與對(duì)象及其關(guān)系在一個(gè)系統(tǒng)中,常常會(huì)有許多各司其職而有互相影響的類存在,這些類之間的關(guān)系通常有:關(guān)聯(lián)、泛化(Generalization)、依賴(Dependency)、聚合(Aggregation)、組合(Composite)5.1、關(guān)聯(lián)(Association)兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另外一個(gè)對(duì)象的特定實(shí)例存在固定關(guān)系時(shí),這兩個(gè)對(duì)象之間就存在關(guān)聯(lián)關(guān)系。5.1.1 單向關(guān)聯(lián)A1->A2: 表示A1認(rèn)識(shí)A2,A1知道A2的存在,A1可以調(diào)用A2中的方法和屬性場(chǎng)景:訂單和商品,訂單中包括商品,但是商品并不了解訂單的存在。類與類之間的單向關(guān)聯(lián)圖圖5
37、.1 關(guān)聯(lián)圖C+代碼:class OrderPublic: List<Product> order;void AddOrder(Product product ) order.Add(product); Public Class Product代碼表現(xiàn)為:Order(A1)中有Product(A2)的變量或者引用5.1.2雙向關(guān)聯(lián)B1-B2: 表示B1認(rèn)識(shí)B2,B1知道B2的存在,B1可以調(diào)用B2中的方法和屬性;同樣B2也知道B1的存在,B2也可以調(diào)用B1的方法和屬性。場(chǎng)景:訂單和客戶,訂單屬于客戶,客戶擁有一些特定的訂單類與類之間的雙向關(guān)聯(lián)圖(圖5.2)圖5.2雙向關(guān)聯(lián)圖clas
38、s User Public:List<Order> GetOrder() return new List<Order>(); Class Order Public User GetUserByOrderID(string OrderId ) Return new User();5.1.3 自身關(guān)聯(lián)同一個(gè)類對(duì)象之間的關(guān)聯(lián)類與類之間自身關(guān)聯(lián)圖(圖5.3)圖5.3 自身關(guān)聯(lián)圖5.1.4、多維關(guān)聯(lián)(N-ary Association)多個(gè)對(duì)象之間存在關(guān)聯(lián)場(chǎng)景:公司雇用員工,同時(shí)公司需要支付工資給員工類與類之間的多維關(guān)聯(lián)圖(圖5.4):圖5.4多維關(guān)聯(lián)圖5.2 泛化(Genera
39、lization)類與類的繼承關(guān)系,類與接口的實(shí)現(xiàn)關(guān)系。場(chǎng)景:父與子、動(dòng)物與人、植物與樹、系統(tǒng)使用者與B2C會(huì)員和B2E會(huì)員的關(guān)系類與類之間的泛化圖(圖5.5):圖5.5泛化圖系統(tǒng)的使用者包括:B2C會(huì)員、B2B會(huì)員和B2E會(huì)員。接口的實(shí)現(xiàn),動(dòng)物都有吃的行為,而人是動(dòng)物的一個(gè)具體實(shí)例,實(shí)現(xiàn)具體Eat的動(dòng)作 5.3 依賴(Dependency)類A要完成某個(gè)功能必須引用類B,則A與B存在依賴關(guān)系,依賴關(guān)系是弱的關(guān)聯(lián)關(guān)系。通常情況下不建議雙相依賴,也就是相互引用。例如,本來人與電腦沒有關(guān)系的,但由于偶然的機(jī)會(huì),人需要用電腦寫程序,這時(shí)候人就依賴于電腦。類與類的依賴關(guān)系圖(圖5.6)圖5.6依賴關(guān)系
40、圖5.4聚合(Aggregation)當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象A之間為聚合關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系,強(qiáng)調(diào)的是整體與部分之間的關(guān)系。例如商品和他的規(guī)格、樣式就是聚合關(guān)系。類與類的聚合關(guān)系圖(圖5.7)圖5.7 聚合關(guān)系圖5.5組合(Composite) 對(duì)象A包含對(duì)象B,對(duì)象B離開對(duì)象A沒有實(shí)際意義。是一種更強(qiáng)的關(guān)聯(lián)關(guān)系。人包含手,手離開人的軀體就失去了它應(yīng)有的作用。例如,Window窗體由滑動(dòng)條slider、頭部Header 和工作區(qū)Panel組合而成。第六章 C+設(shè)計(jì)常用設(shè)計(jì)模式6.1 Factory模式6.1.1功能:定義一個(gè)用于創(chuàng)
41、建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。Factory Method 使一個(gè)類的實(shí)例化延遲到其子類。6.1.2 UML結(jié)構(gòu)圖:圖6.1 Factory模式的UML結(jié)構(gòu)圖6.1.3 抽象基類1)Product:創(chuàng)建出來的對(duì)象的抽象基類.2)Factory創(chuàng)建對(duì)象的工廠方法的抽象基類.接口函數(shù):1)Creator:FactoryMethod:純虛函數(shù),由派生類實(shí)現(xiàn),創(chuàng)建出對(duì)應(yīng)的Product.6.1.4 解析在這個(gè)模式中,有兩個(gè)抽象基類,一個(gè)是Product為創(chuàng)建出來的對(duì)象的抽象基類,一個(gè)是Factory是工廠的抽象基類,在互相協(xié)作的時(shí)候都是由相應(yīng)的 Factory派生類來生成Product的派生
42、類,也就是說如果要新增一種Product那么也要對(duì)應(yīng)的新增一個(gè)Factory,創(chuàng)建的過程委托給了這 個(gè)Factory.也就是說一個(gè)Factory和一個(gè)Product是一一對(duì)應(yīng)的關(guān)系。缺點(diǎn):核心的主要部分在于一個(gè)具體類上,F(xiàn)actory接收到請(qǐng)求自動(dòng)判斷提供什么產(chǎn)品,但是對(duì)于一個(gè)factory而言,倘若添加一個(gè)新的產(chǎn)品,需要做太多的改動(dòng),換句話來說,添加一個(gè)新的產(chǎn)品必須改動(dòng)整個(gè)factory工廠4。6.1.5示例代碼:/view plaincopy to clipboardprint#include <iostream> using namespace std; class prod
43、uct public: virtual void produce(); /具體的實(shí)現(xiàn)交給子類的函數(shù); virtual void sell(); product(); virtual product(); ; class conproduct1:public product public: void produce() cout<<"Pro conproduct1."<<endl; void sell() cout<<"Sel conproduct1."<<endl; ; class conproduct2:
44、public product public: void produce() cout<<"Pro conproduct2."<<endl; void sell() cout<<"Sel conproduct2."<<endl; ; class Factory /具體的操作由factory控制選擇 public: Factory() static product *Creatproduct(int a) if(a=1) return new conproduct1(); /生成相對(duì)應(yīng)的pro對(duì)象; if(a=
45、2) return new conproduct2(); ; void main() Factory *fac=new Factory(); (fac->Creatproduct(2)->produce(); #include <iostream> using namespace std; class product public: virtual void produce(); /具體的實(shí)現(xiàn)交給子類的函數(shù); virtual void sell(); product(); virtual product(); ; class conproduct1:public pro
46、duct public: void produce() cout<<"Pro conproduct1."<<endl; void sell() cout<<"Sel conproduct1."<<endl; ; class conproduct2:public product public: void produce() cout<<"Pro conproduct2."<<endl; void sell() cout<<"Sel conpro
47、duct2."<<endl; ; class Factory /具體的操作由factory控制選擇 public: Factory() static product *Creatproduct(int a) if(a=1) return new conproduct1(); /生成相對(duì)應(yīng)的pro對(duì)象; if(a=2) return new conproduct2(); ; void main() Factory *fac=new Factory(); (fac->Creatproduct(2)->produce(); 6.2 Abstract Factory模
48、式6.2.1功能 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類。 6.2.2UML結(jié)構(gòu)圖類廠最基本的結(jié)構(gòu)示意圖如下: 在實(shí)際應(yīng)用中,類廠模式可以擴(kuò)充到很復(fù)雜的情況,如下圖所示(圖6.2): 圖6.2 Abstract Factory模式 UML結(jié)構(gòu)圖6.2.3優(yōu)缺點(diǎn)優(yōu)點(diǎn):(1)封裝創(chuàng)建過程。客戶不用知道類廠是如何創(chuàng)建類實(shí)例的,類廠封閉了所有創(chuàng)建的細(xì)節(jié)。這樣可選擇不同的創(chuàng)建方法,增加了靈活性。 (2)將客戶與具體類隔離,提高了各自的可重用性。 缺點(diǎn):Factory類層次與具體類層次通常是平行的(即一一對(duì)應(yīng)的)。增加一個(gè)具體類,一般也要相應(yīng)地增加一個(gè)factory類,增加了系
49、統(tǒng)復(fù)雜度。 6.2.4實(shí)現(xiàn)(1)Abstract Factory類中通常是一組Factory Method的集合。個(gè)人認(rèn)為與Factory Method模式?jīng)]有本質(zhì)區(qū)別。 (2)通??梢园压S作為單件。6.2.5示例代碼namespace DesignPattern_AbstractFactoryclass AbstractProductA ; / Product Aclass ProductA1 : public AbstractProductA ;class ProductA2 : public AbstractProductA ;class AbstractProductB ; / Pr
50、oduct Bclass ProductB1 : public AbstractProductB ;class ProductB2 : public AbstractProductB ;class AbstractFactorypublic:virtual AbstractProductA* CreateProductA() = 0 ;/ 創(chuàng)建ProductAvirtual AbstractProductB* CreateProductB() = 0 ;/ 創(chuàng)建ProductB ;class ConcreteFactory1 : public AbstractFactorypublic:vir
51、tual AbstractProductA* CreateProductA() return new ProductA1() ; virtual AbstractProductB* CreateProductB() return new ProductB1() ; static ConcreteFactory1* Instance() static ConcreteFactory1 instance ; return &instance ; protected:ConcreteFactory1() private:ConcreteFactory1(const ConcreteFacto
52、ry1&) ;ConcreteFactory1& operator=(const ConcreteFactory1&) ; ;class ConcreteFactory2 : public AbstractFactorypublic:virtual AbstractProductA* CreateProductA() return new ProductA2() ; virtual AbstractProductB* CreateProductB() return new ProductB2() ; static ConcreteFactory2* Instance()
53、 static ConcreteFactory2 instance ; return &instance ; protected:ConcreteFactory2() private:ConcreteFactory2(const ConcreteFactory2&) ;ConcreteFactory2& operator=(const ConcreteFactory2&) ; ;客戶端代碼:using namespace DesignPattern_AbstractFactory ;/ 第一種創(chuàng)建方法AbstractFactory *pFactory = Con
54、creteFactory1:Instance() ;AbstractProductA *pProductA = pFactory->CreateProductA() ;AbstractProductB *pProductB = pFactory->CreateProductB() ;/ 第二種創(chuàng)建方法pFactory = ConcreteFactory2:Instance() ;pProductA = pFactory->CreateProductA() ;pProductB = pFactory->CreateProductB() ; 6.2.6實(shí)例最早知道類廠的概念是在COM中,但當(dāng)時(shí)也沒想到這是如此重要的一種模式,在許多其他模式中都可以用到類廠模式。 COM中不能直接創(chuàng)建組件,這也是由COM的一個(gè)特性決定的:即客戶不知道要?jiǎng)?chuàng)建的組件的類名。6.3 Composite模式6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 集裝箱交易合同案例
- 法定節(jié)假日有哪些
- 六年級(jí)道德與法治上冊(cè) 第三單元 我們的國(guó)家機(jī)構(gòu) 5《國(guó)家機(jī)構(gòu)有哪些》教案2 新人教版
- 高中化學(xué)《離子反應(yīng)》教學(xué)設(shè)計(jì)
- 2024年春八年級(jí)物理下冊(cè) 第九章 第1節(jié) 壓強(qiáng)教案 (新版)新人教版
- 2024-2025學(xué)年高中生物 第二章 細(xì)胞的化學(xué)組成 2.2 細(xì)胞中的脂質(zhì)教案 蘇教版必修1
- 安徽省長(zhǎng)豐縣八年級(jí)生物上冊(cè) 6.1.1 嘗試對(duì)生物進(jìn)行分類教案 (新版)新人教版
- 2024-2025學(xué)年高中化學(xué) 第4章 第3節(jié) 蛋白質(zhì)和核酸教案 新人教版選修5
- 汽車試驗(yàn)技術(shù) 課件 項(xiàng)目1 汽車試驗(yàn)概述
- 綜合能源托管合同(2篇)
- 2024新人教版初中英語單詞表匯總(七-九年級(jí))中考復(fù)習(xí)必背
- 郵政快遞員勞務(wù)合同范本
- 生涯發(fā)展報(bào)告機(jī)電一體化
- 光伏安裝培訓(xùn)課件模板
- 建筑工程質(zhì)量通病防治手冊(cè)樣本
- 2024軟件代碼自主率測(cè)評(píng)方法
- 2024年貴州遵義市播州區(qū)城市社區(qū)工作者招聘筆試參考題庫(kù)附帶答案詳解
- 鐘南山院士 (模板)
- 廣告投放運(yùn)營(yíng)述職報(bào)告
- 小學(xué)一年級(jí)簡(jiǎn)單的語文閱讀理解(八篇)
- 2024年貴州省職業(yè)院校技能大賽中職組《導(dǎo)游服務(wù)》賽項(xiàng)備考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論