构件图与部署图_第1页
构件图与部署图_第2页
构件图与部署图_第3页
构件图与部署图_第4页
构件图与部署图_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、构件图与部署图1构件图o 构件是系统的可替代的物理部分,是定义了良好接口的物理实现单元,它是系统中可以替代的部分,每个构件体现了系统设计中的特定类的实现,良好定义的构件不直接依赖于其它构件,而是依赖于其它构件所支持的接口,在这种情况下,系统中的一个构件可以被支持相同的接口的其它构件所替代。 2构件图o 接口是被软件或硬件所支持的一个操作集合,每个接口有一个名称,通过使用命名的接口,可以避免在系统的各个构件之间直接发生依赖关系,有利于新构件的替换。3构件的概念o 从构件组成上看,每个构件定义了2组接口(一组供给接口,一组需求接口),构件为供给接口提供了提供了功能实现部分。4o 对于一个构件而言,

2、它包含5个要素:n 1)接口声明:每个构件包含两组接口,一组是供给接口,表明它能提供的服务,一组是需求接口,表明它需要的服务。n 2)接口实现:构件是一个物理部件,它实现了供给接口声明的服务。n 3)构件标准:在创建构件时,每一个构件必须遵从某种构件标准。n 4)封装方法:也就是构件遵从的封装标准。n 5)部署方法:一个构件可以有多种部署方法。5构件与类o 从构件的定义上看,构件和类十分相似:n 二者都有名称,都可以实现一组接口,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。6构件与类o 构件与类的区别:n (1)类表示是对实体的抽象,而构件是对存在于计算机中的物

3、理部件的抽象。也就是说,构件是可以部署的,而类不能部署。n (2)构件属于软件模块,而非逻辑模块,与类相比,它们处于不同的抽象级别。甚至可以说,构件就是由一组类通过协作完成的。n (3)类可以直接拥有操作和属性,而构件仅拥有可以通过其接口访问的操作。7构件分类o 按照构件在系统中的角色,把构件分为3种类型:n1)配置构件:组成系统的基础构件,是执行其它构件的基础平台。如:操作系统、java虚拟机(JVM) 、数据库管理系统都属于配置构件。n2)工作产品构件:这类构件主要是开发过程的中间产物,如:创建构件时的源代码文件及数据文件都属于工作产品构件。这些构件并不是直接地参与系统运行。n3)执行构件

4、:在运行时创建的构件。例如由DLL实例化形成的COM+对象、Servlets、XML文档都属于执行构件。8构件图的概念o 构件图提供当前模型的物理视图,对系统的静态实现视图建模。构件图显示一个系统物理设计时,构件所映射的类和对象的配置。o 一个构件图可以表示一个系统全部或者部分的构件体系。从组织内容看,构件图显示软件构件的组织以及构件之间的依赖关系,包括源代码构件、二进制代码构件以及可执行构件。o 构件图是对OO系统物理方面建模的2个图之一。9构件图的概念o 构件图主要用于描述各种软件构件之间的依赖关系,例如,可执行文件和源文件之间的依赖关系,所设计的系统中的构件的表示法及这些构件之间的关系构

5、成了构件图。o 与所有UML的其它图一样,构件图可以包括注释、约束、包。10构件图的概念11构件图的概念12构件图是用来表示系统中构件与构件之间,以及定义的类或接口与构件之间的关系的图。在构件图中,构件和构件之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。13构件图的作用o 构件图的基本目的是:使系统人员和开发人员能够从整体上了解系统的所有物理部件,同时,也使我们知道如何对构件进行打包,以便交付给最终客户,最后,构件图显示了被开发系统所包含的构件之间的依赖关系。o 构件图从软件架构的角度来描述一个系统的主要功能,如系统分成几个子系统,每个子系统包括哪些类、包和构

