版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì) 第1章 緒言 1.1如何學(xué)會(huì)一門編程語(yǔ)言 1.2做筆記的方法 1.1如何學(xué)會(huì)一門編程語(yǔ)言 1.一本好書或一套好的視頻:體系完整、講解生動(dòng)、知識(shí)準(zhǔn)確 2.一本好的練習(xí)冊(cè):能夠得到充分的鍛煉,內(nèi)化知識(shí) 3.一段比較孤獨(dú)的時(shí)間:不受干擾、深入學(xué)習(xí)、突破枯燥期 4.留下筆記或電子文檔 1.2做筆記的方法 1.抓主干:瀏覽章節(jié),把定義、格式和注意事項(xiàng)標(biāo)出。 2.讀范例:仔細(xì)看解釋部分和example,理解內(nèi)容。 3.記錄:把主干部分記錄下來,用作提醒和助記。 4.練習(xí):練習(xí)這一章節(jié)的內(nèi)容 5.豐富:根據(jù)練習(xí)結(jié)果添加意義、范例和說明 第2章 MATLAB基礎(chǔ)知識(shí) MATLAB
2、的help文檔 MATLAB的help文檔是學(xué)習(xí)MATLAB的重要工具之一。MATLAB的help文 檔有規(guī)則定義、解釋說明和范例,很多問題可以在help文檔里找到答案。 Matlab運(yùn)算符 1. 算術(shù)運(yùn)算符 算術(shù)運(yùn)算因所處理的對(duì)象不同,分為矩陣和數(shù)組算術(shù)運(yùn)算兩類。 2. 關(guān)系運(yùn)算符 需要明確指出的是,MATLAB 的關(guān)系運(yùn)算雖可看成矩陣的關(guān)系運(yùn)算,但 嚴(yán)格地講,把關(guān)系運(yùn)算定義在數(shù)組基礎(chǔ)之上更為合理。關(guān)系運(yùn)算是元素 一對(duì)一的運(yùn)算結(jié)果。 3. 邏輯運(yùn)算符 為提高運(yùn)算速度,MATLAB 還定義了針對(duì)標(biāo)量的先決與和先決或運(yùn)算。 先決與運(yùn)算是當(dāng)該運(yùn)算符的左邊為1(真)時(shí),才繼續(xù)與該符號(hào)右邊的量做 邏輯
3、運(yùn)算。先決或運(yùn)算是當(dāng)運(yùn)算符的左邊為1(真)時(shí),就不需要繼續(xù)與該 符號(hào)右邊的量做邏輯運(yùn)算,而立即得出該邏輯運(yùn)算結(jié)果為1(真);否則, 就要繼續(xù)與該符號(hào)右邊的量運(yùn)算。 4. 運(yùn)算符的優(yōu)先級(jí) 和其他高級(jí)語(yǔ)言一樣,當(dāng)用多個(gè)運(yùn)算符和運(yùn)算量寫出一個(gè)MATLAB 表 達(dá)式時(shí),運(yùn)算符的優(yōu)先次序是一個(gè)必須明確的問題。 MATLAB中的全局變量 全局內(nèi)存是指內(nèi)存的一種特殊類型,它能夠被所有的工作區(qū)訪問。如果一個(gè)變量在函 數(shù)中被聲明全局變量,那么它將占用的是全局內(nèi)存,而不是本地工作區(qū)。 如果相同的變量在另一個(gè)函數(shù)中被聲明為全局變量,那么這個(gè)變量所占有內(nèi)存區(qū)域就 是第一個(gè)函數(shù)中的相同變量。 最好把全局變量聲明在函數(shù)的
4、開頭,這樣可以區(qū)別于本地變量。 在一個(gè)程序,你能利用全局內(nèi)存,在函數(shù)之間對(duì)大規(guī)模數(shù)據(jù)進(jìn)行交換。 如果想讓某個(gè)函數(shù)中定義的變量能夠被其他函數(shù)調(diào)用,需要用到全局變 量。注意,在這兩個(gè)函數(shù)中都要用global修飾這個(gè)變量。如: function t1 global x; x=0; function t2 global x; y=x end 1.6.2圖形窗口及坐標(biāo)軸 hf=figure(Color,0.5,0.5,0.5,Position,200,200,500,400); ah=axes(Parent,hf,Color,0.8,0.8,0.8); x=-2:.2:2; y=-4:.4:4; x,y
5、=meshgrid(x,y); z=x.*exp(-x.2-y.2); h=surf(Parent,ah,x,y,z,FaceColor,flat,EdgeColor,b); MATLAB面向?qū)ο蟪绦蚝?jiǎn)介 1)類 在MATLAB中,將類視作定義有特定行為的新的數(shù)據(jù)類型,與普通 的類型數(shù)據(jù)不同,類是一組具有共同特性對(duì)象的抽象,不僅包含數(shù)據(jù), 還包含了對(duì)數(shù)據(jù)的操作。對(duì)特定類的對(duì)象所定義的操作,稱為該類的方 法。也可以將類看作可作為單獨(dú)實(shí)體對(duì)待的新項(xiàng)目。 MATLAB中類的相關(guān)概念如下: 類定義描述一個(gè)類中所有實(shí)例的共有特征 屬性對(duì)類實(shí)例的數(shù)據(jù)存儲(chǔ) 方法特殊函數(shù),通常是在類實(shí)例中的操作 事件消息,當(dāng)
6、發(fā)生一些特定的行為時(shí)由類定義和提供的類實(shí)例的廣 播。 特性值,修改屬性、事件、方法和類的狀態(tài)。 聽眾對(duì)象,當(dāng)事件通知廣播時(shí),對(duì)特定的事件作出響應(yīng)。 對(duì)象類的實(shí)例 包文件夾,一個(gè)類定義和函數(shù)命名的集合。 2)對(duì)象 MATLAB中的對(duì)象是類的一個(gè)實(shí)例,這個(gè)實(shí)例包含實(shí)際數(shù)據(jù)所代表的特 定實(shí)體。對(duì)象并不是被動(dòng)的數(shù)據(jù)容器,對(duì)象還積極管理數(shù)據(jù),包括只 允許特定的操作、數(shù)據(jù)隱藏、禁止外部用戶非法對(duì)數(shù)據(jù)的濫用等,對(duì) 象對(duì)其控制直到其消失。 MATLAB中類的設(shè)計(jì)、定義 1.類的設(shè)計(jì) 在MATLAB在,通常一個(gè)類可以分為兩個(gè)組成部分,即成員變量和成員 函數(shù)。在類的設(shè)計(jì)過程中,就是要從眾多實(shí)例中抽象出共同特征,形
7、成 類。 1)定義類數(shù)據(jù) 2)定義類操作 3)定義類事件 2.類的定義 MATLAB類的定義由關(guān)鍵詞、屬性成員、方法和事件4個(gè)部分組成。 Classdef類名 Properties 屬性 end methods 方法 end event 事件 end end 第3章 MATLAB中的類和對(duì)象 3.1類的聲明 3.2類的屬性成員及訪問控制 3.3類的方法及訪問控制 3.4類的組合 3.1類的聲明 3.1.1類的聲明 3.1.2對(duì)象的創(chuàng)建和使用 3.1.3類的特性 3.1.4類定義的組織形式 3.1.5命名空間和包 3.1.1類的聲明 要在MATLAB中聲明一個(gè)類,可以采用兩種方式:其一是聲明為v
8、alue型 類(值型類),其二是聲明為handle型類(句柄型類)。 使用value型類對(duì)象可以用來表示一個(gè)實(shí)體數(shù)據(jù),用該類型對(duì)象復(fù)制另一 對(duì)象時(shí),則其中一個(gè)對(duì)象數(shù)據(jù)的修改不會(huì)引起另一對(duì)象的改變,這是又 有它們所占用的不是同一個(gè)存儲(chǔ)空間,因此它們?cè)跀?shù)據(jù)上是相互獨(dú)立的。 在MATLAB中聲明一個(gè)value型類的一般格式如下: Classdef類名 Properties 屬性 end methods 方法 end event 事件 end enumeration 枚舉(輸入?yún)?shù)) end end 3.1.2對(duì)象的創(chuàng)建和使用 MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì)中創(chuàng)建一個(gè)對(duì)象的過程一般是通過調(diào)用類的 構(gòu)造函
9、數(shù)來實(shí)現(xiàn)的,其格式如下: 對(duì)象名=類的構(gòu)造函數(shù)(輸入?yún)?shù)) 訪問對(duì)象成員采用的是點(diǎn)(.)操作符,其一般形式是: 對(duì)象名.類成員 3.1.3類的特性 3.1.4類的組織形式 3.2類的屬性成員及訪問控制 3.2.1屬性成員的聲明和初始化 3.2.2屬性成員的特性 3.2.3屬性成員的get和set方法 3.2.4屬性成員的訪問控制 3.2.1屬性成員的聲明和初始化 一個(gè)類的普通數(shù)據(jù)成員,我們可以安排在類的屬性成員部分,屬性成員塊中的 成員可以按如下格式定義: Properties 屬性成員1; 屬性成員2; end 屬性成員的初始化可以通過兩種途徑來完成。第一種是在屬性成員塊內(nèi) 為數(shù)據(jù)成員指定初
10、始值。 第二種初始化屬性成員的方法是用構(gòu)造函數(shù)來完成的,構(gòu)造函數(shù)的返回 值一般都是一個(gè)對(duì)象,通過引用對(duì)象中的屬性成員將形參賦值給它們。 3.2.2屬性成員的特性 3.2.3屬性成員的get和set方法 如果在創(chuàng)建好對(duì)象后,要改變屬性成員的值,對(duì)于具有公有訪問特性的 屬性成員來說,可以直接通過對(duì)象來訪問該成員,從而重新設(shè)置其值。 這說明MATLAB對(duì)一個(gè)類對(duì)象的屬性成員具有進(jìn)行設(shè)置(set)和查詢 (get)功能。屬性成員的get和set方法就是用來設(shè)置這種功能的。 如果沒有編寫屬性成員的set和get方法,訪問對(duì)象的屬性成員時(shí)就會(huì)直 接操作。 如果編寫屬了性成員的set和get方法,訪問對(duì)象的
11、屬性成員時(shí)MATLAB 就會(huì)調(diào)用相應(yīng)的set和get方法,而不會(huì)再直接操作。 Set方法的格式: function obj=pertyName(obj,value); End Value就像一個(gè)匣子,裝入訪問對(duì)象時(shí)傳入 的值,供set函數(shù)內(nèi)部進(jìn)行相應(yīng)的操作。 如obj. propertyName=10;則MATLAB會(huì)令 value=10。 get方法的格式: function value=pertyname(obj) end 同樣地,這里的value也是一個(gè)形參,代表查詢屬性成員時(shí),MATLAB 要提供的值。 如 pertyName %假設(shè)get函數(shù)
12、使value=10; ans= 10 3.2.4 屬性成員的訪問控制 3.3類的方法及其訪問控制 3.3.1普通方法及其訪問控制 3.3.2構(gòu)造函數(shù) 3.3.3靜態(tài)方法 3.3.4類型轉(zhuǎn)換方法 3.3.1普通方法及其訪問控制 普通方法的聲明方式一般有兩種:第一種是在類塊中給出完整的函數(shù)定 義;第二種方式是在一個(gè)單獨(dú)分文件中給出函數(shù)的完整定義,而在類中 只給出函數(shù)的聲明形式。 在類塊中給出完整的函數(shù)定義 例子: Classdef Myclass Properties x=1.0; end methods function obj=Myclass(val)%構(gòu)造函數(shù) obj.x=val; end
13、function y=computeadd(obj,val) y=obj.x+val; end end 格式如下: Methods function val1=fun1(obj,args1) end function val2=fun2(obj,args2) end function fun3(obj) end end 調(diào)用方法時(shí)有如下兩種形式: obj.fun1(args1)和fun1(obj,args1) 例如:T=myclass(5); computeadd(4); computeadd(T,4); 3.3.2構(gòu)造函數(shù) 構(gòu)造函數(shù)是類中的一個(gè)特殊方法,MATLAB中構(gòu)造函數(shù)的主要作用是來
14、完成對(duì)象的創(chuàng)建工作,與此同時(shí)可以對(duì)對(duì)象中的數(shù)據(jù)進(jìn)行初始化。 構(gòu)造函數(shù)也是類的一個(gè)方法,除了具有一般成員方法的特征之外,還具 有一些特殊的性質(zhì): 1)構(gòu)造函數(shù)的函數(shù)名與類名相同。 2)構(gòu)造函數(shù)只能返回一個(gè)參數(shù),它是本類的一個(gè)對(duì)象,在類的所有方 法中只能用構(gòu)造函數(shù)來創(chuàng)建一個(gè)對(duì)象。 3)構(gòu)造函數(shù)總是返回一個(gè)有效的類實(shí)例,而不是一個(gè)空對(duì)象。 4)如果類中沒有說明構(gòu)造函數(shù),則MATLAB就會(huì)提供一個(gè)無輸入?yún)?shù) 的構(gòu)造函數(shù)(默認(rèn)構(gòu)造函數(shù)),并返回一個(gè)標(biāo)量對(duì)象,該對(duì)象中的屬性 成員或被初始化為空 (),或按默認(rèn)值初始化。 3.3.3靜態(tài)方法 3.3.4類型轉(zhuǎn)換方法 3.4類的組合 3.4.1內(nèi)嵌對(duì)象 3.4
15、.2類的優(yōu)先級(jí)問題 3.4.3對(duì)象的保存與加載 3.4.1內(nèi)嵌對(duì)象 實(shí)際上,類的屬性成員中也可以存放另一個(gè)類的實(shí)例。由此我們可 以利用已有的類的實(shí)例來構(gòu)建新的復(fù)雜的類。 如果一個(gè)類中的某屬性成員存放的是另一個(gè)類的對(duì)象,我們?cè)谶@里 將這樣的成員成為內(nèi)嵌對(duì)象。 3.4.2類的優(yōu)先級(jí)問題 1)不同類之間包含同名函數(shù)時(shí)的優(yōu)先級(jí)問題 可以通過設(shè)置類的優(yōu)先級(jí)來確定主導(dǎo)類。MATLAB中確定類之間的優(yōu)先級(jí)是通過設(shè)置 一個(gè)類的inferiorClass特性來實(shí)現(xiàn)的,其格式如下: classdef(InferiorClass=?class1,?class2,myClass End 這表明class1、class
16、2等的優(yōu)先級(jí)要低于myClass,即myClass相對(duì)于它們是主導(dǎo)類。如 果沒有指定類的優(yōu)先級(jí),那么在默認(rèn)情況下,在調(diào)用這些類的那個(gè)同名函數(shù)時(shí),輸入 參數(shù)最左邊的對(duì)象是主導(dǎo)對(duì)象 2)同名類之間的優(yōu)先級(jí)問題 3.4.3對(duì)象的保存與加載 像MATLAB的普通變量一樣可以用命令save將工作空間的對(duì)象保存在mat 文件中;當(dāng)這個(gè)對(duì)象從工作空間刪除后,這個(gè)對(duì)象可以從保存文件中用 命令load加載到工作空間中來。 Save和load的使用格式是: save filename object Load filename object 第4章 MATLAB中的繼承與派生 4.1類的繼承與派生 4.2派生類的構(gòu)
17、造函數(shù) 4.3多重繼承的成員標(biāo)識(shí)問題 4.4指定容許派生的類 4.5類成員的訪問控制 4.6定義MATLAB內(nèi)置類型的派生類 4.1 類的繼承與派生 4.1.1繼承與派生的概念 4.1.2派生類的定義 4.1.3派生形成過程 4.1.4用派生類創(chuàng)建一個(gè)類的別名 4.1.1繼承與派生的概念 MATLAB中通過派生(class derivation)的機(jī)制來支持繼承。被繼承的類 型被稱為基類(base class)或超類(superclass),而新產(chǎn)生的類則為 派生類(derived class)或子類(subclass)。 4.1.2派生類的定義 MATLAB中,派生類的一般定義格式為: Cl
18、assdef 派生類名基類名1%后面部分可看成基類1的構(gòu)造 對(duì)象名=對(duì)象名基類名1(參數(shù)表1);%函數(shù) 對(duì)象名=對(duì)象名基類名1(參數(shù)表1); 對(duì)象名.新增屬性成員1=參數(shù)1; 對(duì)象名.新增屬性成員M=參數(shù)M; end 使用派生類構(gòu)造函數(shù)的注意事項(xiàng) 1.如果在調(diào)用派生類的構(gòu)造函數(shù)時(shí),需要將參數(shù)傳給基類成員,則在 派生類構(gòu)造函數(shù)中要顯式地調(diào)用這些基類的構(gòu)造函數(shù),否則MATLAB 會(huì)隱式調(diào)用。 2.如果在派生類構(gòu)造函數(shù)中要顯式地調(diào)用基類構(gòu)造函數(shù),則這樣的調(diào) 用應(yīng)在創(chuàng)建的對(duì)象引用之前來完成。 3.一個(gè)派生類也可以不編寫構(gòu)造函數(shù),除非它的基類的構(gòu)造函數(shù)是帶 輸入?yún)?shù)的。 4.2.2派生類構(gòu)造函數(shù)執(zhí)行的順
19、序 繼承順序 Class C(子 類) Class B Class A(基 類) 調(diào)用順序 調(diào)用Class C的構(gòu)造函數(shù) 調(diào)用Class B的構(gòu)造函數(shù) 調(diào)用Class A的構(gòu)造函數(shù) 4.3多重繼承中的成員標(biāo)識(shí)問題 4.3.1屬性成員名稱沖突 4.3.2方法名稱沖突 4.3.3事件名稱沖突 在MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì)中,多重繼承一般不支持各個(gè)基類中帶有 同名成員,但在一些特殊條件下允許出現(xiàn)同名成員。 4.4指定容許派生的類 4.5類成員的訪問控制 4.5.1屬性成員的訪問控制 4.5.2方法的訪問控制 4.5.3事件的訪問控制 4.6定義MATLAB內(nèi)置類型的派生控制 4.6.1MATLAB
20、的內(nèi)置類 4.6.2定義MATLAB內(nèi)置類的派生類 第5章 handle類型 5.1handle類型的聲明 5.2類handle的介紹 5.3屬性成員get/set接口的實(shí)現(xiàn) 5.4動(dòng)態(tài)屬性成員的實(shí)現(xiàn) 5.5handle類型的析構(gòu)函數(shù) 5.6handle兼容類 5.7深拷貝與淺拷貝 有時(shí)我們希望給對(duì)象創(chuàng)建一個(gè)引用,而不希望復(fù)制這個(gè)對(duì)象的數(shù)據(jù),這 時(shí)就可以使用handle型類了。 5.1handle類型的聲明 Handle型類聲明形式與value型類聲明形式的根本不同之處是前者必須是 類handle的派生類,而后者不是。類handle是MATLAB中已聲明的一個(gè)抽 象類。 聲明一個(gè)handle型
21、類的格式是: Classdef 類名handle end Handle型類的派生類也是handle型類。這時(shí),我們不需要在handle型派生類 中再次將handle指明為基類。 聲明了一個(gè)handle型類之后就可以創(chuàng)建handle型類對(duì)象了,handle型類的對(duì) 象簡(jiǎn)稱為handle對(duì)象。創(chuàng)建handle對(duì)象形式和value型類是相同的,不同的是: 創(chuàng)建handle對(duì)象時(shí),構(gòu)造函數(shù)返回的不是被創(chuàng)建的對(duì)象,而是這個(gè)對(duì)象的句 柄。MATLAB中的一個(gè)句柄也是一個(gè)變量,它是一個(gè)類實(shí)例的唯一標(biāo)識(shí)。當(dāng) 我們復(fù)制一個(gè)句柄對(duì)象時(shí),MATLAB復(fù)制的是句柄,不會(huì)復(fù)制這個(gè)對(duì)象中的 數(shù)據(jù)。這個(gè)被復(fù)制的句柄引用的數(shù)
22、據(jù)與原來的句柄引用的數(shù)據(jù)是一致的。 除自定義的handle型類外,MATLAB中的句柄圖形(handle graphics)類型的 行為特征也類似于handle型類。MATLAB在創(chuàng)建每個(gè)圖形對(duì)象時(shí)都為對(duì)象分 配唯一的一個(gè)值,稱為圖形對(duì)象句柄(handle)。句柄是圖形對(duì)象的唯一標(biāo) 識(shí)符。句柄圖形型類創(chuàng)建的對(duì)象就是MATLAB的圖形對(duì)象,句柄圖形型類創(chuàng) 建一個(gè)對(duì)象時(shí)返回一個(gè)已創(chuàng)建對(duì)象的句柄。 Handle型類可以通過句柄復(fù)制來實(shí)現(xiàn)對(duì)象的引用功能,除此之外, handle類型還具有如下一些特征: (1).繼承類handle的方法; (2).能夠定義事件和聽眾; (3).定義動(dòng)態(tài)屬性成員; (4)
23、實(shí)現(xiàn)句柄圖形類型的get和set方法。 5.2類handle的介紹 類handle是MATLAB內(nèi)定義的一個(gè)抽象類。所謂抽象類就是只能作為基 類,而不能直接用它定義對(duì)象。類handle是定義所有handle型類的基類, 即要定義一個(gè)handle型類應(yīng)該以類handle為基類,或以handle型類為基 類。 類handle中沒有提供屬性成員,而提供了許多有用的方法,定義一個(gè) handle型類將繼承這些方法,這些方法的名稱和功能如下: 5.3屬性成員get/set接口的實(shí)現(xiàn) 在定義一些具有特殊要求的handle型類時(shí),還可以用MATLAB中提供的兩個(gè) handle型類作為基類。這兩個(gè)類分別是類hg
24、setget和類dynamicprops,前者提 供了set和get方法,使其能夠?qū)崿F(xiàn)句柄圖形(handle graphics)類型的標(biāo)準(zhǔn)接口 風(fēng)格,后者提供了能夠?qū)崿F(xiàn)動(dòng)態(tài)屬性成員的功能。這兩個(gè)handle型類也是抽象 類,不能直接定義對(duì)象。 MATLAB中標(biāo)準(zhǔn)的句柄圖形系統(tǒng)實(shí)現(xiàn)了基于set和get方法的一個(gè)接口(注:這 里的兩個(gè)方法有別于屬性成員中的set和get方法),利用這些方法我們可以設(shè) 置和查詢圖形對(duì)象的屬性值。Hgsetget類是handle的派生類,這個(gè)類實(shí)現(xiàn)這些 方法的實(shí)現(xiàn)過程。我們以hgsetget類為基類聲明的handle型類就可以繼承這些 功能,這樣的類就是一個(gè)set/g
25、et接口類。 與屬性成員的set和get方法調(diào)用方式不同,hesetget類的set/get接口方法 調(diào)用既可以按在對(duì)象上用操作符“.”引用屬性成員的方式進(jìn)行設(shè)置和查 詢,也可以直接按普通函數(shù)的方式調(diào)用,如: V=get(h,PropertyName); 或 V=h.PropertyName; 這里v返回句柄對(duì)象h中成員PropertyName的值。 set(h,PropertyName,PropertyValue); 或 h.PropertyName=PropertyValue; 就是將句柄對(duì)象h中的成員PropertyName的值設(shè)置為PropertyValue。 5.4動(dòng)態(tài)屬性成員的實(shí)現(xiàn)
26、 有時(shí)在使用這些同一個(gè)類的對(duì)象時(shí),希望個(gè)別對(duì)象上附加上一些臨時(shí)的 數(shù)據(jù),這些數(shù)據(jù)有別于其他對(duì)象的屬性成員,而這些成員不用在類聲明 中提前給出,這些成員就是動(dòng)態(tài)屬性成員。在MATLAB中可以通過類 dynamicprops的派生類來實(shí)現(xiàn)這種功能。 類dynamicprops是MATLAB內(nèi)定義的handle型抽象類,它提供了能夠?qū)?現(xiàn)動(dòng)態(tài)屬性成員的功能。類dynamicprops除繼承類handle的所有方法外, 還增加了一個(gè)addprop方法,它的功能是向一個(gè)句柄對(duì)象添加一個(gè)屬性 成員的名稱,其使用格式如下: P=addprop(H,PropertyName) 這里P是meta.Dynamic
27、Property對(duì)象數(shù)組,H是一個(gè)句柄數(shù)組, PropertyName是要附加給這些對(duì)象的動(dòng)態(tài)屬性成員名稱。 在對(duì)象上添加動(dòng)態(tài)屬性成員時(shí),動(dòng)態(tài)屬性成員名稱除應(yīng)遵循具有一般變 量的命名規(guī)則外,還應(yīng)注意: 1).不能與這個(gè)類中的方法同名; 2).不能與這個(gè)類中的事件同名; 3).名稱中不能包含操作符“.”; 例如定義一個(gè)dynamicprops的派生類: classdef MyButton0 if length(pos)=4 obj.UiHandle=uicontrol(Position,pos,. Style,pushbutton); else error(Improper position)
28、end end end end end hbutton1=MyButton(20, 40, 100, 40);%創(chuàng)建對(duì)象 addprop(hbutton1,Caption);%添加動(dòng)態(tài)屬性成員 hbutton1.Caption=OK;%給成員Caption賦值 set(hbutton1.UiHandle,string,hbutton1.Caption);%給定制的按鈕加標(biāo) 題 在對(duì)一個(gè)對(duì)象上增加了動(dòng)態(tài)屬性成員之后就可以像普通屬性成員一 樣來使用了: 1.可以通過對(duì)象用點(diǎn)操作符來設(shè)置和查詢?cè)摮蓡T; 2.當(dāng)保存和加載對(duì)象時(shí),MATLAB也會(huì)把動(dòng)態(tài)屬性成員進(jìn)行保存和加 載。 3.可以為動(dòng)態(tài)屬性成員定
29、義特性。 4.可以為動(dòng)態(tài)屬性成員編寫set和get函數(shù); 5.可以聽到動(dòng)態(tài)屬性成員引發(fā)的事件; 6.通過對(duì)象數(shù)組訪問動(dòng)態(tài)屬性成員的值。 為這個(gè)動(dòng)態(tài)屬性成員設(shè)置相應(yīng)的特性,其方法是通過addprop返回值中 的meta.DynamicProperty對(duì)象來設(shè)置,如: p1=addprop(hbutton1,Caption);%添加動(dòng)態(tài)屬性成員Caption hbutton1.Caption=OK;%給成員Caption賦值 p1.Constant=true;%設(shè)置成員Caption的特性 可以為動(dòng)態(tài)屬性成員編寫自己的get和set函數(shù)。實(shí)現(xiàn)動(dòng)態(tài)屬性成員的set和get 函數(shù)步驟是: 1.定義一個(gè)
30、函數(shù)來完成動(dòng)態(tài)屬性成員進(jìn)行設(shè)置和查詢之前希望完成的工作,其 格式為myset(obj,val)或val=myGet(obj); 2.獲得動(dòng)態(tài)屬性成員對(duì)應(yīng)的meta.DynamicProperty對(duì)象; 3.將我們定義好的動(dòng)態(tài)屬性成員設(shè)置或查詢函數(shù)句柄指派到 meta.DynamicProperty對(duì)象的GetMethod或SetMethod成員上。我們定義的這個(gè) 函數(shù)不必是這個(gè)類的方法,這時(shí)我們不能用類似set.PropertyName這種形式的 函數(shù)名。 使用dynamicprops作為基類,我們就可以在該派生類對(duì)象上動(dòng)態(tài)地添加 屬性成員。此外這些動(dòng)態(tài)屬性成員還可以產(chǎn)生一些事件。 5.5ha
31、ndle型類的析構(gòu)函數(shù) MATLAB創(chuàng)建一個(gè)對(duì)象是通過構(gòu)造函數(shù)來實(shí)現(xiàn)的,當(dāng)一個(gè)對(duì)象的生命周期即將 結(jié)束時(shí),MATLAB會(huì)自動(dòng)地去調(diào)用一個(gè)特殊的方法進(jìn)行善后工作,這個(gè)特殊的 方法就是析構(gòu)函數(shù)(destructor)。在handle型類中析構(gòu)函數(shù)的主要特征是函數(shù) 名必須是delete,并以普通方法形式定義。除此之外,必須具備如下條件 MATLAB才會(huì)把delete方法當(dāng)作一個(gè)有效的析構(gòu)函數(shù): 1.delete方法必須有一個(gè)標(biāo)量輸入,即本類對(duì)象; 2.不帶輸出參數(shù); 3.不能是密封的方法、靜態(tài)的方法或抽象方法,即方法的特性不能是Sealed, Static或Abstract。 聲明一個(gè)析構(gòu)函數(shù)的方法
32、的一般格式: Methods function delete (obj) %析構(gòu)函數(shù),obj是一個(gè)本類對(duì)象 end End 如果一個(gè)類的析構(gòu)函數(shù)不必做其他工作,我們也不用在類中顯式 地重寫一個(gè)析構(gòu)函數(shù),這是因?yàn)轭恏andle中已定義了一個(gè)析構(gòu)函數(shù) delete,因此這個(gè)析構(gòu)函數(shù)也被繼承過來了。 5.6 handle-兼容類 Handle型類和value型類可以在同一場(chǎng)合下使用,這時(shí)就需要涉及到 handle型類與value型類的兼容性問題。 如果一個(gè)類可以和handle型類進(jìn)行組合構(gòu)成基類來創(chuàng)建派生類,則這樣 的類就稱為handle-兼容類。所有的handle型類都是handle兼容的。 Ha
33、ndle-兼容類遵循如下規(guī)則: 1.handle-兼容類的所有基類必須是handle-兼容類; 2.如果在一個(gè)類定義明確了HandleCompatible特性值為false,則該類 的所有基類中就不能有handle型類; 3.如果在一個(gè)類聲明沒有明確設(shè)置HandleCompatible特性,而有一個(gè) 基類是handle型類,則所有的基類都必須是handle-兼容的; 4.特性HandleCompatible不能被繼承。 Value型類、handle型類與handle-兼容類關(guān)系 圖 Handle型 類 Handle- 兼容類 Value型 類 繼承關(guān)系 Handle-兼 容類 Handle型
34、類 Value型 handle-兼 容類 基類: Handle型類 非handle兼 容類 派生類: 繼承于繼承于 一個(gè)handle兼容類表明它可以和handle型類進(jìn)行組合構(gòu)成基類來創(chuàng)建派生類。當(dāng) 我們?cè)诙x抽象基類時(shí),handle-兼容類提供了很大的靈活性,如在設(shè)計(jì)一個(gè)接 口類時(shí),基類可以被設(shè)計(jì)成既支持handle型派生類,又支持value型派生類。 Handle-兼容類可達(dá)到一物兩用的效果。 在設(shè)計(jì)handle-兼容類的方法時(shí),需要兼顧到傳參給方法的參數(shù)可能是handle型 對(duì)象也可能是value型對(duì)象。在調(diào)用時(shí)應(yīng)考慮到會(huì)有兩種不同的行為: 1).如果是以handle型對(duì)象為方法的輸入?yún)?/p>
35、數(shù),則執(zhí)行方法會(huì)改變handle型對(duì)象, 這種改變對(duì)所有工作空間中的同名句柄都生效。 2).如果是以value型對(duì)象為方法的輸入?yún)?shù),則執(zhí)行方法僅會(huì)改變方法空間內(nèi) 部的對(duì)象。 因此,如果handle-兼容類的一個(gè)方法既要操作handle型對(duì)象,又要操作value型 對(duì)象,則這個(gè)方法就應(yīng)返回一個(gè)修改的對(duì)象。 5.7深拷貝與淺拷貝 5.7.1深拷貝與淺拷貝的概念 5.7.2MATLAB.mixin.copyable類簡(jiǎn)介 5.7.3深拷貝的實(shí)現(xiàn) 5.7.1深拷貝與淺拷貝的概念 當(dāng)a、b為value型類的對(duì)象時(shí),將A復(fù)制給b后,改變對(duì)象B的屬性的值不 會(huì)對(duì)對(duì)象A的對(duì)應(yīng)屬性的值產(chǎn)生影響。這種value
36、型對(duì)象的復(fù)制就叫做深 拷貝。 當(dāng)a、b為handle型類的對(duì)象時(shí),將A復(fù)制給b后,改變對(duì)象B的屬性的值 會(huì)對(duì)對(duì)象A的對(duì)應(yīng)屬性的值產(chǎn)生影響,a、b在數(shù)據(jù)上不是完全獨(dú)立的兩 個(gè)單元。這種handle型對(duì)象的復(fù)制就叫做淺拷貝。 Handle型類對(duì)象之間進(jìn)行復(fù)制時(shí),一般是淺拷貝。那么這種對(duì)象之間能 否實(shí)現(xiàn)深拷貝呢? 5.7.2MATLAB.mixin.copyable類簡(jiǎn)介 5.7.3 深拷貝的實(shí)現(xiàn) 第6章 對(duì)象陣列 6.1MATLAB中常用的陣列形式 6.2 創(chuàng)建對(duì)象陣列 6.3 不同類型對(duì)象組成的陣列 6.4多對(duì)象陣列 6.1MATLAB中常用的陣列形式 6.1MATLAB中常用的陣列形式 6.2
37、創(chuàng)建對(duì)象陣列 6.3不同類型對(duì)象組成對(duì)象陣列 6.4多對(duì)象陣列 6.1.1 陣列的概念 6.1.2 幾種常用的陣列 1.數(shù)值陣列 2.字符陣列 3.邏輯陣列 4.元胞陣列 5.結(jié)構(gòu)體陣列 6.函數(shù)句柄陣列 單元陣列是matlab中特殊一種數(shù)組,它的元素被稱為單元(cells) ,它可以存 儲(chǔ)其它類型的 matlab數(shù)組。例如,一個(gè)單元陣列的一個(gè)單元可能包含一個(gè)實(shí)數(shù) 數(shù)組或字符型數(shù)組,還可能是復(fù)數(shù)組(圖7.1所示)在一個(gè)編程項(xiàng)目中,一個(gè)單 元陣列的每一個(gè)元素都是一個(gè)指針,指向其他的數(shù)據(jù)結(jié)構(gòu),而這些數(shù)據(jù)結(jié)構(gòu)可 以是不同的數(shù)據(jù)類型。單元陣列為選擇問題信息提供極好的方示,因?yàn)樗行?息都聚集在一起,并
38、可以通邊一單個(gè)名字訪問。 單元陣列用大括號(hào)替代小括號(hào)來選擇和顯示單元的內(nèi)容。 這個(gè)不同是由于單 元的內(nèi)容用數(shù)據(jù)結(jié)構(gòu)代替了內(nèi)容。 假設(shè)一單元陣列如圖7.2所示。 元素a(1,1)是 數(shù)據(jù)結(jié)構(gòu)33的數(shù)字?jǐn)?shù)組。a(1,1)的含義為顯示這個(gè)單元的內(nèi)容,它是一個(gè)數(shù)據(jù) 結(jié)構(gòu)。 6.2 創(chuàng)建對(duì)象陣列 6.2.1如何創(chuàng)建對(duì)象陣列 6.2.2在對(duì)象陣列上添加動(dòng)態(tài)屬性成員 陣列不僅可以由基本數(shù)據(jù)類型組成,也可以由類的多個(gè)實(shí)例構(gòu)成。對(duì)象 陣列(object arrays)的元素是類的實(shí)例,不僅具有數(shù)據(jù)成員,還有操作 這些數(shù)據(jù)的方法。因此對(duì)象陣列具有一定的特殊之處。在MATLAB面向 對(duì)象程序設(shè)計(jì)中,一個(gè)對(duì)象陣列的所
39、有元素可以源自同類型的實(shí)例,也 可以不是。 6.2.1如何創(chuàng)建對(duì)象陣列 1)比較常用的方法是使用循環(huán)語(yǔ)句依次對(duì)陣列中每個(gè)元素用對(duì)象來初始化, 例如下面的循環(huán)語(yǔ)句創(chuàng)建了一個(gè)2*3對(duì)象陣列A: for i=1:2 for j=1:3 A(i,j)=Myclass(i+j); end end 這里Myclass是一個(gè)類。 2)用下標(biāo)索賦值的方式,同時(shí)通過對(duì)陣列最后一個(gè)元素的賦值來創(chuàng)建對(duì)象陣列。例如我們聲明一個(gè) 類: classdef SimpleClass Properties Value end methods function obj=simpleClass(v) if nargin0 %支持無
40、參數(shù)輸入 obj.Value=val; end end end end 定義一個(gè)對(duì)象a: a=SimpleClass(6); 再用該對(duì)象初始化陣列的最后一個(gè)元素: A(2,3)=a; 這樣A就是一個(gè)2*3的對(duì)象陣列了,也可以直接通過調(diào)用SimpleClass的 構(gòu)造函數(shù)來初始化陣列A,即: A(2,3)=SimpleClass(6) 此時(shí)對(duì)象陣列的沒一個(gè)對(duì)象都初始化了。而對(duì)象陣列A中的最后一個(gè)元 素是帶參數(shù)輸入的構(gòu)造函數(shù)創(chuàng)建的對(duì)象,而其余元素是無參數(shù)輸入情況 下構(gòu)造函數(shù)創(chuàng)建的對(duì)象。因此在這種方式創(chuàng)建對(duì)象陣列時(shí),類構(gòu)造函數(shù) 要支持無參數(shù)輸入的情況(即標(biāo)*的語(yǔ)句),否則會(huì)提示錯(cuò)誤。 3)在一個(gè)類的
41、構(gòu)造函數(shù)實(shí)現(xiàn)部分構(gòu)建對(duì)象陣 列。這時(shí)構(gòu)造函數(shù)的返回值就是應(yīng)是一個(gè)對(duì) 象陣列。例如,下面類的構(gòu)造函數(shù)中就實(shí)現(xiàn) 了這種過程。 Classdef ArrayClass Properties Data; end methods function obj=ArrayClass(Matrix) if nargin=0; m,n=size(Matrix); obj(m,n)=ArrayClass;%預(yù)分配對(duì)象空間陣列 for i=1:m for j=1:n obj(I,j).Data=Maxtrix(i,j); End End End End End End 在上面類的構(gòu)造函數(shù)中,首先為對(duì)象陣列的每個(gè)元素預(yù)
42、分配空間,在 這個(gè)過程中MATLAB首先對(duì)最后一個(gè)元素用左端的對(duì)象進(jìn)行賦值,然后 依次用默認(rèn)ArrayClass對(duì)象(無參數(shù)輸入情況下構(gòu)建的對(duì)象)來填充, 從第一個(gè)元素到倒數(shù)第二個(gè)元素。預(yù)分配陣列對(duì)象之后,就為每個(gè)元 素對(duì)象的data依次用輸入矩陣matrix的對(duì)應(yīng)元素賦值。 例如: M=magic(5);%創(chuàng)建5階魔方矩陣 c=ArrayClass(M)%創(chuàng)建5*5對(duì)象陣列 (4)通過空陣列來創(chuàng)建對(duì)象陣列。沒有元素的陣列就是一個(gè)空陣列, 但它有確定的類型。所有的非抽象類都具有一個(gè)靜態(tài)方法empty ,它的 任務(wù)是創(chuàng)建一個(gè)同類型的空陣列。Empty方法能夠使我們指定輸出陣列 的維數(shù),但必須要使
43、某一維為0,例如: E=SimpleClass.empty(4,0); 創(chuàng)建了一個(gè)4*0的SimpleClass型空陣列。當(dāng)無輸入?yún)?shù)時(shí),創(chuàng)建的0*0的 空陣列。如果我們給屬性成員賦值,則MATLAB會(huì)調(diào)用SimpleClass的構(gòu) 造函數(shù)來擴(kuò)展出一個(gè)指定大小的陣列: E(4,6).value=7 E E= 4x6SimpleClass Properties: value 這里擴(kuò)展出了一個(gè) 4x6的對(duì)象陣列E。在這種情況下,MATLAB用 SimpleClass無參構(gòu)造函數(shù)創(chuàng)建的對(duì)象來填充除第4行第6列以外的所有元 素。然后,MATLAB把數(shù)值7賦值到對(duì)象E(4,6)的屬性成員Value上。
44、如果一個(gè)對(duì)象陣列中的元素是由handle型對(duì)象構(gòu)成的,則在初始化這些 對(duì)象時(shí)有些特殊之處。在用handle型對(duì)象擴(kuò)展一個(gè)對(duì)象陣列時(shí), MATLAB僅調(diào)用類的構(gòu)造函數(shù)一次,然后為陣列中的每個(gè)元素創(chuàng)建唯一 的句柄,這時(shí)MATLAB不調(diào)用構(gòu)造函數(shù),而從已創(chuàng)建的對(duì)象復(fù)制屬性成 員的值給其余的元素。 6.3 不同類型對(duì)象組成的陣列 6.4多對(duì)象陣列 第7章 多態(tài)性 7.1函數(shù)重載 7.2運(yùn)載符重載 7.3抽象類 7.1函數(shù)重載 7.2運(yùn)算符重載 7.3抽象類 第8章 事件與聽眾 8.1事件與聽眾的概念 8.2定義事件和聽眾 8.3屬性成員事件的收聽 8.4動(dòng)態(tài)屬性成員事件響應(yīng) 8.1事件和聽眾的概念 8
45、.1.1事件的概念及事件模型 8.1.2聽眾的概念 8.1.1事件的概念及事件模型 什么是事件呢? 事件的含義很廣泛。一般來說,從程序上可探測(cè)到的任何動(dòng)作,都 能夠產(chǎn)生相應(yīng)的事件,并可以將該事件的發(fā)生告知其他對(duì)象,來實(shí)現(xiàn)對(duì)象 之間的通信。這里的事件是用來標(biāo)識(shí)發(fā)生的某件事情的。 在MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì)中,事件表示發(fā)生在類實(shí)例(對(duì)象)中的 某些變化或行為,這些變化包括: (1)對(duì)類(對(duì)象)中的數(shù)據(jù)的修改; (2)方法的執(zhí)行; (3)查詢或設(shè)置一個(gè)屬性成員值; (4)析構(gòu)一個(gè)對(duì)象。 在MATLAB中,事件驅(qū)動(dòng)和事件響應(yīng)過程構(gòu)成了一個(gè)完整的事件模型。 組織一個(gè)事件模型的一般步驟如下。 (1)命
46、名事件:在一個(gè)handle型類中聲明一個(gè)標(biāo)識(shí)符來代表事件,這個(gè) 類就是產(chǎn)生事件的類,簡(jiǎn)稱事件類,相應(yīng)的實(shí)例稱為事件對(duì)象; (2)創(chuàng)建聽眾:在一個(gè)類中聲明事件后,就可以關(guān)聯(lián)一個(gè)聽眾,一般用 addlistener函數(shù)來定義聽眾; (3)定義一個(gè)方法來確定何時(shí)觸發(fā)這個(gè)事件,并通過notify函數(shù)對(duì)聽眾 進(jìn)行廣播來告之該事件的發(fā)生。 (4)定義回調(diào)函數(shù):當(dāng)聽眾接受到某事件發(fā)生的信息時(shí),就會(huì)去執(zhí)行 一個(gè)與之關(guān)聯(lián)的回調(diào)函數(shù),因此還要定義一個(gè)回調(diào)函數(shù)。 在定義聽眾時(shí),既可以將該聽眾與產(chǎn)生事件的對(duì)象生命周期進(jìn)行綁定, 也可以將其限制在聽眾對(duì)象的生存期和作用范圍內(nèi)。 8.1.2聽眾的概念 在MATLAB中,聽
47、眾是用來接收事件發(fā)生消息的對(duì)象,是event.listener 型類的對(duì)象。在MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì)中,定義一個(gè)聽眾可以采用 兩種方法:一種方法是使用handle類中的addlistener函數(shù);另一種方法 是直接調(diào)用event.listener類的構(gòu)造函數(shù)。 一旦聽眾創(chuàng)建后,它會(huì)一直等待事件發(fā)生的消息,一旦關(guān)聯(lián)的事件發(fā)生 了,聽眾就會(huì)執(zhí)行一個(gè)回調(diào)函數(shù)。這里event.listener類是handle的子類。 Property(屬性成員)屬性成員)Purpose(意義)(意義) Source事件對(duì)象元胞數(shù)組 Event事件名 Callback事件觸發(fā)時(shí)執(zhí)行的回調(diào)函數(shù)(這時(shí)需要將特性 En
48、able設(shè)置為true Enabled是否執(zhí)行回調(diào)函數(shù)的開關(guān)(默認(rèn)值為true) Recursive回調(diào)函數(shù)是否遞歸調(diào)用 8.2定義事件和聽眾 8.2.1如何命名一個(gè)事件 8.2.2事件觸發(fā)和廣播 8.2.3如何響應(yīng)事件(聽眾的定義) 8.2.4聽眾的幾種創(chuàng)建方式 8.2.5回調(diào)函數(shù)定義和調(diào)用 8.2.1如何命名一個(gè)事件 在MATLAB面向?qū)ο蟪绦蛟O(shè)計(jì)中,一個(gè)事件要用一個(gè)名稱來標(biāo)識(shí)。在一 個(gè)類的events事件塊中聲明一個(gè)標(biāo)識(shí)符,便可定義該類中的一個(gè)事件的 標(biāo)識(shí),我們把這樣的標(biāo)識(shí)也稱為事件,其格式如下: Classdef 類名handle events 事件名 end End 例如在下面Mcl
49、ock中定義了一個(gè)事件Alarm,我們可以通過改變成員Enable的值來觸發(fā)這 個(gè)事件。 Classdef Mclockhandle properties Enable=false;%是否啟動(dòng) end events Alarm %鬧鐘 end End 8.2.2事件觸發(fā)和廣播 當(dāng)定義了事件的類中某些成員滿足一定條件時(shí)(屬性成員值被更新等), 我們就說這個(gè)事件觸發(fā)了或發(fā)生了。對(duì)于用戶自定義的事件(即除 preSet、PostSet、PreGet和PostGet事件以外的事件),觸發(fā)事件的條件 是需要程序員根據(jù)需要來設(shè)置的,然后調(diào)用handle類中的方法notify來廣 播這個(gè)事件已發(fā)生的消息。所
50、有的聽眾對(duì)象將等待廣播的消息,如果事 件與聽眾注冊(cè)的事件相匹配,將作出相應(yīng)的動(dòng)作。這里notify函數(shù)的原 型如下: notify(Hobj,EventName) 或 notify(Hobj,EventName,data) 上述notify函數(shù)的第一個(gè)參數(shù)Hobj表示事件定義的對(duì)象句柄,這里也可 以是對(duì)象句柄的數(shù)組;第二個(gè)參數(shù)就是這個(gè)對(duì)象中的事件名稱;第三個(gè)參 數(shù)data是封裝了有關(guān)事件數(shù)據(jù)的event.EventData對(duì)象。 例如我們想通過ToggleButton類中State 的值的改變來觸發(fā)事件 ToggledState的發(fā)生,從而來通知所有的聽眾。這就需要在該類中添加一個(gè) 觸發(fā)事件的
51、方法來調(diào)用notify函數(shù),具體方法如下: classdef ToggleButton handle properties State = false End events ToggledState end methods . function OnStateChange(obj,newState) % Call this method to check for state change if newState = obj.State obj.State = newState; Notify(obj,ToggledState); % Broadcast notice of event end
52、end end end 8.2.3如何響應(yīng)事件(聽眾的定義) 定義聽眾的一般方法是用handle類中的成員函數(shù)addlistener完成的。 Addlistener函數(shù)的原型如下: Lh=addlistener(Hsource,EventName,callback) %(1) 或 lh=addlistener(Hsource,property,EventName,callback) %(2) 這里第一個(gè)函數(shù)用來為指定的事件創(chuàng)建一個(gè)聽眾,而第二個(gè)函數(shù)用來為 MATLAB中預(yù)定義的事件創(chuàng)建一個(gè)聽眾。參數(shù)Hsource是發(fā)生事件的句柄, 也可以是對(duì)象數(shù)組的句柄;參數(shù)EventName是Hsource所指對(duì)象中的事 件名稱;參數(shù)callback是函數(shù)句柄,即事件觸發(fā)時(shí)將執(zhí)行的回調(diào)函數(shù)。 返回值lh是event.listener型類的聽眾對(duì)象句柄,用來表示一個(gè)聽眾。 在To
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省-2024年-網(wǎng)格員-下半年筆試真題卷
- 固態(tài)電池制造技術(shù)及應(yīng)用前景考核試卷
- 體育場(chǎng)滑冰場(chǎng)冰面平整度控制考核試卷
- 道路水電設(shè)施施工合同
- 鐘表店租賃協(xié)議范本
- 教育基建招投標(biāo)實(shí)施辦法
- 鋁扣板音樂廳安裝協(xié)議
- 旅游景區(qū)物業(yè)人員聘用合同
- 山東省供熱設(shè)施日常維護(hù)標(biāo)準(zhǔn)
- 自行車店裝修設(shè)計(jì)施工合同
- 城市社區(qū)居家養(yǎng)老服務(wù)體系建設(shè)研究-以我國(guó)椒江區(qū)、田家庵區(qū)為例的開題報(bào)告
- 重點(diǎn)部位感染與預(yù)防控制
- 高??爝f包裝回收現(xiàn)狀分析及對(duì)策-以廣東省中山市三大高校為例
- 初創(chuàng)企業(yè)財(cái)務(wù)管理計(jì)劃書
- 新民事訴訟書范文追債通用21篇
- 100ml生理鹽水的配制講解
- 國(guó)家開放大學(xué)《Python語(yǔ)言基礎(chǔ)》實(shí)驗(yàn)3:超市數(shù)據(jù)統(tǒng)計(jì)分析參考答案
- 加油站消防安全基本常識(shí)
- 熱力集團(tuán)招聘試題
- 如何預(yù)防生銹醫(yī)療器械
- 教養(yǎng):曾仕強(qiáng)給中國(guó)父母的教子忠告
評(píng)論
0/150
提交評(píng)論