版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第2章C++?語言概述2.1C++語言及程序設(shè)計范型2.2過程程序設(shè)計范型2.3模塊化程序設(shè)計范型2.4數(shù)據(jù)抽象2.5面向?qū)ο蟪绦蛟O(shè)計范型2.6類屬/通用程序設(shè)計范型小結(jié)練習(xí)題
2.1C++?語言及程序設(shè)計范型
2.1.1C++?語言的概念
C++?語言是從C語言演化而來的,C是C++?的子集,但C++?不是C,它比C更好,表達(dá)能力更強。常聽到這樣一種說法:C++?是一種面向?qū)ο笳Z言。其實,這種說法有失偏頗。準(zhǔn)確地說:C++?是一種通用的、支持多種程序設(shè)計范型的混合型語言。
所謂通用,是指C++?不限于某一特定的應(yīng)用領(lǐng)域或某類特定的應(yīng)用/系統(tǒng)程序,它適用于各種應(yīng)用領(lǐng)域及各種類型軟件(系統(tǒng)軟件/應(yīng)用軟件)的開發(fā)。C++?之所以不僅僅是一種面向?qū)ο笳Z言,而是一種混合型語言,這是因為它不僅支持?jǐn)?shù)據(jù)抽象、面向過程、面向模塊、面向?qū)ο蟮某绦蛟O(shè)計范型,而且還支持類屬/通用程序設(shè)計范型,因此,它是一種支持多范型的混合型語言。2.1.2程序設(shè)計范型
C++是一種支持多種程序設(shè)計范型的混合型語言。為了準(zhǔn)確地理解C++?語言支持各種程序設(shè)計范型的語言機制,我們首先闡述程序設(shè)計范型的概念。
所謂程序設(shè)計范型(ProgrammingParadigm),是人們在程序設(shè)計時所采用的基本方式模型。程序設(shè)計范型決定了程序設(shè)計時采用的思維方式、使用的工具,同時又有一定的應(yīng)用范疇(即受一定的應(yīng)用領(lǐng)域約束)。過程程序設(shè)計、模塊化程序設(shè)計、函數(shù)程序設(shè)計、邏輯程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計等,都是我們常見的、不同的程序設(shè)計范型。每一種程序設(shè)計語言都以支持某種/某些程序設(shè)計范型為基礎(chǔ),并以此而設(shè)計和發(fā)明。某一種語言支持某種程序設(shè)計范型的真正含義在于:第一,在該語言中具有相應(yīng)的語言設(shè)施(Facilities),使得用該語言能更容易、不需耗費額外的時空代價或程序員的努力,便能更安全和有效地實施這種范型;第二,該語言的實現(xiàn)(指語言的編譯與運行環(huán)境)配有編譯時和(或)運行時的檢查機制,以防止或阻止程序員無意識地背離這種程序設(shè)計范型。值得注意的是,并非一種語言所擁有的機制越多越好,它擁有的機制只需足以支持某種或某些程序范型即可。換句話說,一種語言機制的優(yōu)劣在于它對所支持的程序設(shè)計范型的支持力度。
C++?語言是一種支持多種程序設(shè)計范型的語言,它支持:
面向過程程序設(shè)計范型;
面向模塊程序設(shè)計范型;
面向?qū)ο蟪绦蛟O(shè)計范型;
類屬/通用程序設(shè)計范型。為了正確地理解與掌握某種程序設(shè)計范型,學(xué)習(xí)時應(yīng)將關(guān)注點集中在以下方面:
該范型的程序設(shè)計或組織理念;
支持該范型相應(yīng)的語言機制;
語言的類型系統(tǒng)對該機制所提供的支持。
只有準(zhǔn)確地理解程序設(shè)計范型的概念,我們才能準(zhǔn)確地理解C++,進而達(dá)到正確、恰當(dāng)?shù)厥褂肅++的各種語言機制。2.1.3第一個C++程序及C++?程序結(jié)構(gòu)
讓我們從一個最簡單的C++?程序開始,來看看C++?語言的一些基本特性及程序結(jié)構(gòu)。
例如,在屏幕上打印輸出一行字符串的程序如下:
#include<iostream> //包含標(biāo)準(zhǔn)輸入輸出頭文件iostream
usingnamespacestd; //引入C++?標(biāo)準(zhǔn)命名空間名std
intmain()
{
cout<<“WelcometoC++!”<<endl; //屏幕打印輸出“Welcometo
C++!”
return0; //程序成功返回
}程序運行輸出結(jié)果:
WelcometoC++!
任何一個C++?程序都由一個主函數(shù)(main函數(shù))和若干(或零)個其它函數(shù)/類組成。主函數(shù)main()是程序執(zhí)行的入口點。C++?程序中其它非標(biāo)準(zhǔn)函數(shù)/類的名字由編程者自行命名(須符合C++?語言中標(biāo)識符的語法規(guī)則,C++?標(biāo)識符的語法規(guī)則詳見后續(xù)章節(jié))。
C++?中的每個函數(shù)都由函數(shù)的返回類型(如示例中main函數(shù)的int)、函數(shù)名、一對圓括號()括起的包含若干函數(shù)參數(shù)列表(或函數(shù)參數(shù)列表為空)及函數(shù)體構(gòu)成。每一對花括號{}表征函數(shù)體的開始與結(jié)束。另外,一對花括號{}亦可表示一個C++?語句塊(詳細(xì)內(nèi)容見后續(xù)章節(jié))。函數(shù)體的內(nèi)容可由零個或多個C++?語句構(gòu)成。
每個C++?語句須以分號結(jié)束,分號是C++?語句不可分割的一部分,如示例中的cout<<“WelcometoC++!”<<endl;和return?0;?均為C++語句(輸出與函數(shù)返回語句),以//開頭的為C++?的單行注釋語句。
示例中的#include<iostream>為C++的預(yù)處理指令(PreprocessorDirective),它告訴C++編譯器在程序中要包括C++?標(biāo)準(zhǔn)輸入輸出流頭文件。有關(guān)<iostream>頭文件的內(nèi)容我們將在后續(xù)章節(jié)中介紹。標(biāo)準(zhǔn)C++?引入了一個可以由程序員命名的作用域,即命名空間(Namespace)。在每一個命名空間中可將一些相關(guān)的實體(如變量、函數(shù)、對象、類等)放入其中,以解決程序中常見的同名沖突問題。std為C++?標(biāo)準(zhǔn)類庫的一個命名空間名,其中存放了C++?標(biāo)準(zhǔn)庫中所定義的各種實體名。程序中的usingnamespacestd;語句稱為using指令,它將std命名空間中的實體名的作用域引入到該程序中。
C++?的輸入/輸出是用字符流(Stream)對象完成的,cout即為標(biāo)準(zhǔn)的輸出流(Ostream)對象,其默認(rèn)值為屏幕。cout<<"WelcometoC++!"<<endl;語句的功能是將字符串"WelcometoC++!"打印輸出到屏幕上并換行?!癳ndl”稱為流操縱算子,它發(fā)送一個換行符并刷新輸出緩沖區(qū)。“<<”為C++?流插入運算符(StreamInsertionOperator),這是一個二元運算符,它將第二操作數(shù)以字符流的形式輸出到第一操作數(shù)流對象cout中。
2.2過程程序設(shè)計范型
2.2.1過程程序設(shè)計范型介紹
每一種程序設(shè)計語言都是為支持某種/某些程序設(shè)計范型而設(shè)計的。支持過程程序設(shè)計范型的典型代表是20世紀(jì)60年代誕生的Pascal語言。所謂過程程序設(shè)計范型,即
確定程序中所需要的過程;
采用過程處理中所找到的最好的算法。在該程序設(shè)計范型中,過程程序設(shè)計的核心是確定程序設(shè)計時所需的過程(Procedure),其程序的組件粒度是過程,每個過程是語言中的過程(Procedure)或函數(shù)(Function)單元,它完成某一個/類特定的任務(wù)。該范型的側(cè)重點在于處理過程——執(zhí)行預(yù)期計算所需要的算法。
通常,程序設(shè)計語言支持這種范型的主要語言機制是向函數(shù)/過程傳遞參數(shù)及從函數(shù)/過程返回值。
該程序設(shè)計范型從程序的組織形式看,算法本身用函數(shù)/過程的調(diào)用來實現(xiàn)程序所要完成的任務(wù)。下面是一個計算平方根的程序片斷,從中我們可體會到什么是過程程序設(shè)計范型。
//計算某個雙精度數(shù)平方根函數(shù)的定義:
doublesqrt(doublearg)
{
//計算平方根的程序代碼
}
voidf()
{
doubleroot2=sqrt(2);//sqrt函數(shù)的調(diào)用
//...
}
C++語言支持過程程序設(shè)計范型的主要語言機制有:
函數(shù)、向函數(shù)傳遞參數(shù)及從函數(shù)返回值;
變量的定義與聲明;
算術(shù)運算符與關(guān)系運算符;
條件判斷語句與循環(huán)語句;
指針與數(shù)組。
C++?語言的子集C語言所提供的各種語言機制即用于支持過程程序設(shè)計范型。下面我們對C++?支持過程程序設(shè)計范型的各語言機制作一概述。2.2.2變量和算術(shù)運算符
C++?是一種強類型語言,C++?中每個名字(例如變量名或函數(shù)名)和表達(dá)式都須有一個類型,以表明它所能進行的操作。例如,變量定義語句
intx;
就表明變量x的類型為int。在C++?中遵循變量先定義(或聲明)后引用的原則,即在C++?程序中,每個變量都必須先定義或聲明,之后才能引用。
C++中提供了四大類基本的數(shù)據(jù)類型,它們是:
bool//布爾類型,其值為true或false
char//字符類型,例如?'a'、'8'?等
int//整數(shù)類型,例如1、45和1234等
double//雙精度浮點數(shù)類型,例如3.14和2.45e-3等
上述C++?的基本類型與邏輯運算、字符、整型及浮點型概念相對應(yīng)。注意:C++?語言不是一種跨平臺的語言,其類型的大小與實現(xiàn)語言的具體平臺相關(guān)。一般而言,char通常占用特定機器的一個字節(jié),int一般對應(yīng)著機器的一個字,double通常大于int類型,而bool類型一般不小于機器的一個字節(jié)。
C++?提供了如下的算術(shù)和關(guān)系運算。
(1)算術(shù)運算符:
+ //加,一元正號和二元加- //減,一元負(fù)號和二元減
* //乘
/ //整數(shù)除或浮點除
% //取?;蚍Q求余
(2)關(guān)系運算符:
== //等于,注意和賦值號?=?的區(qū)別
!= //不等于
< //小于
> //大于
<= //小于等于
>= //大于等于在進行賦值與算術(shù)運算時,C++?能在基本類型之間進行相容/有意義的類型轉(zhuǎn)換。因此,在C++?表達(dá)式中,各種基本類型的量可自由地混合使用,表達(dá)式的最終類型為參與表達(dá)式運算量最高的類型(即占有存儲字節(jié)量最大者)。例:
voidsome_function()//void類型指函數(shù)無返回值
{
doubled=2.2; //C++?將一個浮點數(shù)字面值默認(rèn)為double類型
inti=7;
d=d+i;
//d+i的類型為double
i=d*i;
//將double類型d*i的值進行隱式類型轉(zhuǎn)換,轉(zhuǎn)換為
int后賦給i
}2.2.3條件判斷與循環(huán)
C++?中提供了兩種條件判斷語句,它們是if和switch語句。
幾乎沒有不包含循環(huán)的程序。C++?中提供了三種循環(huán)語句,它們是for、while和do語句。
上述語句的語法及語義詳見第4章內(nèi)容。2.2.4指針與數(shù)組
指針類型是一種特殊的由某種類型構(gòu)造出來的類型,指針類型變量只能存放特定類型(即所指)的對象的地址。
數(shù)組類型是由若干個(個數(shù)固定)同質(zhì)元素構(gòu)造的一種數(shù)據(jù)結(jié)構(gòu)。這種類型的變量給批量同類數(shù)據(jù)的組織與處理提供了便利。指針與數(shù)組的詳細(xì)內(nèi)容見后續(xù)章節(jié)。
2.3模塊化程序設(shè)計范型
隨著程序規(guī)模的增大和復(fù)雜性的提高,程序設(shè)計的重點已從過程程序設(shè)計轉(zhuǎn)移到對數(shù)據(jù)的組織,即程序的組織以數(shù)據(jù)為中心,處理為外圍。這樣的程序組織方式是順應(yīng)需求并有一定道理的。因為應(yīng)用中數(shù)據(jù)(結(jié)構(gòu))的穩(wěn)定性常常強于對數(shù)據(jù)操作(用過程表示)的穩(wěn)定性;另外,這種程序組織方式亦大大提高了程序的可擴充性與可維護性。將一組相關(guān)的過程及它們所操作的數(shù)據(jù)組織在一起,這種組織結(jié)構(gòu)稱為模塊(Module)。
模塊化程序設(shè)計范型是:
確定程序中所需要的模塊;
將程序劃分成模塊,使得數(shù)據(jù)隱藏在程序的各模塊之中。
在該范型中,程序組件粒度是模塊。這種程序設(shè)計范型始于1972年P(guān)arnas提出的“信息隱蔽原理”。其基本思想是:將相關(guān)的數(shù)據(jù)和對此數(shù)據(jù)操作的過程/函數(shù)聚集在某一模塊中,模塊對外只提供接口/界面,將其實現(xiàn)隱藏起來,其它模塊不能隨意訪問該模塊中的內(nèi)容。支持該范型的典型代表是NiklausWirth發(fā)明的Modula、Modula-2語言。
下面我們定義一個堆棧模塊,以此來展示采用該范型C++?中模塊的定義與使用方法。
堆棧模塊Stack的用戶界面/接口可按C++?提供的名字空間機制進行聲明:
C++中支持模塊化程序設(shè)計范型的主要機制有:
名字空間(Namespace),一種模塊化機制(Mechanism);
分別編譯(SeparateCompilation),模塊的接口和實現(xiàn)可分別編譯;
范圍解析(::),如Stack::push(charc)和Stack::pop();
異常處理(ExceptionHandling)。
在C++中通過名字空間namespace、范圍解析、分別編譯和異常處理機制,實現(xiàn)了模塊接口與實現(xiàn)的分離、模塊中數(shù)據(jù)的表示與對數(shù)據(jù)操作的分離、用戶代碼與Stack實現(xiàn)的完全分離。
stack.h、stack.cpp和user.cpp三文件之間的關(guān)系如圖2.1所示。圖2.1stack.h、stack.c和user.c之間的關(guān)系
2.4數(shù)據(jù)抽象
模塊用函數(shù)的接口隱蔽了模塊中的數(shù)據(jù)及函數(shù)的處理細(xì)節(jié)(即封裝),使得可以在保持模塊接口不變的前提下,改變模塊中的數(shù)據(jù)結(jié)構(gòu)和函數(shù)的處理細(xì)節(jié)不影響使用模塊的用戶,這對于大系統(tǒng)是很有好處的。
一個系統(tǒng)設(shè)計與實現(xiàn)的優(yōu)劣關(guān)鍵在于其抽象程度的高低,封裝充分體現(xiàn)了抽象的理念。
所謂抽象(Abstract),是對一種事物或一個系統(tǒng)的簡化描述,它使外界集中注意力于該事物或系統(tǒng)的本質(zhì)方面,而忽略其細(xì)節(jié)。模塊化是一切成功的大型程序的一個最基本的特征。但是,對于清晰地表示復(fù)雜的大型系統(tǒng)而言,僅僅模塊化是遠(yuǎn)遠(yuǎn)不夠的。模塊雖然實現(xiàn)了信息隱藏,但模塊本身不是類型,它缺少語言基本類型的一些能力。例如,模塊不具有生成多個模塊實例(Instance)的能力,它的數(shù)據(jù)的產(chǎn)生和清除規(guī)則與具體的設(shè)計相關(guān),而基本類型變量(或數(shù)據(jù))的產(chǎn)生和清除有確定的規(guī)則,容易理解和使用。
應(yīng)用中,如果我們需要若干個堆棧模塊實例,則應(yīng)該自定義一個堆棧管理器,其界面如下:有了上述定義,一個Stack::stack用起來就像是一個基本類型。下面是用戶使用stack的一段代碼:上述定義的Stack::stack實際上扮演著一個假堆棧類型的角色。這種假堆棧類型的最大問題是:當(dāng)堆棧模塊的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,這種堆棧模塊實例的生成與賦值等操作亦會隨之變化,這偏離于信息隱藏原則;另一方面,這種假類型的實例生成與消除亦表現(xiàn)得不夠自然,如在上述示例中,堆棧實例的生成/消除須顯式地調(diào)用create()/destroy();更重要的是這種假類型沒有給語言環(huán)境提供任何類型信息,使得編譯器或運行環(huán)境無法進行類型檢查。
解決上述問題的思路是把模塊與類型結(jié)合起來,賦予它與語言基本類型類似的能力,這種概念叫做數(shù)據(jù)抽象。這樣的體現(xiàn)數(shù)據(jù)抽象概念的類型叫做抽象數(shù)據(jù)類型(AbstractDataType,ADT)或用戶自定義類型(User-DefinedType)。
準(zhǔn)確地說,所謂數(shù)據(jù)抽象,即
確定所需要的類型;
為每一種類型提供一組完整的操作集。
C++語言支持抽象數(shù)據(jù)類型(用戶自定義類型)的主要設(shè)施有:
Class(一般意義上的類);
ConcreteType(有實例的類,即可以產(chǎn)生對象的類);
AbstractType(抽象類,即無實例的類(只定義了結(jié)構(gòu)和接口的類));
VirtualFunction(虛擬函數(shù))。
下面是利用抽象數(shù)據(jù)類型定義的Stack類的界面:
classStack
{
char*v;
inttop;
intmax_size;
public:
Stack(ints);
~Stack();
voidpush(charc);
charpop();
};
2.5面向?qū)ο蟪绦蛟O(shè)計范型
在一個軟件系統(tǒng)中存在著大量的類,在不同的類之間可能存在共性和個性。如果我們把共性集中定義在某個類中,把個性分別定義在其它的類中,再明確表示它們之間的這種共性與個性的關(guān)系,就可以:在需要修改共性部分時,這種修改可以自動地傳播到所有的類;在需要修改個性部分時,這種修改只影響到一個相關(guān)的類。
以層次化形式表示共性和個性關(guān)系的方式稱為繼承性(Inheritance)。在一個系統(tǒng)中,表示繼承性的一組類形成了類層次結(jié)構(gòu)(ClassHierarchy)。同時支持ADT和繼承性的程序設(shè)計范型,即為面向?qū)ο蟪绦蛟O(shè)計范型。
準(zhǔn)確地說,面向?qū)ο蟪绦蛟O(shè)計范型中程序設(shè)計的理念是:
確定程序中所需要的類;
為每一個類提供一組完整的操作集;
用繼承性將類之間的共性顯式地表示出來。
C++?中支持面向?qū)ο蟪绦蛟O(shè)計范型的主要機制有:
Class(一般意義上的類);
ConcreteTypes(有實例的類,即可以產(chǎn)生對象的類);
AbstractTypes(抽象類,即無實例的類(只定義了結(jié)構(gòu)和接口的類));
VirtualFunctions(虛擬函數(shù));
DerivedClasses(派生類)。
面向?qū)ο蟪绦蛟O(shè)計范型是當(dāng)今軟件業(yè)界公認(rèn)的主流開發(fā)技術(shù)。這種范型不僅支持軟件的快速開發(fā),而且大大提高了軟件的重用(Reuse),特別是極大地增強了軟件的可擴充性和可維護性。
支持該范型的典型語言有20世紀(jì)70年代產(chǎn)生的smalltalk語言、當(dāng)今流行的Java語言及C#?語言等。下面我們給出一個小型的應(yīng)用實例,以此說明該范型的精粹。
數(shù)據(jù)抽象是系統(tǒng)良好設(shè)計的基本特征。僅實現(xiàn)數(shù)據(jù)抽象,即只有用戶自定義類型對于一個系統(tǒng)而言往往缺乏其應(yīng)有的靈活性。
假定在某個圖形系統(tǒng)里定義了一個Shape類型,它能支持圓、三角形和正方形。又假設(shè)我們已定義了Point(點類)、Color(顏色類)和Kind(類別)類型:對于Shape類的draw()方法(Method)而言,必須知道系統(tǒng)中所有圖形的種類,一旦增加或刪除系統(tǒng)中圖形的種類,就必須修改類型域Kind的信息及draw()方法的代碼。這樣做不僅極易導(dǎo)致程序錯誤,而且極大地限定了圖形系統(tǒng)對特定圖形的增加和刪除。
出現(xiàn)上述問題的根本癥結(jié)在于我們沒有將圖形系統(tǒng)中各種圖形的共性抽象出來并加以組織。下面我們給出問題的解決方案:在圖形系統(tǒng)中將其共性(每種圖形其共性都是一種形狀,屬于Shape類型)抽象出來,并采用面向?qū)ο蟪绦蛟O(shè)計的思想將這種共性與各自圖形的特性表達(dá)出來。
首先,我們定義一個抽象類(含有純虛函數(shù)的類)Shape,圖形系統(tǒng)中所有的圖形都屬于Shape。在Shape中,我們僅定義了各種圖形類進行draw()和rotate()操作的調(diào)用接口,而沒有定義其實現(xiàn),這可用C++提供的純虛函數(shù)機制實現(xiàn):有了Shape,對圖形系統(tǒng)中具有特性的各種圖形,如Circle類,我們可定義如下:此時,類型Circle被稱為自Shape派生而來,它是Shape類的子類/派生類(Subclass/DerivedClass),Shape稱為基類/超類(BaseClass/SuperClass)。Circle類繼承了Shape類的所有特征,并具有它自己的特性。在一個系統(tǒng)中,若將其中的類以層次化的方式組織起來,將使我們受益匪淺!?在上例的圖形系統(tǒng)中,當(dāng)我們需要增加一種新的圖形類時,我們不需要修改已有的Shape類代碼,僅需從Shape類派生出一個新類即可。
C++中抽象類、繼承機制、純虛函數(shù)等都是進行面向?qū)ο蟪绦蛟O(shè)計極為重要的、相輔相成的語言機制。在進行大型復(fù)雜系統(tǒng)的設(shè)計時,關(guān)鍵是尋找系統(tǒng)中類的共性及將系統(tǒng)中的類以層次化的方式加以組織。
2.6類屬/通用程序設(shè)計范型
通常,在應(yīng)用中我們可能需要其它類型的堆棧,例如int/float等類型的堆棧,而不僅僅是上節(jié)定義的字符類型堆棧。如何滿足用戶的這種需求呢?
堆棧是一種通用的概念,它與char、int及float類型等無關(guān)。如果能抽取堆棧這一共性概念,用參數(shù)機制表達(dá)各類堆棧(char型堆棧、int型堆棧等)的特性,我們就達(dá)到了更高一級的抽象。這種抽象正是類屬/通用程序設(shè)計范型的理念。這種程序設(shè)計范型是指:
確定程序中所需要的算法;
將它們參數(shù)化,使之能適用于各種類型和數(shù)據(jù)結(jié)構(gòu)。
上述所謂的算法即表達(dá)共性概念
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年環(huán)保材料貼牌生產(chǎn)與技術(shù)支持合同
- 2025年度木工企業(yè)員工績效考核與激勵合同4篇
- 二零二五年度水利樞紐工程塊石供應(yīng)合同模板下載3篇
- 二零二五年度商業(yè)用途二房東房屋租賃經(jīng)營合同2篇
- 2025年度挖掘機械買賣與環(huán)保節(jié)能合同3篇
- 二零二五年度智能農(nóng)業(yè)無人機農(nóng)藥噴灑服務(wù)合同3篇
- 二零二四年度醫(yī)療器械研發(fā)合作與專利授權(quán)合同
- 二零二五年度農(nóng)業(yè)大棚租賃與農(nóng)業(yè)保險合作合同范本4篇
- 二零二五年度牛肝菌產(chǎn)品包裝設(shè)計與印刷合同3篇
- 二零二五年度醫(yī)療設(shè)備配件更換與健康管理合同4篇
- 2025-2030年中國陶瓷電容器行業(yè)運營狀況與發(fā)展前景分析報告
- 讓學(xué)生看見你的愛
- 12123交管學(xué)法減分練習(xí)題及答案二(帶圖文通用版)
- 銷售禮盒營銷方案
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報告
- 初中數(shù)學(xué)校本教材(完整版)
- 重慶市銅梁區(qū)2024屆數(shù)學(xué)八上期末檢測試題含解析
- 中央導(dǎo)管相關(guān)血流感染防控
- 光的偏振和晶體光學(xué)基礎(chǔ)課件
- 中科大光學(xué)講義08光的偏振
- 黑布林英語閱讀《小婦人》-中英伴讀
評論
0/150
提交評論