6、件,它们之间的关系以及它们分配到哪些节点上等。14构件图的作用o 使用构件图可以清楚地看出系统的结构和功能。方便项目组的成员制定工作目标和了解工作情况,同时,最重要的一点是有利于软件的复用。o 从宏观的角度上,构件图把软件看作多个独立构件组装而成的集合,每个构件可以被实现相同接口的其它构件替换。15构件的表示o 构件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。o 构件可以是源代码构件、二进制构件或一个可执行的构件。o 在UML中,构件用一个左侧带有突出两个小矩形的矩形来表示。 带版型的构件带版型的构件16构件的名称o 每个构件都必须有一个不同于其他构件的名称。构件的名称是一个字符

7、串,位于构件图标的内部o 构件名称通常是从现实的词汇表中抽取出来的短名词或名词短语,并依据目标操作系统添加相应的扩展名,例如java和dll。17o在构件图中,我们将系统中可重用的模块封装成为具有可替代性的物理单元,我们称之称为构件,它是独立的,在一个系统或子系统中的封装单位,提供一个或多个接口,是系统高层的可重用的部件。 o构件作为系统定义良好接口的物理实现单元,它能够不直接依赖于其他构件而仅仅依赖于构件所支持的接口。通过使用被软件或硬件所支持的一个操作集接口,构件可以避免在系统中与其它构件之间直接发生依赖关系。 18构件图和部署图的基本概念有一些构件的图标表示形式和标准构件图形表示形式相同

8、,它们包括ActiveX、Applet、Application、DLL、EXE以及自定义构造型的构件,它们的表示形式是在构件上添加相关的构造型,是一个构造型为Applet的构件。19构件图和部署图的基本概念o在Rational Rose 2003中,数据库也被认为是一种构件。o虚包是一种只包含对其它包所具有的元素进行的引用的构件。它被用来提供一个包的某些内容的公共视图。虚包不包含任何它自己的模型元素。 20构件图和部署图的基本概念o系统是指组织起来以完成一定目的的连接单元的集合,在系统中,肯定有一个文件用来指定系统的入口,也就是系统程序的根文件,这个文件被成为主程序。o子程序规范和子程序体是用

9、来显示子程序的规范和实现体。子程序是一个单独处理的元素的包,我们通常用它代指一组子程序集。21构件的表示o 没有标识接口的构件表示法n 没有标识接口的构件的图形表示方法分三种:o 表示为标有构造型component的矩形;o 在矩形的右上角放置一个构件图标(一个小矩形,并在左侧加上两个突出的更小的矩形);o 直接使用构件图标。没有标识接口的构件的图形的三种表示法和类的名称相近,构件的名称也是一个正文字符串,它可以是简单名,也可以是带路径的全名。22构件的表示o 标识接口的构件表示法n对于一个构件而言,它有两类接口:提供(provided)接口和所需(required)的接口。标识接口的构件表示

10、方法也有3种。标识接口的构件3种表示方法23构件的表示o (1)使用接口分栏表示:也就是将所需的接口和提供的接口直接显示在矩形的分栏中,将构造型provided和required放在每个接口名之前。o (2)使用图标表示法:将接口的图标连接到矩形的边框上,共给接口表示为通过一条实线链接到矩形上的圆圈;而需求接口则表示为一条实线链接到矩形上的上半圆。o (3)显示表示法:接口也可以用完整的显示形式表示,构件和其提供的接口之间是实现关系,而构件和其所需的接口之间是使用use关系。24Rose中的扩展构件子程序说明是一组子程序集合名子程序说明是一组子程序集合名, 其其中不包括类定义中不包括类定义.子

11、程序体表示子程序的实现子程序体表示子程序的实现.主程序是包含程序根的文件主程序是包含程序根的文件.25构件的类型26 构件间的关系依赖关系一个构件如果使用另外一个构件的操作,则也可以在该构件和另外一个构件的接口间建立依赖关系;27 构件间的关系依赖关系对象和源码间28 构件间的关系依赖关系两个构件中的类如果存在泛化关系,则构件间可以加依赖关系;29 构件间的关系依赖关系两个构件中的类如果存在使用关系,则构件间可以加依赖关系;30 构件间的关系实现关系31 构件图Component diagram提供当前模型的物理视图;显示包括构件源码、二进制文件和可执行文件在内的软件构件之间的组织和依赖关系;

