版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο笾械木幊贪踩?頁,課件共31頁,創(chuàng)作于2023年2月面向?qū)ο?ObjectOriented,OO)是目前最流行的軟件開發(fā)方法之一,也是當(dāng)前計算機軟件工程界關(guān)心的重點,從90年代開始,它就慢慢變成了軟件開發(fā)方法的主流。目前,面向?qū)ο蟮母拍詈蛻?yīng)用,已經(jīng)不僅僅集中于程序設(shè)計和軟件開發(fā),而是擴充到計算機應(yīng)用的其他應(yīng)用場合,如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。面向?qū)ο髲娬{(diào)人類在日常的思維邏輯中經(jīng)常采用的思維方法與原則,其中的重要概念如抽象、分類、繼承、聚合、多態(tài)等,都和我們的生活息息相關(guān),這也成為面向?qū)ο笏枷肓餍械脑?。本章主要介紹面向?qū)ο笾械陌踩幊?。涉及面向?qū)ο?,?nèi)存的分配與釋放,靜態(tài)成員安全等幾個方面。第2頁,課件共31頁,創(chuàng)作于2023年2月7.1面向?qū)ο蟾攀龅?頁,課件共31頁,創(chuàng)作于2023年2月7.1.1面向?qū)ο蠡驹砻嫦驅(qū)ο?,可以說是目前最流行的軟件開發(fā)方法之一,目前大多數(shù)的高級語言都支持面向?qū)ο?,該思想也是用日常生活中的現(xiàn)象開模擬軟件開發(fā)的過程。面向?qū)ο蟀▋蓚€方面的范疇:面向?qū)ο蠓椒▽W(xué);面向?qū)ο蟪绦蜷_發(fā)技術(shù)。其中,面向?qū)ο蠓椒▽W(xué)是面向?qū)ο蟪绦蜷_發(fā)技術(shù)的理論基礎(chǔ)。從面向?qū)ο蠓椒▽W(xué)的理論,可以設(shè)計出類似人類思維方式和手段的面向?qū)ο蟪绦蛟O(shè)計語言,從而延伸出面向?qū)ο蟪绦蜷_發(fā)技術(shù),使得程序開發(fā)過程非常類似于人類的認(rèn)知。通過面向?qū)ο蟮姆椒▽W(xué)和面向?qū)ο蟮某绦蜷_發(fā)技術(shù)開發(fā)出的軟件,具有模塊化特色突出、可讀性強、易維護性強等優(yōu)點。第4頁,課件共31頁,創(chuàng)作于2023年2月在面向?qū)ο蟮姆椒▽W(xué)中,基于人類對客觀世界的認(rèn)知規(guī)律、思維方式和方法,提取出針對軟件開發(fā)的如下抽象認(rèn)識:客觀世界由各種各樣的實體組成,各自發(fā)揮作用,相互進行通信,這些實體稱為對象;每個對象都保存了各自的內(nèi)部狀態(tài),具有一定的功能動作;由于外界其他對象或者外部環(huán)境的影響,對象本身依據(jù)通信機制,根據(jù)具體情況作出不同的反應(yīng);多個相似對象,如果屬性和功能動作性質(zhì)類似,可以將其劃分為一類;類與類之間可以有繼承關(guān)系;復(fù)雜的對象可以由相對簡單的對象通過一定的方式組合而成;對象之間可以通過各種方法進行通信;等等??偠灾?,一系列簡單或復(fù)雜的對象進行組合,其問的相互作用和通信,構(gòu)成了各種系統(tǒng),構(gòu)成了人們所面對的客觀世界。第5頁,課件共31頁,創(chuàng)作于2023年2月7.1.2面向?qū)ο蟮幕靖拍畈还苁裁礃拥恼Z言,只要支持面向?qū)ο?,實際上是利用了面向?qū)ο蠡舅枷?,其中,最基本的概念有以下幾個:1:對象(Object)。對象構(gòu)成客觀世界的一個個實體,從最簡單的字符串到復(fù)雜的軟件系統(tǒng)等,均可看作對象,廣義上,對象不僅能表示具體的實體,還能表示抽象的規(guī)則或事件等。對象具有兩個方面的特點:能夠保存一定的狀態(tài),由“屬性(attribute)”來表達;能執(zhí)行一定的動作,“方法(method)”來表達。2:類(class)。類是用于描述同一類型的對象的一個抽象的概念,類中定義了這一類對象所應(yīng)具有的屬性和方法。多個對象的抽象成為類,類的具體化就是對象,通常的說法,創(chuàng)建一個對象實際上就是將類實例化。3:消息和方法。消息是指對象之間進行通信的數(shù)據(jù)或者數(shù)據(jù)結(jié)構(gòu)。在通信的過程中,一個消息發(fā)送給某個對象,實際上相當(dāng)于調(diào)用另一個對象的方法,消息可以是這個方法的參數(shù)。第6頁,課件共31頁,創(chuàng)作于2023年2月4:繼承(Inheritance)。繼承性是指子類自動共享父類屬性和方法的機制。繼承的思想來源于:在定義和實現(xiàn)一個新的類時,可以將一個已經(jīng)存在的類作為父類,新類的定義在這個父類的基礎(chǔ)之上進行,把這個父類中的屬性和方法作為自己的屬性和方法,并可加入若干新的屬性和方法。繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其它語言的重要特點,是其他語言所沒有的。在類的繼承中,如果子類只繼承一個父類的屬性和方法,稱為單重繼承;如果子類繼承了多個父類的屬性和方法,稱為多重繼承。有些語言(如C++)支持多重繼承,有些語言(如Java)不支持多重繼承。在軟件開發(fā)的過程中,類和類之間的繼承,對于信息的組織與分類,非常有用,它簡化了對象、類的創(chuàng)建,增加了代碼的可用重性,使建立的軟件具有良好的可擴充性和可維護性。第7頁,課件共31頁,創(chuàng)作于2023年2月5:多態(tài)(Polymorphism)。多態(tài),是指不同類型對象,收到同一消息(調(diào)用同一個函數(shù)等),根據(jù)其類型,可以產(chǎn)生不同的結(jié)果。在面向?qū)ο笳Z言中,一般具有兩種形式的多態(tài):靜態(tài)多態(tài),一般指函數(shù)重載;動態(tài)多態(tài),一般利用繼承和函數(shù)覆蓋。有了多態(tài)性,不同對象可以以適合自身的方式,去響應(yīng)相同的消息,增強了軟件的可擴展性和和重用性。6:封裝(Encapsulation)。封裝,保證了軟件的每個組成部分具有優(yōu)良的模塊性,通過定義外部接口使模塊之間的耦合性達到最小。在面向?qū)ο蟮恼Z言中,對象是封裝的最基本單位,增加了程序結(jié)構(gòu)的清晰性,防止了程序相互依賴性而帶來的變動影響。第8頁,課件共31頁,創(chuàng)作于2023年2月7.2對象內(nèi)存分配與釋放第9頁,課件共31頁,創(chuàng)作于2023年2月7.2.1對象分配內(nèi)存對象分配內(nèi)存,一般叫做對象的實例化。在分配內(nèi)存之前,必須已經(jīng)編寫了一個類。假設(shè)有以下類:如Java語言中,聲明一個對象的語法是:但是,對象是引用數(shù)據(jù)類型,定義一個對象引用,相當(dāng)于聲明一個對象,聲明不同于創(chuàng)建,聲明對象,只分配了存儲地址的存儲器位置,還沒有為其分配內(nèi)存。只是在內(nèi)存中定義了一個名字叫做cus的引用,類似于C++中的指針,此時指向空(null)值,或者說引用為空。Customercus; classCustomer{ privateStringaccount; privateStringpassword; privateStringcname;} 第10頁,課件共31頁,創(chuàng)作于2023年2月一般情況下,調(diào)用new方法才能創(chuàng)建一個對象。如果聲明的對象引用不指向任何對象,這樣的引用為“空引用(nullreference或nullpointer)”;如果聲明的對象引用存儲了一個實際對象的地址,則稱“引用指向一個對象”。給對象分配內(nèi)存也稱為實例化對象,在Java中可以用以下方式來進行:這樣,就為對象分配了內(nèi)存。在內(nèi)存里面,其基本結(jié)構(gòu)如下:cus里面存儲了實際對象的地址,可以通過cus來訪問各個成員。因此,在為對象分配內(nèi)存時,一定要注意引用是否為null。Customercus=newCustomer(); 第11頁,課件共31頁,創(chuàng)作于2023年2月7.2.2對象內(nèi)存釋放對象的生成比較簡單,涉及的安全考慮也不多;與此相對應(yīng),對象的內(nèi)存也有釋放的過程,但是和生成相比,它與系統(tǒng)安全性的關(guān)系更大一些?,F(xiàn)在以C++為例,來闡述對象在內(nèi)存中的存儲和釋放情況。對象通常存放在三個內(nèi)存區(qū)域:1:全局/靜態(tài)數(shù)據(jù)區(qū):主要存放全局對象和靜態(tài)對象,在該內(nèi)存區(qū)的對象或成員,直到進程結(jié)束,才會釋放內(nèi)存。2:堆:存在于堆中的數(shù)據(jù),分配內(nèi)存的方法一般是:new/malloc,釋放內(nèi)存的方法是:delete/free。對于這種對象,我們可以進行創(chuàng)建和銷毀進行精確控制。堆對象在c++中的使用非常廣泛,也得到了廣泛的應(yīng)用,不過,用這種方法分配或釋放內(nèi)存,也有一些缺點:需要程序員手工管理其創(chuàng)建和釋放,如果忘記釋放的話,可能會造成內(nèi)存泄露;在時間效率和空間效率上,堆對象的沒有棧對象高;在程序中,如果頻繁使用new來創(chuàng)建堆對象或者用delete來釋放堆對象,會造成大量的內(nèi)存碎片,內(nèi)存得不到充分的使用。3:棧:棧中一般保存的是局部對象或者局部變量,使用棧對象效率較高,程序員無需對其生存周期進行管理。第12頁,課件共31頁,創(chuàng)作于2023年2月C++中,和對象釋放內(nèi)存相關(guān)的,一般是析構(gòu)函數(shù)。析構(gòu)函數(shù)的作用是釋放對象申請的資源。如代碼Customer.cpp。生成exe文件,運行,效果為:提示析構(gòu)函數(shù)的調(diào)用中,cus1是一個指針,必須經(jīng)過delete才能讓其調(diào)用;而另一種情況下,對象生命周期結(jié)束時即可調(diào)用。第13頁,課件共31頁,創(chuàng)作于2023年2月因此,析構(gòu)函數(shù)通常由系統(tǒng)自動調(diào)用,在以下幾種情況下系統(tǒng)會調(diào)用析構(gòu)函數(shù):全局對象在進程結(jié)束時;堆中對象進行delete/free操作時;棧中對象生命周期結(jié)束時:包括離開作用域、函數(shù)正常正常跳出或者拋出異常等。在使用析構(gòu)函數(shù)時,可以充分利用它的性質(zhì)進行一些操作,特別對于棧中對象,由于析構(gòu)函數(shù)調(diào)用是由系統(tǒng)自動完成的,所以可以利用這一特性,將一些需要隨著對象銷毀而必須釋放的資源封裝在析構(gòu)函數(shù)里由系統(tǒng)自動完成銷毀或釋放,這些工作的典型案例如:某些資源的釋放;多線程解鎖;關(guān)閉文件;等等。這樣,利用棧對象的這一特性進行自動管理,可以避免由于編程時的遺漏而忘記進行某種操作。第14頁,課件共31頁,創(chuàng)作于2023年2月這樣,利用棧對象的這一特性進行自動管理,可以避免由于編程時的遺漏而忘記進行某種操作。在Java語言中,對象的釋放相對簡單一些。許多方面,Java類似于C++。但是,Java去除了析構(gòu)函數(shù),取而代之的是:finalize()方法。finalize()與C++析構(gòu)函數(shù)有什么區(qū)別呢?實際上,finalize()是Java為所有類定義的一個特殊的方法,它提供了類似于C++析構(gòu)函數(shù)的一些功能。但是,finalize()與C++的析構(gòu)函數(shù)并不完全一樣,finalize()方法的調(diào)用并不是在對象的作用域結(jié)束之后馬上進行,而是與Java的垃圾回收器緊密相關(guān)。
提示:Java語言中,創(chuàng)建一個對象時,Java虛擬機(JVM)為該對象分配內(nèi)存、調(diào)用構(gòu)造函數(shù)并可使用該對象。當(dāng)程序發(fā)現(xiàn)對于某個對象沒有有效的引用時,JVM通過垃圾回收器將該對象標(biāo)記為釋放狀態(tài)。垃圾回收器要將一個對象的內(nèi)存進行釋放時,才自動調(diào)用該對象的finalize()方法。第15頁,課件共31頁,創(chuàng)作于2023年2月當(dāng)Java虛擬機已確定尚未終止的任何線程無法再通過任何方法訪問此對象時,由對象的垃圾回收器調(diào)用此方法。對于任何給定對象,Java虛擬機最多只調(diào)用一次finalize()方法。finalize()定義于java.lang.Object中,finalize()方法可以被任何類重寫,并完成類似析構(gòu)函數(shù)的功能,以配置系統(tǒng)資源或執(zhí)行其他清除。不過,事實上,你可以調(diào)用System.gc()方法強制垃圾回收器來釋放這些對象的內(nèi)存。如代碼P07_01.java。注意,因為垃圾回收工作可能具有一定的延遲,而手工用System.gc()來進行強制垃圾回收又可能被忘記,因為,很多代碼因為在這個問題上忽略了,造成了安全隱患。如代碼P07_02.java。運行該代碼,沒有任何的反應(yīng)。垃圾回收機制也無法調(diào)用MyObject的finalize()方法。雖然此時所有的obj都被置空,但是它們沒有被釋放,因為變量al引用了這些對象。所以,在使用這類功能時要特別小心。除非將代碼改為P07_02.java。第16頁,課件共31頁,創(chuàng)作于2023年2月綜上所述,Java的垃圾回收機制確實可以減小程序員的工作量,對于Java回收機制,可以遵循以下準(zhǔn)則:在不使用某對象時,顯式地將此對象賦空,等待垃圾回收;遵循誰創(chuàng)建誰釋放的原則,讓程序更有條理;可以在合適的場景下使用對象池技術(shù)以提高系統(tǒng)性能;盡量避免強制系統(tǒng)做垃圾內(nèi)存的回收,增長系統(tǒng)做垃圾回收的最終時間;必要時候,可以調(diào)用System.gc()方法強制垃圾回收。不過,根據(jù)Java語言規(guī)范定義,不同的JVM實現(xiàn)者可能使用不同的算法管理垃圾收集器,System.gc()函數(shù)不保證JVM的垃圾收集器一定會馬上執(zhí)行。但通常來說,除非在一些特定的場合,如實時系統(tǒng),用戶不希望垃圾收集器突然中斷應(yīng)用程序執(zhí)行而進行垃圾回收,垃圾收集器的執(zhí)行影響應(yīng)用程序的性能,此時我們可以調(diào)整垃圾收集器的參數(shù),讓垃圾收集器能夠通過平緩的方式釋放內(nèi)存。第17頁,課件共31頁,創(chuàng)作于2023年2月7.2.3對象線程安全在很多情況下,對象可能在多線程的環(huán)境下運行。一個對象在其生命周期內(nèi)可以被多個線程訪問,實際上是多線程通信的一種方式,此種情況就會出現(xiàn)多種問題,其中最重要的就是多線環(huán)境下對象的狀態(tài)安全訪問以及修改。實際上,很多系統(tǒng)軟件(如服務(wù)器)已經(jīng)在底層實現(xiàn)了線程安全,因此,隱患主要來源于:程序員不知道該組件對象使用線程來實現(xiàn),錯誤地將一些用非線程機制情況下的風(fēng)格用進去。第18頁,課件共31頁,創(chuàng)作于2023年2月關(guān)于對象線程安全,有兩個方面的問題:1:很多框架下都提供了對象被多個線程訪問的機制當(dāng)對象可能被多個線程來運行時,千萬不能在對象中保存和某個線程相關(guān)的狀態(tài)。例如:JavaEE中的Servlet,其運行模型為:每一個請求實際上就是一個線程,來運行Servlet的某些函數(shù),此時,Servlet中就不宜保存相應(yīng)的狀態(tài)數(shù)據(jù)。2:當(dāng)對象的可能被多個線程來進行操作時,應(yīng)該考慮同步問題。該問題在前面的章節(jié)有所講解,在此省略。第19頁,課件共31頁,創(chuàng)作于2023年2月7.2.4對象序列化安全對象序列化是面向?qū)ο笳Z言中的重要特性之一,在Java系列和.net系列中,都可以使用一定的手段實現(xiàn)對象序列化。一般情況下,對象具有一定的生命周期,隨著生成該對象的程序作用域結(jié)束而結(jié)束。但是,有時候,程序可能需要將對象的狀態(tài)保存下來,或者寫入文件,或者寫入數(shù)據(jù)傳輸流,在需要時再將對象讀入之后進行恢復(fù),這里面就需要序列化的工作。對象序列化,就是將對象的狀態(tài)轉(zhuǎn)換成字節(jié)流(當(dāng)然也可能是字節(jié)流以上的一些包裝流),在使用的時候,可以通過讀取流中的內(nèi)容,生成相同狀態(tài)的對象。序列化(Serialization)過程的工作一般是:對象將描述自己狀態(tài)的數(shù)據(jù)寫出到流中,描述自己狀態(tài)的數(shù)據(jù),一般是成員變量,因此,序列化的主要任務(wù)是寫出對象成員變量的數(shù)值。特殊情況下,如果對象中,某個成員變量是另一對象的引用,則被引用的對象也要序列化,因此,序列化工作是遞歸的。第20頁,課件共31頁,創(chuàng)作于2023年2月在很多應(yīng)用中,對象序列化具有很重要的作用。如數(shù)據(jù)傳輸軟件中,傳輸?shù)臄?shù)據(jù)一般是一個對象,這種情況下,該對象應(yīng)該具備寫入流中的能力,也就是說需要被序列化;另外一些情況下,可能需要將對象寫入持久化存儲(如數(shù)據(jù)庫和文件),也需要進行對象的序列化。以Java為例,將對象序列化的方法很簡單,滿足兩個條件即可:將該對象對應(yīng)的類實現(xiàn)Serializable接口;該對象的被序列化成員必須是非靜態(tài)成員變量;其他語言中,序列化過程類似。不過,對象序列化只能保存成員變量的值,其他內(nèi)容,如成員函數(shù)、修飾符等,都不能保存。第21頁,課件共31頁,創(chuàng)作于2023年2月對象序列化有什么安全問題呢?由于對象序列化之后要在網(wǎng)上傳輸,或者寫入數(shù)據(jù)流,因此,需要關(guān)心的問題一般是信息泄密問題。對象被序列化時,使用字節(jié)數(shù)組表示,并且加上了很多控制標(biāo)記,在一定程度上阻止了對象成員直接被攻擊者識別。但是還是不能完全阻止對象內(nèi)容的泄密,對保存的對象稍加分析,則可獲取需要的信息。所以,在序列化時,一定要注意不能讓敏感信息(如卡號密碼)泄密。第22頁,課件共31頁,創(chuàng)作于2023年2月解決該問題的方法有兩種:1:在將對象實現(xiàn)序列化時,進行一些處理,如加密。該類方法我們將在后面的章節(jié)中詳細敘述。2:不要將敏感信息序列化??梢酝ㄟ^一些手段,不將某些成員序列化。如在Java中,可以在成員前面加上transient關(guān)鍵字,在序列化時,系統(tǒng)將會回避這些字段。第23頁,課件共31頁,創(chuàng)作于2023年2月提示:實際上,不將某些信息序列化,還有其他的一些作用,如:網(wǎng)絡(luò)之間傳遞信息時,可以避免一些占用大量字節(jié)數(shù)的對象進行傳輸,減輕網(wǎng)絡(luò)壓力;在對象中可能有一些成員不是簡單的變量,而是引用類型,但是這些成員引用沒有實現(xiàn)序列化接口,一般情況下會出現(xiàn)異常,為了避免這種異常,可以將這些成員設(shè)置為“不序列化”的。第24頁,課件共31頁,創(chuàng)作于2023年2月7.3靜態(tài)成員安全第25頁,課件共31頁,創(chuàng)作于2023年2月7.3.1靜態(tài)成員的機理在類中,數(shù)據(jù)成員可以分靜態(tài)成員、非靜態(tài)成員兩種。類中的成員,通常情況下,必須通過它的類的對象訪問,但是可以創(chuàng)建這樣一個成員,使它的使用完全獨立于該類的任何對象,被類的所有對象共用。在成員的聲明前面加上關(guān)鍵字static(靜態(tài))就能創(chuàng)建這樣的成員,這種成員叫做靜態(tài)成員。如果一個成員變量被聲明為static,就是靜態(tài)變量,如果一個成員方法被聲明為static,就是靜態(tài)方法,它們就能夠在它的類的任何對象創(chuàng)建之前被訪問,而不必引用任何對象。靜態(tài)成員變量存儲在全局?jǐn)?shù)據(jù)區(qū),為該類的所有對象共享,不屬于任何對象的存儲空間,邏輯上所有對象都共享這一存儲單元,對靜態(tài)成員變量的任何的任何操作影響這一存儲單元的所有對象。第26頁,課件共31頁,創(chuàng)作于2023年2月如下代碼:調(diào)用:
Customercus1=newCustomer();Customercus2=newCustomer(); classCustomer{privateStringaccount;privateStringpassword;privateStringcname;publicstaticStringbankName;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省保定市2024-2025學(xué)年七年級上學(xué)期期中道德與法治試題(含答案)
- 2021年10月貴州黃牛產(chǎn)業(yè)集團德江縣有限責(zé)任公司2021年面向社會公開招聘強化練習(xí)卷(一)
- 2021年10月廣西南寧市青秀區(qū)農(nóng)業(yè)農(nóng)村局公開招聘協(xié)管員強化練習(xí)卷(一)
- 2024年基層干部愛崗敬業(yè)演講稿(2篇)
- 老年病科年終總結(jié)
- 木材采運過程中的安全生產(chǎn)控制考核試卷
- 籃球場施工與標(biāo)識系統(tǒng)合同
- 工業(yè)園區(qū)環(huán)境管理辦法
- 學(xué)校游泳池改造項目合同范本
- 豪華別墅買賣委托合同范本
- 《植樹問題(兩端都栽)》(教案)2023-2024學(xué)年數(shù)學(xué)五年級上冊
- 臨床下肢深靜脈血栓預(yù)防和護理新進展
- 國畫課程設(shè)計報告
- 2022光伏電站項目工程施工組織設(shè)計方案
- 2024教師節(jié)主題班會課件
- 2024年四川省專利審查協(xié)作中心招聘筆高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 福建省龍巖市連城縣冠豸中學(xué)2023-2024學(xué)年八年級下學(xué)期第一次月考語文試題
- 電動自行車以舊換新回收體系構(gòu)建方案
- 羅漢果基本知識培訓(xùn)
- 肌肉注射操作并發(fā)癥的預(yù)防及處理
- -2.2更好發(fā)揮政府作用 課件-高中政治統(tǒng)編版必修二經(jīng)濟與社會
評論
0/150
提交評論