




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.2UML包图4.2.1 UML中的包图3.3 .UM叶的包和包图(PackageDiagram)一个企业应用系统中可能包含数百个类,如何有效地管理这些类就成了一个需要解决的问题。一种有效的管理方式是将类分组,功能相似或相关的类组织在一起,形成功能模块或者子系统。在各种面向对象的编程语言中都提供了对类进行分类管理的机制一一如Java语言的包(Package),而在UML中,对类或者其他的模型元素进行分组时则使用包图。(1)包图是保持系统整体结构简明、清晰的重要工具。在RationalRose中对包采用类似于文件夹的符号来表示(如图4.19所示的“留言功能包”、“用户权限管理包”),并且一个包
2、可嵌套在另一个包中形成子包。使用包图可以将相关模型元素分组,包图由包和包之间的关系构成,它是维护和控制系统总体结构(系统架构)的重要建模工具。(2)在RationalRose2003中的包图是通过类图来体现的。如果某个包为其他包的子包,则应该将子包放入父包中,如图4.19所示。LacictlViw口智宫功费包I羊q百宙KD总西费第冏KD修西成功,+-KD各告失败KD留言显示基类困6用尸曾再三Atioeia用尸枚隈管理也困。用户信息也I日Utia-Anocittionx司M.in讨各个包之间的关系包由司用PW音类图相用户留言模块的腴序由|*用户*宫模块的账序图rAiiocittion?用户权限管
3、理包用户信息包(from用户权限管理包)图4.19RationalRose2003中的包图是通过类图来体现的4.4 .包之间的关系及其UMLB示在设计包时,首先要决定系统中应该有哪些包,比如要尽量将系统中不稳定的模型元素和相对稳定的模型元素分配到不同包中,以提高软件系统的可维护性;或者将可选功能和核心功能实现分置于不同的包或子包之中。其次决定包之间的关系,包之间存在两种关系:依赖和泛化(继承或者构成)。下面分别介绍这两种关系,以及它们在RationalRose中的具体实现。(1)包之问的依赖关系。如果对类A的修改会导致类B的改变,则称B依赖于Ao如果两个包中存在具有依赖关系的两个类,则认为这两
4、个类所属的两个包之间则存在着依赖关系。图4.19所示的“留言功能包”和“用户权限管理包”之间存在依赖。包之间的依赖关系应尽量简单、稀疏,通常要求某一包中的模型元素只与同层及相邻下一层的模型元素之间存在依赖关系。(2)包之间的泛化关系。包之间的泛化关系其实更多的是指包之间的构成关系,也就是指在某个包中嵌套包含其他的包,即包中不仅可包含类等模型元素,还可以包含子包。图4.19所示的“用户权限管理包”中包含有“用户信息包”,称“用户信息包”为“用户权限管理包”中的子包。5.5 .包图的应用目的(1)能够体现系统的层次关系。使用包圈的目的是把模型元素组织成组或者集合并为其命名,以便作为一个整体进行处理
5、。对于一个大型的软件系统,使用包来组织大量模型元素以便于系统的理解和处理,使之有很好的层次关系。(2)通过包可以形成一个高内聚、低耦合的类的集合。(3)在概要设计阶段,设计人员可以用包图来建立软件系统的体系架构。 RationalRose2003对UML包图的支持.设计项目包图中的各个包(1)新建项目中的各个包。右击LogicalView的节点,在弹出的快捷菜单中选择【New,然后再选择【Package】菜单项,如图4.20所示。1Hit图4.20新建项目中的各个包(2)命名该包图。输入包的名称为“表示层包”,如图4.20所示的输入图示。(3)根据具体的应用要求设计其子包。当然也可以在该包的基
6、础上再产生出其子包,如图4.21所示。百F.e土“.Hi*rBLt萨*BBS累蚯LJUitC工Vis白LfrfictlVa*BfiblJ*卡E由j*tElg|otg值|LlaDiagrdfiii:口jCiV,l&Dtploynrat|liri.TPrup.系mLgaa&tiDm口邮口口田田圉rtckactMitrirchyLi(hdfcnociallonimAsxoci,tioni-口_mAllacIAtk.4AXl+j11Conp4ntnlVitwCFD1-DorJ-Jo.ust皿口的由窗口口门口目一,二也3a3+3田田&S:ZJ图4.22分别设计其他的各个子包.设计项目中的包圈(1)新建一
7、个包图。右击【LogicalView的节点,在弹出的快捷菜单中选择【New,然后再选择【classDiagram菜单项,如图4.23所示。蛆B监系携1UstCtseFitw移uaAs1f。噌itiionsTTi811曲TJ3J.Fcst-“Jflr表控数业Ftu,治自电口cl口口sr囹囹赳3tl*JDataMadeJetQukyArchitect图蹦系蜿二iZZiVieCtstView陛IH睢nMAei-ositildm-口“IE衽Vl*W图:|JJYL*1JfeYUC玉r*JQFf十口豪示层包*Ui控制度+口野褐诗河尾王口业务居3PackatMbermfchy目Lfrfcndi二Axsaci
8、4tk4M.国我物tmiM:图4.23设计项目中的包圈(2)命名该包图。输入包图的名称为“BBS系统前台包图”,如图4.23所示。(3)在该包图中分别添加各个不同的包。将需要的各个包从左侧的层次树拖动到右侧的包图中,如图424所示。BBS项目*C|VxtVitw!-口|LccicklVitwEBS前台注明Glob*lDtitjtvtjavaxOM_dbo0f图4.24在该包圈中分别添加各个不同的包(4)决定各个包之问的组成关系。4.25所示。3B腮项目+UstC*wViGlobaljtvuOHdbflor5SchttntiutilA.我示层包ViewHelp(from表示层包自定义的标签rum
9、表示层包)JSP页面由ci侬示层包,根据系统层次划分的要求,分别添加各个不同的包所对应的子包,如图图4.25分别添加各个不同的包所对应的子包(5)设计完成后的结果如图4.26所示。持久类包.数据饰问层)I异常处理包ffTUE数据巧问星)图4.26项目巾的各个包及对应的包图.设置项目包图内各个包之问的依赖关系包与包之间的依赖关系是由包中的类与另一个包中的类是否存在关联关系来决定的,不允许包与包之间直接发生相互依赖。因此,如果在系统层次划分的过程中发现有这样的依赖关系存在,那就说明项目系统中包的设计有问题,需要考虑将这两个包合并或重新分配包中的类。比如,如果有A包和B包,A包与B包产生泛化关系,那
10、就不允许出现B包依赖A包的情况。本项目示例中各个包之间的依赖关系如图4.27所示,不仅要确定包与包之间的依赖关系,还应确定某个包的各个组成包之间的依赖关系。图4.27BBS论坛项目的最终包图 网上商城项目的架构包图由于在3.3.4节有关刚上商城项目的系统架构设计示例中,已经具体给出了网上商城项目的架构包图。在此不再重复列出,请参见图3.11所示的架构包图。 BBS论坛项目的架构包图BBS论坛项目系统的整体架构设计采用的是DWR+Struts+Spring+Hibernate等框架架构组成,同时整个系统被分为4层一一表示层、控制层、业务处理层和持久层。其中在表示层和控制层中应用Struts框架技
11、术。而在业务处理层中则应用了Spring框架技术,在系统的持久层中采用Hibernate框架来达到O/RMapping的效果。具体的架构包图如图4.27所示。4.3UML类图UML中的类图UMLfe图(1)类图。类是面向对象模型最基本的模型元素。类图表达了实现某用例中一组对象类之间的静态结构,以及它们之间的联系和交互关系:并且类图还用来模拟开发中的实际代码,而且有许多LJML,建模工具(如RationalRose等)可以直接根据IJMI_。类图生成目标语言的类程序代码,或者实施反向工程,读取类的源代码文件,创建出新的类图。(2)类图的作用。类图的作用主要体现在描述系统的静态结构和关系上,因为它
12、不仅定义系统需要的各个类,还能够表示类之间的关系(关联、依赖、聚合和泛化等),还包括类的内部结构(类的属性和操作)的定义和描述。(3)类与类之问的关系。类与类之间的关系分为两种不同的形式:结构性关系(静态组成关系)和行为性关系(动态交互关系)。结构性关系主要指父类与子类间的泛化/特化(类之间的继承与派生),类与类之间的关联和依赖、聚合和组合等关系。行为性关系指类之间可以通过消息联系,通过系统预定义或用户自定义的语义联系。2.类的UMLB示(1)在UML中,类的图形表示为实线矩形框。类是对象的集合,这些对象有共同的结构特征、行为特征、联系和语义;但要注意的是:在类图中不一定要列出全部的成员(属性
13、和方法)内容。如在建立分析模型或设计模型时,可以只列出类名,在模型中着重表达类之间的联系;而在建立实现模型时,则在类图中给出属性和操作等详细的成员内容。在RationalRose2003中对类及成员定义的支持如图4.28所示。UserlnfoVOuserNanie:SiringskinCmor:ColorgetlJserName():StnngsetUserName(newUserName:Slring):vo!dgutSkinColor。:Color图4.28类的UML图示及类中成员的图示(2)类的属性成员及其UML图示。属性体现类的对象所在的状态性质,在类图中用文字串说明。其表示方式如下:
14、可视性属性名(多重性):类型=初始值可视性用可视性标记表示:公共(e)、保护(国)、私有()。类型(即数据类型)依赖于选择的工具语言,例如下面为在RationalRose2003中表示数据类型为String的userName成员属性。userNanie:String(3)类中的静态(static)成员属性及其UML图示。应该注意的是,类的静态成员属性也就是static成员属性在类图中的表示为带下划线的形式。(4)类中的方法成员及其UML图示。操作(方法)是类的行为特征或动态特征,用于对服务或实体相关的操作建模。一个类可以有操作并且允许有多个操作,也可以没有操作。没有操作的类经常用于表达数据(如
15、业务实体组件类或者持久组件类)。操作在类图中位于最底部,同时用文字串说明。其表示如下:可视性操作名(参数列表):返回列表性质3.类之间的关系在面向对象领域中,各个类之问一般存在“关联、继承、聚合和组合”等形式的关系,据此,分析设计人员再对项目中的各个实体进一步地分析,找出它们之间的各种关系。有关面向对象技术中类之间关系的详细介绍请读者参考本书第l1章“对象/关系映射设计”中的有关内容。(1)关联(Association)关系。关联是一种结构化的关系,指一种对象和另一种对象有联系。它是对具有共同结构特性、行为特性、关系和语义链接的描述。在UML类图中,关联用一条实线将类连接在一起。如果是单向关联
16、,则在关联端加箭头表示方向。在RationalRose工具中,如果是双向关联,则不用双向箭头表示。具体参见图4.29中的Computer与UserInfo之间的关联关系的图示。另外还应该注意关联的重数,由于关联分为两元关系和多元关系,两元关系是指一对一的关系,多元关系是一对多或多对一的关系。并且在关联端需要标出关联中的数量关系一一重数(多重性)。关联端的多重性规定了该类中有多少个对象参与该关联,关联分为“一对一”、一对多”、“多对一”和“多对多”关联。常用的关联关系如下:“0.1:表示0到1个对象。1:表不1个对象。0.*或者*:表示0到多个对象。“1.10”:表示1到10个对象。客户和订单之
17、间的关联关系如果写成Java程序,则意味着在UserInfo类中需要定义一个Order类型的集合成员变量。同时Order类应该定义UserInfo类的对象。例4-1是UserInfo类和Order类之间关联关系的代码示例。例4-1UserInfo类和Order类的定义代码示例。PublicClassUserInfoprivateArrayListallOrders;客户和订单之间为一对多”关联/UserInfo类与ContactMethod类之间为聚合关系privateContactMethodoneContactMethod;/,其他的代码publicbooleanaddGoodsToCar
18、t(GoodsoneGoods)/UserInfo类与Goods之间的关系为依赖关系将商品添加到购物车中的代码returntrue;publicclassOrderprivateUserInfosomeOneUser;/订单和客户之间为一对一”关联publicvoidsetSomeOneUser(UserInfooneUserInfo)someOneUser=oneUserInfo;(2)依赖(Dependency)关系。依赖体现类之问的“使用和调用”关系,指特定事物的改变有可能影响使用该事物的事物,反之不成立。通常情况下,依赖关系体现在目标类的对象出现在局部变量或者方法的参数中以及静态方法的
19、调用。依赖与关联不同,依赖关系总是单向的。例如,某一个类使用了另一个类的对象作为操作方法中的参数,则这两个类之问就具有依赖关系;如果一个类存取另一个类中的全局对象以及一个类调用另一个类中类作用域的操作方法,则这两个类之间也同样具有依赖关系。依赖在UML图示中用一个从客户指向提供者的虚箭头表示,具体请见图4.29中的Computer与UserInfo之间的关联关系的图示。例4-1中的UserInfo类与Goods之间的关系为依赖关系,用户在购买某个商品时,addGoodsToCart的行为是依赖于Goods类的。(3)聚合(Aggregation)关系。聚合表示事物的部分与整体的一种松散(比较弱
20、)的对象间关系,即A对象可以包含B对象,但B对象不一定是A对象的组成部分。比如计算机和它的外围设备就是一例,再比如汽车和停车场之间的关系,停车场中有汽车,但汽车不是停车场的一部分,汽车和停车场之间没有整体和一般的关系。聚合关系在UM.中的表示法为在关联线端加一个小空心菱形,菱形连接处代表整体事物类,称为聚合类,另一端连接处代表部分事物类。给例4-1中的UserInfo类添加一个联系方式的对象oneContactMethod,此时UserInfo类与ContaetMethod类之间应该为聚合。为什么不将它们看成关联呢?因为UserInfo应该拥有或者包含一个联系方式,将“用户”与“联系方式”不是
21、平等地看待,而是作为“整体”和局部”来看待。同时,UserInfo与ContaetMethod之间不存在物理上的包含和组成的关系。如果将“用户”与“联系方式”平等(同级别)地看待,它们两者之间就应该是关联关系。参见例4-1中的代码示例。在RationalRose2003中则通过【ByReference的方式进行引用,如图4.29所示。DiilavrlntoHurdDiskByRet.隹fK.tcminulcr图4.29在RationalRose2003中对聚合关系的支持(4)组合(Composition)关系。组合表示事物的部分与整体的一种紧密(比较强)的对象问关系,此时,构成整体类的部分类完
22、全属于整体类,并且体现树状层次结构的关系。在一个合成对象里,部分与整体的生命周期都是相同的。一个合成的新对象完全拥有对其组成部分的支配权。包括它们的创建和删除(与代表整体的对象同时存在、消失)。如果没有了整体类,则部分类也没有存在的价值,部分类的存在是因为有整体类的存在。组合的UMIL表示法为在关联线端加一个小实心菱形,菱形连接处代表整体事物类,称为组合类,另一连接处代表部分事物类。可以将组合理解成强类型的聚合。其实现的代码示例,如例4-2所示。在RationalRose2003中则通过【ByValue菜单项进行引用,如图4.30所示。图4.30在RationalRose2003中对组合关系的
23、支持例4-2组合关系的代码示例。publicclassWindowprivateTitleBaroneTiltle;/在窗口中包含一个标题条对象在窗口类中包含一个标题条对象。由于在物理构成关系上,窗口是由标题条等对象构成的。因此,窗口类和标题条类之间有很强的整体和部分的组成关系。(5)泛化(Generalization)关系。泛化与特化是现实世界中一般性实体与特殊性实体之间的关系,一般性实体是特殊性实体的泛化,特殊性实体是一般性实体的特化。类与其子类就具有这样的关系。UML中的泛化体现了分类与继承原则,一个子类继承超类的全部属性、方法,子类本身还可以有自己的子类,从而构成复杂的一般与特殊的结构
24、。泛化的UML表示形式关系图示为一个带空心三角形的直线,空心三角形紧挨着父类,如图4.31所示的PCComputer与Computer之间的泛化关系图示。但要注意抽象类的表示形式,抽象类或抽象操作的名称用斜体字表示。关键字abstract可以放置在名称下面或后面的特性表中。4.类之间的关系实例在例4-3中,给出了一个表示对象之间各种关系的示例。其中的computer与CPU、HardDisk之间为组合关系,因为CPU和HardDisk是Computer必备的组成部分;Computer与Printer之间为聚合关系,因为Printer并不是Computer的必备组成部件,而是可选的组成部件。Co
25、mputer与UserInfo(计算机的主人)之间为一对一”的关联关系,Computer与Data之间为依赖关系,计算机在进行计算时依赖十需要进行计算处理的目标数据;PCComputer与Computer之间为泛化关系,并且其中的Computer类为抽象类。例4-3类之间各种关系的示例。abstractclassComputerprivateCPUintelCPU=nuli2-Computer与CPU,HaMDisk之间为组合关系publicResultcalculateiDat*oneData(/对基类中的calculate方法进行重有、ST匚二+上空Computer与Data之可为依赖关系
26、)classCPUclassHardbisk()classPrinter(classUserInfo(UML类图如图4.31所示,注意在RationalRose例4-3中的各个类之间的关系对应的工具中聚合和组合表示形式的不同点。图4.31例4-3中类之间的各种关系示例对应的UML类图4.3.2RationalRose2003对UML类图的支持.添加某项目中与数据访问层组件相关的各个类(1)新建项目中的一个类。New,然右击“LogicalView”的节点下某个包的节点,在弹出的快捷菜单中选择【后再选择【class菜单项。如图4.32所示,输入类名称以命名该类。UtVCfiAVInhsrfftc
27、fl卜国用ilXgtf三,口韭器塞RemevePmWjs1擘目P.匚k.yHiflm4Qt目RB3筝晚二一工,unfad,yc*y图4.32新建项目中的一个类并命名该类(2)分别在各个包中输入各个类,最后结果如图4.33所示。.添加本项目中与数据访问层组件相关的各个接口(1)在数据访问层包中新建一个接口。右击“数据访问层”的包名称节点,在弹出的快捷菜单中选择【New,然后再选择Interface菜单项,如图4.33所示。LJ救塞访问患日UitranfEfttityBvtf(三AiiciiEoni琴雷,1E电M.r.t.eDHE.All$CI:LCJUhCut柄一-OfflKSKTffl值jmI
28、i*ljwvuI凰中依.if)口表示层,.*i白控蒯脖闸门船雷访R图口业务用.Fack(!FBBS累蜕图4.34命名该接口3.设计数据访问组件对应的类图图4.35新建一个类图并命名该类图(2)生成一个空的类图。RationalRose最后将生成如图4.36所示的一个空的类图。(1)新建一个类图。右击“LogicalView”的节点下某个包的节点,在弹出的快捷菜单中选择【再选择【classDiagram菜单项,如图4.35所示,输入类图的名称,比如为“问组件的类图”。New,然后BBS数据访三t-LJ豹科I作包bp.r.t.rDgfnAuf*4睢9OptrSohrmlDkH.。r口寡处理包日Hi
29、AJOExetp11oh三Ai&ocitiotii.Itgd-Jir*勺*IJjtvtx囹Qr*J11aSInfoEnti照用n.ieHnfoEnbr/Byan。必心Nt,图4.39在RationalRose中还可以对JDK中的标准接日进行实现定义(3)选择JDK中的某个接口。比如选择java.io.Serializable接口,如图4.40所示。qliBSInlidntitBean0二业2小L一:-X)pcraierlHln(erfacc4TruinIjQtUscrltifoEntilyEic皿OperatefDBBuaqi-iH匕mConnectDBBcan|HibemlMeDAUEKce
30、ption|图4.40选择JDK中的java.io.Serializable接口(4)确定本项目中的某个类与其对应接口的实现关系。本项目中有UserlnfoEntityBean和BBSInfoEntityBean两个实体类,这两个类需要满足序列化的要求)因此它们需要实java.io.Serializable接口)如图4.41所示。王口Vt*iv-OLaperalerDBInitrtaceUserlnfDl/ntitvBeaR所示。HibemulcDA()FxceptiorjJliidirechoTialAesocwIich|JHHuun户RIZBI图4.42在RationalRose中提供了对
31、类之间的聚合关系的支持(2)右击聚合关系中的总体端。右击聚合关系中的总体端并在弹出的快捷菜单中选择【Aggregate!菜单项,如图4.43所示。Serializable(fromioBBSInfoEntiyBean(peratcrDBInterface/Containnftentof0peraterDB8eanPublicProtectedPrtvateI珅1gmMtabonNa对的blegtatk:图4.43右击聚合关系中的总体端(3)选择【Aggregate的关系类型在弹出的快捷菜单中选择【Aggregate菜单项后,将生成如图4.44所示的状态。图4.44设置类图中各个类之间的聚合关系
32、.设置类图中各个类之间关联关系的重数(1)如果关系为关联关系,则应该进一步设置关联的重数。Multiplicity菜单项,然后根据具右击靠近关联的目标方,在弹出的快捷菜单中选择【体关联的重数选择对应的重数的项目,如图4.45所示。RrotwtfdlPrivateImpfefiwrtatiari图4.45设置类图中各个类之间关联关系的重数(2)最后将生成关联关系的重数。RationalRose工具将自动地在关联线上显示出关联关系重数的状态(0.*),如图4.46所图4.46设置类图中各个类之问的关联关系(3)据此设置本项目中其他类之间的关联关系和重数。最后结果如图4.47所示。图4.47设置项目
33、类图中其他各类之间的关联关系.设置类图中各个类之间的依赖关系(1)在RationalRose中提供了对类之间依赖关系的支持。4.48所示。nstdhtkates区分类图工具条中的各个关系按钮,并找到体现依赖关系的按钮,如图图4.48在RationalRose中提供了对类之间依赖关系的支持(2)设置项目中的类之间的依赖关系。根据应用的状态进行定义和设置,如UserInfoManageBean类依赖于UserInfoEntityBean类,而BBSInfoManageBean类依赖于BBSInfoEntityBean类,如图4.49所示。图4.49定义和设置项日中类之间的依赖关系4.3.3网上商城
34、项目的类图.表示层的类图项目表示层主要包括各个JSP页面文件、各种标签库标签(Struts标签库标签和自定义设计的标签库标签)以及具有视图助手(ViewHelp)功能的JavaBean组件类。具体的各个类及类之间的关系图示如图4.50所示。showUserlnib国:an丁吧HcanDatcUlilshowOrderinfoshowBuyCartEh口wGctodsHnfoFdtcrCharLogicTagBc&nupdateUserlnfcuserRegisterHtmlagKeanFormlagBeenuscrLogin(fromJ5P表示粗件口)图4.50网上商城项目表示层的类图.控制层
35、的类图由于本项目的控制层采用Struts框架来实现,因此,项目控制层主要包括前端控制器组Action类。由于本项目需要对件ActionServlet和各种完成具体业务调度的后端业务控制器标准的ActionServlet类进行继承,以扩展ActionServlet的功能,因此设计了自定义的前端控制器组件NetShopActionServlet类;又由于各个Action类有共同的功能实现要求,因此为各个不同的Action类提供了一个基类BaseAction,以完成一些共性的任务。具体各个类及类之间的关系图示如图4.5l所示。图4.51网上商城项目控制层的类图.业务层的类图网上商城项目的具体业务功能
36、主要有4类:与用户有关的信息管理功能(UserManageBean承担)、与商口有关的信息管理功能(GoodsManageBean承担)、与订单Spring有关的信息管理功能(OrderManageBean承担)、与购物车有关的信息管理功能(BuyCartManageBean承担);每个具体的业务功能类都实现各自的接口,这样将便于框架中的IoC进行对象管理。因此,将实现这些共另外,考虑到各个业务功能类都会存在一些共同的功能实现要求。同功能的代码提取出来并放到对应的基类中。这样就为各个业务类设计了一个业务基类BaseModelBean类。具体的各个类及类之间的关系图示如图4.52所示。图4.52
37、网上商城项目业务层的类图.数据访问层的类图DAO类。与数据本项目的持久层主要包括以下类型的类:持久实体类、数据访问组件库连接功能则是由Hibernate框架来完成的,因此,没有必要再自行编程数据库连接的组件类。(1)数据访问层的各个持久实体类图。图4.53所示为本项目的持久层中各种类型的持久实体类之间关系的图示,主要有代表用户信息的实体类、商品信息的实体类、订单信息的实体类。图4.53网上商城项目数据访问层的各个持久实体类图(2)数据访问层的各个数据访问组件(DAO)类图。图4.54所示为本项目持久层中的数据访问组件DAO类,由于本项目中存在代表用户DAO信息的实体类、商品信息的实体类、订单信息的实体类。因此,相应地也就有对应的组件类。其中的GoodsInfoDAOBean类实现的是商品信息的数据访问操作,UserInf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年舞蹈教育专业统考试题及答案
- 2025年市场调研方法与技巧考试题及答案
- 2025年数字货币与金融科技专业能力测评考试卷及答案
- 2025年全球变暖与适应研究生入学考试卷及答案
- 2025年计算机科学与技术考试真题及答案
- 小学描写诚信的作文12篇
- 乡村夜景400字六年级作文(9篇)
- 五年级数学空间几何与测量教案
- 个人年度收入及税收缴纳情况证明书(6篇)
- 莫高窟文化的魅力传承:初三语文专项课题教学教案
- 内科学 消化系统疾病 习题集 带答案
- 重要工种人员登记表
- 《洞见的力量:成就不凡的十二大引擎》随笔
- 安踏组织架构分析文档
- 2024年山东省青岛市中考英语试卷(含答案解析)
- 护理病历质控
- 质量、环境、职业健康安全管理体系内审员培训
- 3D打印:从原理到创新应用智慧树知到期末考试答案章节答案2024年浙江大学
- 2023-2024学年河南省郑州市金水区八年级(下)期末数学试卷(含详解)
- 寄生虫病防治技能竞赛试题及答案
- 国开公共政策概论形考任务1-4
评论
0/150
提交评论