12、也可以通过显示组件的接口来展示组件外部可见的行为。32 构件图基本构件图33 构件图嵌套构件图34 绘制构件图确定子系统对外的接口将整个“在线酒店预订子系统”作为一个构件,考虑其对外接口。显然它首先需要提供用户界面;其次还需要与加盟的酒店系统连接,完成预订工作35 绘制构件图确定子构件和接口显然要有一个构件来实现用户界面,一个构件来完成与酒店系统的连接和预订,另外还应该有一个负责将用户的需求与酒店的供给进行匹配的“调度程序”36 绘制构件图对可执行程序的结构建模首先识别你想建模的构件集合考虑集合中各构件的不同类型对这个集合中的每个构件,分析它们之的关系37绘制构件图对源代码建模识别相关源代码文

13、件的集合,建模为构件;对于较大的系统,利用包来进行分组;通过约束来表示源代码的版本号、作者和最后修改日期等信息;用依赖关系来表示这些文件间编译的依赖关系38实例实例1:ATM系统的构件图:一个执行文件构件和两个包文件系统的构件图:一个执行文件构件和两个包文件构件。构件。 39实例2选课系统的构件图选课系统的构件图40o实例3图中包括:顾客需要信息亭接口提供顾客需要信息亭接口提供服务服务售票员需要职员接口提供售票员需要职员接口提供服务服务信用卡付款需要信用卡代信用卡付款需要信用卡代理提供服务理提供服务职员接口需要预订销售、职员接口需要预订销售、个人销售和团体销售提供个人销售和团体销售提供服务服务

14、管理接口需要数据库状态管理接口需要数据库状态提供服务提供服务售票处需要付款和购买提售票处需要付款和购买提供服务供服务等等等等图中包括:信用卡付款提供信用卡付款提供付款服务付款服务票数据库提供购票数据库提供购买和状态查询服买和状态查询服务务售票处提供预订售票处提供预订购买、个人购买购买、个人购买和团体购买服务和团体购买服务购买个人票可以通过公用信息亭订购也可直接购买个人票可以通过公用信息亭订购也可直接向售票员购买,但购买团体票只能通过售票员。向售票员购买,但购买团体票只能通过售票员。买票的人可以根据任意选择预订销售或个人销买票的人可以根据任意选择预订销售或个人销售或团体销售中的一种方式,售票处为

15、了方便售或团体销售中的一种方式,售票处为了方便销售,需要信用卡付款服务的支持,同时也必销售,需要信用卡付款服务的支持,同时也必然需要票数据库处在有票可卖的状况中。然需要票数据库处在有票可卖的状况中。情景描述情景描述41接口o 接口用于描述构件所提供的服务的一组操作集合,指定了构件的外部可见操作。构件和接口之间的关系叫做实现关系。可以通过接口访问一个构件。o 接口和构件之间的关系分为两种:n 实现关系(Realization)n 依赖关系(Dependency)o 在图中,接口和构件之间用实线连接表示实现关系;而接口和构件之间用虚线箭头连接则表示依赖关系。42接口o 在构件图中,常见的两种依赖关

16、系:n 编译依赖n 调用依赖o 使用依赖关系的三种情况:n 客户类要访问一个在提供者类(接口)中定义的值(常量或变量); n 客户类的操作激活提供者类(接口)的操作; n 客户类的操作具有返回到提供者类(接口)的实例或参量的特征标记。 43接口构件与接口之间的关系构件与接口之间的关系: : 实现关系实现关系和和依赖关系依赖关系导出接口导出接口导入接口导入接口为了便于构件之间替换为了便于构件之间替换,建议使用以上依赖关系建议使用以上依赖关系44构件图分类o 构件图可以分为两种:简单构件图和嵌套构件图。o 1 简单构件图n 我们可以把相互协作的类,组织成一个构件。利用构件图可以让软件开发者知道系统

