软件工程new9,10.ppt_第1页
软件工程new9,10.ppt_第2页
软件工程new9,10.ppt_第3页
软件工程new9,10.ppt_第4页
软件工程new9,10.ppt_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

1,29.05.2020,面向对象方法学,2,29.05.2020,思考题,软件开发中为什么要使用面向对象方法?面向对象分析方法与结构化分析方法有哪些相似之处?有何区别?面向对象方法是对过去的一个完全突破,还是“换汤不换药”?,3,29.05.2020,传统方法学的缺点,存在的问题:生产率提高的幅度远不能满足需要;软件重用程度很低;软件仍然很难维护;软件往往不能真正满足用户需要。出现上述问题的原因很多,最根本的是瀑布型开发模型和结构化技术的缺点。,4,29.05.2020,传统方法学的缺点,瀑布型模型的缺点:僵化瀑布模型要求:生命周期各阶段间遵守严格的顺序。实际情况:软件开发往往在反复实践中完成。瀑布模型要求:预先定义并“冻结”软件需求。实际情况:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。,5,29.05.2020,传统方法学的缺点,结构化技术的缺点:本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。结构分析技术对处理的分解过程带有任意性,不同的开发人员开发相同的系统时,可能经过分解而得出不同的软件结构。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可复用性(reusability)较差。,6,29.05.2020,解决问题的途径,新的软件开发模型,如快速原型方法、螺旋型方法等;新的软件开发方法学面向对象方法学。,7,29.05.2020,南京,北京,Message,Sendbymethod,对象Object,Object,=数据Attribute,Attributes:location;employee;,+操作Method,Methods:send;sell;,注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。,我想把邮局搬到我家门口,多加几个邮递员,24小时都开门,对不起,本邮局不提供此类服务,唉,那就先送束花吧Post_office.Send(request,payment),面向对象方法学(OOM),8,29.05.2020,面向对象方法学OOM,特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,9,29.05.2020,面向对象思想的起源,维特根斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一。他生前于1922年出版了一本著作逻辑哲学论(TractatusLogico-Philosophicus)。在该书中,他阐述了一种世界观,或者说一种认识世界的观点,这种观点,在六七十年后的今天,终于由一种哲学思想沉淀到技术的层面上来,成为计算机业界的宠儿,这就是“OO”,Object-Oriented,面向对象。,10,29.05.2020,面向对象思想的起源,维特根斯坦在逻辑哲学论一书中提出了如下思想:世界可以分解为事实(Theworlddividesintofacts.)事实是由原子事实(atomicfacts)组成的。一个原子事实是多个对象(objects)的组合。对象是简单的(基本的)TheObjectissimple。对象形成了世界的基础。,11,29.05.2020,面向对象方法的历史,雏形阶段面向对象的概念最早是在1966年的仿真语言Simula67中出现的,这个语言是由挪威奥斯陆大学和挪威计算中心共同研制的,在这个语言中体现了面向对象方法的基本要点。AlanKay加入Xerox的PaloAlto研究中心(PARC)后,吸收了Simula67中的类、对象、继承等概念,与同事共同设计了Smalltalk语言。1972年PARC发布了Smalltalk-72,其中正式使用了“面向对象”术语,标志着面向对象程序设计方法的正式形成。,12,29.05.2020,面向对象方法的历史,完善阶段1981年PARC推出了Smalltalk80,被认为式面向对象语言发展史上最重要的里程碑。但是直到80年代后期,Smalltalk的应用尚不够广泛。其原因是:作为一项新的软件方法学需要一段时间才能被广泛接收。Smalltalk的商品化工作到1987年才开始进行。追求纯OO的宗旨(如严格的封装等)使讲究时效的开发人员感到不便。,13,29.05.2020,面向对象方法的历史,繁荣阶段从80年代中期到90年代,出现了大批实用的OOPL,如C+,ObjectPascal,Eiffel,Java等。,14,29.05.2020,面向对象方法与技术起源于面向对象的编程语言OOPL。但是正如软件工程百科全书中所言:“编程并不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更值得解决。因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其它阶段。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。”基于这一事实,人们对面向对象方法的研究重点,从OOP转移到了OOA和OOD。,15,29.05.2020,面向对象的基本概念,对象是现实世界中个体或事物的抽象表示,是面向对象开发模式的基本成份。对象是指将属性(数据/状态)和操作(方法/行为)捆绑为一体的软件结构,代表现实世界对象的一个抽象。属性表示对象的性质,属性值规定了对象所有可能的状态。一般只能通过执行对象的操作来改变。操作描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。,16,29.05.2020,面向对象的基本概念,对象是现实世界中个体或事物的抽象表示,是面向对象开发模式的基本成份。1.对象的形象表示(下图),17,29.05.2020,2.对象的定义(1)定义1对象是具有相同状态的一组操作的集合。这个定义主要是从面向对象程序设计的角度看“对象”。(2)定义2对象是指将属性(数据/状态)和操作(方法/行为)捆绑为一体的软件结构,代表现实世界对象的一个抽象。也就是说,对象是对属性值和操作的封装。这个定义着重从信息模拟的角度看待“对象”。,18,29.05.2020,(3)定义3(形式化的定义)对象=其中,ID是对象的标识或名字MS是对象中的操作集合DS是对象的数据结构MI是对象受理的消息名集合(即对外接口),19,29.05.2020,总之,对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。每当需要改变对象的状态时,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。从动态角度或对象的实现机制来看,对象是一台自动机。,20,29.05.2020,以数据为中心。对象是主动的。实现了数据封装。本质上具有并行性。模块独立性好。,对象的特点,21,29.05.2020,类(class):物以类聚,类:是一组具有相同属性和相同操作的对象的集合。类的定义包括该类的对象所需要的数据结构(属性的类型和名称)和对象在数据上所执行的操作(方法)。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。,22,29.05.2020,实例instance,实例:是从某类创建的对象,它们都可使用类中提供的函数。对象的状态则包含在实例的属性中。实例化(instantiation)是指在类定义的基础上构造对象的过程。同一个类的不同对象的差别是通过不同对象的不同属性值的差别来体现的。,23,29.05.2020,例:classPost_officeprivate:loc_typelocation;emp_typeemployee;public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);,main()Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;My_PO.Send(My_request,My_payment);,24,29.05.2020,消息(message):合作之道,消息:对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,25,29.05.2020,消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。消息包括提供服务的对象标识、服务标识、输入信息、返回信息。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。Message:=object_ID.method_ID(parameter(s);,26,29.05.2020,例:classPost_officeprivate:loc_typelocation;emp_typeemployee;public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);,main()Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;My_PO.Send(My_request,My_payment);,27,29.05.2020,方法,是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。,方法Method,28,29.05.2020,属性,是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。,属性(Attribute),29,29.05.2020,封装Encapsulation,封装:是指将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元,并尽可能隐藏对象的内部细节。封装是面向对象的一个重要原则,它有两个涵义:第一个是把对象的全部属性和全部操作结合在一起,形成一个不可分割的独立对象。第二个是“信息隐藏”,即尽可能隐藏对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装可以提高事物的独立性,而且还可以有效地避免“交叉感染”和减少“波动效应”。,30,29.05.2020,继承(inheritance):相似性与多样性,继承:类可分层,下层子类与上层父类有相同特征,称为继承。继承是使用已存在的定义做为基础建立新定义的技术。新类的定义可以是继承类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改继承类。继承类可当做基类来引用,则新类相应地可当做派生类来引用。,31,29.05.2020,新类的操作还可以被看做是继承类操作的一个扩充操作。例如,从一个车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的操作中引入新的能力。,32,29.05.2020,继承的好处,继承使得导出类变得非常简洁明了,导出类中只包含那些使它们与父类不同的最本质的特性。通过继承,可以重复使用和扩展那些经过测试的没有修改过的代码。最好的方法是从现存的类中导出新的子类。分级分类是人类组织和利用信息的技能。按照这种方法组织规划软件,使得结构简单,易于维护和扩展。,33,29.05.2020,一旦建立了类的层次结构,并且编写了一个应用程序的代码,改变非叶节点的类将对整个层次结构产生“波动影响”。所以,一旦一个应用程序的非叶节点类的代码编写完成后,就尽量避免向其中增加新的特征。,34,29.05.2020,多重继承,在一个类层次结构中任何给定的类都允许由两个或多个类作为直接父类,称为多重继承。,35,29.05.2020,多态性polymorphism,多态性是指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,使得同一个属性或操作在一般类及其各个特殊类中具有不同的语义。,36,29.05.2020,与多态性的实现有关的语言功能有:重载overloading在子类中对继承来的属性或操作进行重新定义;动态绑定dynamicbinding在运行时根据对象接收的消息动态地确定要链接哪一段操作代码;类属generic操作参数的类型可以是参数化的。,37,29.05.2020,两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。,重载Overloading,38,29.05.2020,面向对象的基本概念,对象(属性与方法)类与实例封装(信息隐藏)继承(多重继承)消息多态性(重载、动态绑定),39,29.05.2020,OOM=Object+Class+Inheritance+Communicationwithmessages,面向对象方法学,40,29.05.2020,传统方法数据与过程是分离的,对象把数据和处理数据的方法封装成一个单元,41,29.05.2020,传统方法和面向对象方法的比较,传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出,把问题当作一组相互作用的实体,并确定实体间关系,面向功能,把系统看成一组功能,42,29.05.2020,OOM:以object为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎(deduction),传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。,OOM的优点,43,29.05.2020,OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。,传统方法:结构依赖于功能,不稳定。,传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。,OOM:一个class所有的instances都可重用它的代码;由inheritance派生出的新的class可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,44,29.05.2020,稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解;,传统方法:可维护性是最令人头痛的问题。OOM:从以下几方面改善了可维护性,有这一条就什么都好办了!,容易测试、调试。,这一点还可商榷,45,29.05.2020,注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与Prototyping结合使用效果好。,46,29.05.2020,流行的几种建模方法,Booch方法(包含“微开发过程”和“宏开发过程”)Coad-Yourdon方法(最直接方法)JamesRumbaugh方法(ObjectModelingTechnology,OMT)Jacobson方法(简称OOSE)Shalear-Mellor方法由Rumbaugh,Booch,Jacobson提出的统一建模语言(UnifyModelingLanguage,UML),47,29.05.2020,Booch方法,Booch在1983年首先提出了一种基于词法分析的方法,该方法建议分析人员从目标系统的一个平凡描述开始,形成一个正文形式化的策略,指出正文中的名词、动词和形容词,然后由名词导出对象,由形容词导出对象的属性,由动词导出对象的操作,最后建立对象的界面(操作)。该方法认为针对问题的分析设计应是反复的渐增的过程,包括四个步骤:确定类与对象;确定类与对象的语义;确定类与对象的关系;属性类与对象。该方法从动态、静态、逻辑、物理等多个角度描述系统,主要文档有:类结构图、对象结构图、模块结构图、状态转换图、时序图等。,48,29.05.2020,Coad根据问题域结构可提取候选的类及对象;与系统发生作用的其它系统和必要的设备可作为候选的类及对象;如:打印机等(分析阶段可不把与实现有关的计算机部件作为候选的类及对象),系统必须观测、记忆的与时间有关的事件可作为候选的类及对象;如:建立帐户的日期打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等,系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程事务等。其中属性是操作过程名,操作特权及操作步骤的描述;系统需了解掌握的物理位置、办公地点等可作为候选的类及对象;如:ATM机器、帐户等,(2)审查和筛选,舍弃无用的类对象的精简只有一个属性的对象只有一个服务的对象推迟到OOD考虑的对象3)识别主动对象例:超市销售管理系统(对象层),帐册,上级系统接口,供货员,销售事件,商品,特价商品,计量商品,收款机,商品一览表,超市销售管理系统(对象层),类及对象的表示方法,类图,对象图,类名,属性名1属性名2.,操作名1操作名2.,(类名),属性名1属性名2.,操作名1操作名2.,类及对象的例子,人,姓名年龄,改换地址改换工作,(人),张三22,改换地址改换工作,类和属性,对象和值,文件,文件名文件大小最近更新日期,打印,(文件),技术合同820K99.11.19,打印,步骤2:定义属性与服务定义属性定义服务对象的状态与状态转换图例:栈的状态/服务对照表,例:栈状态转换图,空,半满,满,创建,压入(未满)弹出(未空),压入(报错),弹出(报错),弹出(已空),压入,弹出,压入(已满),定义服务对象行为分类发现服务的策略审查与调整识别对象的主动行为服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图),帐册,前班节余销售事件表收入累计上交款本班节余,接班计帐报帐交班,上级系统接口,帐目目册,消息发送查帐报帐价格更新种类增删,供货员,缺货登记表,缺货登记供货,销售事件,收款人购物清单应收款,销售计划入帐,商品,编号名称单价架上数量下限,售出补充价格更新,特价商品,开始日期结束日期,计量商品,*单价计量单位计价方式,*售出*补充*价格更新,收款机,本班收款员开始时间结束时间,登录售货结帐,商品一览表,商品目录,检索种类增删,超市销售管理系统(特征层),建立数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作,对象字典举例:类名父类提供的服务需要的服务帐户ATM银行出纳员,步骤3:定义结构域连接初步确定关联对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出筛选完善步骤:识别对象与类步骤2:定义属性与服务,步骤3:定义结构域连接分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接,从一般类发现特殊类,公司职员,股东,姓名身分证号码,股份,职员,工资,公司职员,姓名身分证号码股份工资,?,?,从特殊类发现一般类,公司职员,股东,姓名身分证号码,股份,职员,工资,股东,姓名身分证号码股份,职员,姓名身分证号码工资,?,收款机,ABC,现钞收款机,DEF,现钞收款机,ABCDEF,XYZ,Z,XY,为支持复用建立结构,收款机类成为可供本领域其它系统复用的领域构件,取消没有特殊属性的特殊类,大学生,研究生,研究方向指导教师,学生,姓名学号班级,研究生,研究方向指导教师,学生,姓名学号班级,通过增加属性简化一般-特殊结构,人员,男人,女人,中国人,美国人,日本人,人员,性别国籍,两种结构的变通,冷藏车,汽车,制冷设备,冷藏车,汽车,制冷设备,仅用一般-特殊结构,两种结构同用,冷藏车,汽车,制冷设备,仅用整体-部分结构,筛选:删除下列关联已删去的类间的关联无关或实现关联瞬时事件三元关联派生关联,实例连接和关联关系的表示实例连接又称为链,用于表达对象之间的静态联系(通过对象属性表示一个对象对另一个对象之间的依赖关系),类1,连接名称mn,类2,教师,指导论文0,m1,n,学生,表示法:,教师为学生指导论文:,m,n为阶,0至m,类1,连接名称mn,类1,连接属性,关联关系(链属性)的表示,允许实例连接带有一组属性,这些属性通过关联来描述,关联关系(链属性),为之工作,工资职务,雇主,雇员,个人名字身份证号,公司名字地址,题目答辩时间成绩,教师,学生,指导论文0,m1,n,链和关联都是建立对象和类之间关系的手段,国家,城市,国家有首都,名称,名称,国家有首都,(国家),中国,(城市),北京,国家有首都,(国家),法国,(城市),巴黎,类图,实例图,一对一关联和链,阶数(重数):相关对象的数量例1:例2:,教师,1+,书,工作台,窗口,聚合,:在OMT中表示“0或1个”,:在OMT中表示零个或多个,表示1个或多个,限定例:目录+文件名产生一个文件消息连接,目录,文件名,文件,发送者,接受者,类A,限定词,类B,结构的表示结构表示问题域中的复杂关系,是客观世界实体间关系的抽象。类及对象间的关系可概括为:归纳关系(一般/特殊结构、分类结构)针对事物类之间的组织关系组合关系(整体/部分结构、组装结构)表示事物的整体与部分之间的组合关系关联关系表示对象间相互依赖、相互作用关系,(1)一般/特殊结构表示法,一般类,特殊类,特殊类,.,子类的公共属性和操作归属于一般类并被每一个子类共享,每一个子类都继承了一般类的特征。,一般类(父类、基类、超类),特殊类(子类),继承,存户,一般/特殊结构举例,一般类(父类、基类、超类),特殊类(子类),继承,一个特殊类中的所有对象可继承一般类中的属性、服务、关系,账号姓名余额,存款取款,支票存户,储蓄存户,利息率,(2)整体/部分结构表示法,整体对象,.,m1,n1,m2,n2,p1,q1,p2,q2,部分对象,一个整体对象可有不同类型的部分对象.一个部分对象也可同时属于多个整体对象.,部分对象,飞机,发动机,飞机整体对象,可能没有发动机最多有四台发动机,用以实现聚合、组合、划分,发动机部分对象,0,1,0,4,可能不是飞机一部分至多是一架飞机的一部分,整体/部分结构(分类结构),整体/部分结构是一种特定的连接。整体类中的一个对象(或称聚合)是由各部分类的对象(或称成分)构成的。,整体/部分结构表示法举例,微机,1+,电源,主机箱,键盘,监视器,鼠标,内存,CPU,硬盘,o,步骤4:定义服务及消息连接分析和认识对象之间在行为上的依赖关系。,步骤:识别对象与类步骤2:定义属性与服务步骤3:定义结构域连接,步骤5:标识主题(Subject)Coad/Yourdon方法中主题的概念:主题是把一组具有较强联系的类组织在一起而得到的类的集合。,步骤:识别对象与类步骤2:定义属性与服务步骤3:定义结构域连接步骤4:定义服务及消息连接,主题概念及其用途主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;主题一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;主题有助于指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。,主题概念的特点是由一组类构成的集合一个主题内部的对象类应具有某种意义上的内在联系描述系统中相对独立的组成部分(如一个子系统)描述系统中某一方面的事物(如人员、设备)解决系统中某一方面的问题(如输入输出)主题的划分有一定的灵活性和随意性,主题的表示法三种表示方式:压缩方式半展开方式全展开方式,编号主题名,压缩方式,编号主题名,半展开方式:,类名类名类名,主题名,主题名,下层主题,主题的表示法,全展开方式:,编号,编号,编号,编号,类图上原有的全部内容,如何划分主题把每个结构作为一个主题;(选取结构中最上层的类作为一主题)通过实例连接互相联系的类可划分到一个主题;把不属于任何结构,也没有实例连接的类作为一个主题。,如何精练主题从问题域和接口复杂性两方面入手:使用问题域精练主题,即用整体/部分结构对问题域进行划分,而不是按功能分解方法划分.按高内聚低偶合原则,通过使主题间依赖性和交互性最小原则保留能反映子问题域的主题.主题数目7个左右,则进一步精练主题.,何时引入主题依赖于模型自身复杂性小系统:不需引入主题;中等系统:先标识类及对象,然后引入主题;大系统:先标识主题,对问题域进行划分,分给不同的任务组;,主题层次的控制中小型系统可只设一层主题,最多不超过两层;大型系统可只设两层主题,最多不超过三层。,中央计算机,总行,通信,银行代码,A

温馨提示

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

评论

0/150

提交评论