17、是由哪些可执行的构件组成的,这样,以构件为单位来看待系统时,让开发者清楚的看到软件系统的体系结构。45构件图分类o (1)用户界面层:采用JSP页面实现用户界面。我们通过构造型Java Server page来表示构件。这一部分的构件,主要由边界类组成。o (2)业务逻辑层:在实现上主要采用了JavaBean技术。使用构造型JavaBean来表示这一层的构件。这些构件主要由实体类组合而成。o (3)数据访问层:该层将所有的数据访问操作封装在一个JavaBean中(如果是大型应用,可能封装成为EJB),标明了它是JDBC的一个实现。46构件图分类o 在这个例子中,对可执行程序的体系结构进行了建模

18、,以帮助开发者了解可执行程序模块之间的关联关系,从而从宏观上认识系统。47构件图分类o 2 嵌套的构件图n 使用嵌套的构件图来表示构件的内部结构。销售管理服务器中包含两个构件:销售管理服务器中包含两个构件:一个是处理收银机发送来的销售一个是处理收银机发送来的销售消息,完成交易处理;另一个是消息,完成交易处理;另一个是财务接口,负责处理与财务系统财务接口,负责处理与财务系统的连接,这时交易处理程序就委的连接,这时交易处理程序就委托财务接口来完成与财务系统的托财务接口来完成与财务系统的数据传送。数据传送。在图中,销售管理服务器所提供在图中,销售管理服务器所提供的接口和所需的接口与构件连接的接口和所

19、需的接口与构件连接的点上,都有一个小矩形,它表的点上,都有一个小矩形,它表示的是示的是“端口端口”。这些端口将通。这些端口将通过带箭头的实线与具体的子构件过带箭头的实线与具体的子构件连接,表示该接口的提供者或需连接,表示该接口的提供者或需求者。求者。48构件图与类图、包图的关系o 基于类与构件之间的区别,也可以看到,类图侧重于系统的逻辑设计,而构件图更侧重于系统的物理设计及实现。o 包的设计主要是为了创建方便他人重用的包,因为人们通常不重用一个类,一般总是重用一组类。绝大多数系统都是由许多个包建立的,这些包相互依赖,建立了一个庞大的依赖关系图,根据发生变化的敏感度将类分组,基于同一个原因发生变

20、化的类放在同一个包中。 49构件图应用o 构件图描述了软件的组成和具体结构,表示了系统的静态部分。它能够帮助开发人员从总体上认识系统。常采用构件图来描述可执行程序的结构、源代码、物理数据库组成和结构。o 1 对可执行程序建模o 通过构件图,可以清晰地表示出各个可执行文件、链接库、数据库、帮助文件和资源文件等其它可运行的物理构件之间的关系。在对可执行程序的结构进行建模时,通常应遵从以下原则:n(1)首先标识要建模的构件。n(2)理解和标识每个构件的类型、接口和作用。n(3)标识构件间的关系。50构件图应用对可执行文件之间的关系建模51构件图应用o 例如,有一个语音呼叫中心程序callcenter

21、.exe,使用了三汇的语音卡的驱动程序shp_a3.dll,以及相应的TTS(文本转语音)引擎sh_ttsu.dll,现在我们用构件图来描述这三个构件的关系。52构件图应用o 2 对源代码进行建模o 通过构件图可以清晰地表示出软件的所有源文件之间的关系,开发者能更好地理解各个源代码文件之间的依赖关系。在对源程序进行建模时,通常应遵从以下原则:n(1)表示出要重点描述的每个源代码文件,并把每个源代码文件标识为构件。n(2)如果系统较大,我们就利用包来对构件进行分组。n(3)用编译依赖关系来描述构件间的关系。n(4)在构件图中,采用约束来表示源代码的版本号、作者和最后的修改日期等信息。53构件图应

22、用o 例如:singal.h是一个头文件,被interp.cpp和signal.cpp引用,其中interp.cpp还引用了另一个头文件irq.h,而device.cpp又对interp.cpp有编译依赖关系。那么用构件图表示它们间的关系。54使用Rose创建构件图和部署图o 创建一个新的构件图,可以通过以下方式进行。 ()右键单击浏览器中的Component View(构件视图)或者位于构件视图下的包。 ()在弹出的菜单中,选中“New”(新建)下的“Component Diagram”(构件图)选项。 ()输入新的构件图名称。 ()双击打开浏览器中的构件图。 55使用Rose创建构件图和部

23、署图o通过构件图的图形编辑工具栏添加对象的步骤如下: ()在构件图的图形编辑工具栏中,选择按钮,此时光标变为“”号。 ()在构件图图形编辑区内选择任意一个位置然后使用鼠标左键单击,系统在该位置创建一个新的构件。 ()在构件的名称栏中,输入构件的名称。 56使用Rose创建构件图和部署图对于构件图中的构件,和其它Rational Rose 2003 中的模型元素一样,我们可以通过构件的标准规范窗口设置增加其细节信息,包括名称、构造型、语言、文本、声明、实现类和关联文件等。57部署图58部署图o 部署图(deployment diagram,也称为配置图)是用来显示系统中软件和硬件的物理架构。从部

24、署图中,可以了解到软件和硬件组件之间的物理关系以及软件组件在处理节点上的分布情况。使用部署图可以显示运行时系统的结构,同时还表明了构成应用程序的硬件和软件元素的配置和部署方式。59部署图的概念o 部署图描述了系统中包括的计算机和其他的硬件设备,如这些计算机和设备的位置以及它们之间是如何进行相互连接的,即,部署图描述系统中的硬件节点及节点之间如何连接的图。60部署图的概念o 部署图的作用n 一个UML部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件构件的静态视图。 部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构机器之间的中间件。 创建一个部署模型的目的包括 o 描述系统

25、与生产环境中的其它系统间的依赖关系,这些系统可能是已经存在,或是将要引入的。 o 描述一个商业应用主要的部署结构。 o 设计一个嵌入系统的硬件和软件结构。 o 描述一个组织的硬件/网络基础结构。 61部署图的概念o 部署图的组成元素n 部署图的组成元素包括节点、节点间的连接。连接把多个节点关连在一起,构成一个部署图。62部署图的表示o 部署图包含两个部分:节点和连接。o 1 节点n节点代表一个运行时计算机系统中的硬件资源。节点通常拥有一些内存,并具有处理能力。例如一台计算机、一个工作站等其它计算设备都属于节点。n在UML中,节点用一个立方体来表示。 每一个节点都必须有一个区别于其他节点的名称。

26、节点的名称是一个字符串,位于节点图标的内部。n节点的名称有2种表示方法:简单名字和带路径的名字。简单名字就是一个文字串;带路径的名字指在简单名字前加上节点所属的包名。下面的立方体表示一个节点,其名称为Node。63部署图的表示o 按照节点是否有计算能力,把节点分为两种类型:处理器和设备,分别用构造型Processor和构造型Device表示处理器和设备。o(1)处理器(Processor)n处理器是能够执行软件、具有计算能力的节点。o(2)设备(Device) n设备是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务,例如打印机、IC读写器,如果我们的系统不考虑它们内部的芯片,就

27、可以把它们看作设备。64部署图的表示(3)节点中的构件当某些构件驻留在某个节点时,可以在该节点的内部描述这些构件。对于一张部署图而言,最有价值的信息就是节点上的内容,也就是安装在节点中的构件。对于这些构件,可以直接写在节点中,也可以用构件表示,或用UML2.0规范推荐的artifact、database、deploymentSpec等构造型来表述构件。65部署图的表示对节点内驻留的构件描述对节点内驻留的构件描述66部署图的表示(对上图的解释)o(1)直接描述:例如在B/S客户端中,必须安装“Web浏览器”(并通过约束说明需要IE6.0以上版本或Firefox1.5以上版本)。通常,对于不是由开

28、发团队生成的制品,例如IIS服务器这种描述方式,也可以通过“约束”来描述它。o(2)artifact构造型:用来表示文件、构件等制品,例如IIS服务器上的swWeb.dll、BusinessRule.dll、DateAccess.dll及C/S客户端上的se.exe。o(3)database构造型:用来表示一个实际的数据库(对应Oracle的scheme),例如在数据库服务器上的sw。o(4)deploymentSpec构造型:用来表示部署描述,通常对关键的配置文件进行建模,还可以在构造块中直接指出具体参数的值。o对于这些构造型,可以使用依赖关系来表示他们之间的相互关系,甚至可以表示跨节点之间

29、的依赖(入DataAccess.dll到sw之间的依赖连接)。另外,在图中,使用了一个directory构造型,这并不是一个UML标准构造型,它只是使用者的一个扩展。67部署图的表示o 节点属性n象类一样,可以为一个节点提供属性描述,如,处理器速度、内存容量、网卡数量等属性。可以为节点其提供启动、关机等操作属性 。o 节点与构件的区别n节点表示一个硬件部件,构件表示一个软件部件。两者有许多相同之处,例如二者都有名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。但它们之间也存在明显的区别:构件是软件系统执行的主体,而节点是执行构件的平台;构件是逻辑部件,而节点表示

30、是物理部件,在物理部件上部署构件。68部署图的表示o2 连接n部署图用连接表示各节点之间通信路径,连接用一条实线表示。对于企业的计算机系统硬件设备间的关系,通常关心的是节点之间是如何连接的,因此描述节点间的关系一般不使用名称,而是使用构造型描述。下图是节点之间连接的例子。69部署图应用o 在实际的应用中,部署图主要用在设计和实现两个阶段。o 1.设计阶段n 在这一阶段,部署图主要用来描述硬件节点以及节点之间的连接。仅描述硬件节点的部署图仅描述硬件节点的部署图右图并没有描述节点内的构件。在设计阶段,还没有创建出软件构件。70部署图应用o 2.实现阶段n 在实现阶段,已经生产出了软件构件,因此,可

31、以把构件分配给对应的节点。描述了节点内部署的构件描述了节点内部署的构件实际应用当中,部署图主要用来对嵌入式系统、客户机/服务器系统、分布式系统进行建模,而且能够起到很好的作用。71部署图应用o3嵌入式系统建模o如果采用部署图对嵌入式系统进行了建模,通过部署图,硬件工程师和软件开发者之间就能做更好的交流。o在对嵌入式系统进行建模时,重点在于描述处理器和设备之间的关系;可以考虑对处理器和设备采取用更直观的图标。例如,一个航标RTU的嵌入式系统的部署图示。描述嵌入式系统的部署图描述嵌入式系统的部署图72部署图应用o 4客户机/服务器和分布式系统建模n 当开发的软件要运行在多台计算机上时,就必须将软件

32、构件以合理的方式部署在各个节点上。其中客户机/服务器结构就是一种典型的分布式系统模型,它包含三层B/S/S结构和两层C/S结构。n 对于大型分布式系统可能还包括负载均衡、集群等部署结构,部署图的引入能够很好地对其进行表述。73使用Rose创建构件图和部署图o 在每一个系统模型中,只存在一个部署图。在使用Rational Rose 2003创建系统模型时,就已经创建完毕,即为Deployment View(部署视图)。如果要访问部署图,在浏览器中双击该部署视图即可。 o 其中包括: (1)创建和删除节点。 (2)设置节点。 (3)添加和删除节点之间的连接。 (4)设置连接规范。 74用Rose部

33、署一个实际的项目o我们使用下列的步骤创建构件图: (1)根据用例或场景的确定需求,确定系统的构件。 (2)将系统中的类、接口等逻辑元素映射到构件中。 (3)确定构件之间的依赖关系,并对构件进行细化。o我们将以将以在序列图中介绍的一个学生信息管理系统的简单用例为例,介绍如何去创建系统的构件图。75用Rose部署一个实际的项目我们可以和确定用例中的类和对象一样,根据用例的流程确定系统的构件。根据上面的用例,我们可以确我们可以确定最明显的二个实体类是学生类(Student)和班级类(Grades)。系统的操作界面(WebInterface)是一个边界类。还有,数据访问操作过程中离不开与数据库交互的数据库管理类(DataManager)。除此以外,我们还需要一个系统的主程序(MainSystem),用来表示整个系统的启动入口。76用Rose部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论