软件工程导论(第9章)课件.ppt

上传人:飞****2 文档编号:71801557 上传时间:2023-02-06 格式:PPT 页数:73 大小:1.32MB
返回 下载 相关 举报
软件工程导论(第9章)课件.ppt_第1页
第1页 / 共73页
软件工程导论(第9章)课件.ppt_第2页
第2页 / 共73页
点击查看更多>>
资源描述

《软件工程导论(第9章)课件.ppt》由会员分享,可在线阅读,更多相关《软件工程导论(第9章)课件.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第9章:面向对象方法学引论章:面向对象方法学引论9.1 面向面向对象方法学概述象方法学概述9.1.1 面向面向对象方法学的要点象方法学的要点 面向面向对象方法学的基本原象方法学的基本原则:尽可能模:尽可能模拟人人类习惯的思的思维方式,使开方式,使开发软件的方法与件的方法与过程尽可能程尽可能接近人接近人类认识世界解决世界解决问题的方法与的方法与过程。程。客客观世界中的世界中的实体体问题域中的域中的对象;象;计算机中的算机中的实体体解空解空间对象;象;解空解空间对象取决于程序象取决于程序设计语言:言:汇编语言的言的对象:存象:存储单元;元;面向面向过程的高程的高级语言的言的对象:象:变量、数量、

2、数组、记录、文件等;、文件等;面向面向对象的高象的高级语言的言的对象:除上述元素外,象:除上述元素外,还包括窗体、菜包括窗体、菜单、按、按钮、等等。、等等。与与传统方方法法不不同同,面面向向对象象方方法法以以数数据据为主主线,将将数数据据和和操操作作方方法法封封装装在在对象象中中,通通过消消息息请求求对象象主主动执行行它它的的内内部部操操作作,改改变其内部私有数据。其内部私有数据。面向面向对象方法具有四个要点:象方法具有四个要点:A认为客客观世界是由世界是由对象象组成;成;B把所有把所有对象都划分成各种象都划分成各种对象象类(Class););C把把若若干干对象象类组成成一一个个层次次结构构的

3、的系系统(类等等级););D对象彼此象彼此间仅通通过传递消息互相消息互相联系。系。OO=Objects+Class+Inheritance+Communication with message 9.1.2 面向面向对象方法的象方法的优点点 1与人与人们习惯的思的思维方法一致;方法一致;2稳定性好;定性好;3可重用性好;可重用性好;4较易开易开发大型大型软件件产品;品;5.可可维护性好。性好。9.1.3 喷泉模型泉模型9.2 面向对象的概念面向对象的概念9.2.1 对象象 1、对象的形象表示、对象的形象表示 状态状态S操作操作1操作操作2操作操作3界面界面操作操作1、2、3的实现的实现图图9.2

4、 对象的形象表示对象的形象表示1)定定义1:对象象是是具具有有相相同同状状态的的一一组操操作作的的集集合。合。2)定)定义2:对象是象是对属性属性值和操作的封装。和操作的封装。3)定定义3:对象象:=其其中中,ID是是对象象的的名名字字;MS是是对象象中中的的操操作作集集合合;DS是是对象象的的数数据据集集合合;MI是是对象象受受理理的的消消息名集合(即息名集合(即对外接口)。外接口)。2、对象的定义、对象的定义状态状态S操作:操作:f1,f2,fn转换:转换:g1,g2,gn图图9.3 用自动机模拟对象用自动机模拟对象转换:新状态转换:新状态S=gi(X,S)输出输出 fi(X,S)输入输入

5、fi,X3、对象的特点象的特点 1)以数据)以数据为中心;中心;2)对象是主象是主动的;的;3)实现了数据封装;了数据封装;4)本)本质上具有并行性;上具有并行性;5)模)模块独立性好。独立性好。9.2.2 其他概念其他概念1、类(、类(Class)类类就就是是对对具具有有相相同同数数据据和和相相同同操操作作的的一一组组相相似对象的定义。似对象的定义。如:如:Circle类具有相同的数据(圆心坐标、半类具有相同的数据(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置)。小半径、在屏幕上移动位置)。又又如如:下下面面C+语言言定

6、定义的的Queue类,可可用用于于实现一个一个队列(即先列(即先进先出的表):先出的表):Class Queue int q 100;int sloc,rloc;public:void init();/成成员函数函数 void qput(int i);int qget();类有私有有私有变量量(Private)和公有和公有变量量(Public)。缺省缺省时,都属于私有的,只能由,都属于私有的,只能由类内部其他成内部其他成员来来访问,不能由程序的其他部分来,不能由程序的其他部分来访问。这是一种是一种实现封装的方法。封装的方法。实例例就就是是由由某某个个特特定定的的类所所描描述述的的一一个个具具体

7、体的的对象。象。如:如:Circle a;/声明声明Circle类实例例a Queue Q1,Q2;/声明声明Queue类实例例Q1和和Q2 2、实例实例(Instance)消消息息就就是是用用来来请求求对象象执行行某某个个处理理或或回回答答某些信息的要求。某些信息的要求。消息既可以是数据流,也可以是控制流。一消息既可以是数据流,也可以是控制流。一条消息可以条消息可以发送送给不同的不同的对象,象,对消息的解消息的解释完全由接收信息的完全由接收信息的对象来完成,不同的象来完成,不同的对象象对相同形式的消息可以有不同的解相同形式的消息可以有不同的解释。3、消息消息(Message)与与传统程程序序

8、的的“调用用/返返回回”所所不不同同的的是是,对于于传来来的的消消息息,对象象可可以以返返回回相相应的的回回答答信息,也可以不返回。信息,也可以不返回。一个消息由三个部分一个消息由三个部分组成:成:1)接收信息的)接收信息的对象;象;2)信息)信息选择符(即消息名);符(即消息名);3)零个或多个)零个或多个变元(参数)。元(参数)。如:如:MyCircle.Show(GREEN);4、方法(、方法(Method)方法,是方法,是对象所能象所能执行的操作。行的操作。C+中把方法称中把方法称为成成员函数,如函数,如Circle类中中定定义的成的成员函数:函数:Show(int color)5、属

9、性(、属性(Attribute)属性,是类中定义的数据。属性,是类中定义的数据。C+中把属性称为数据成员。中把属性称为数据成员。6、封装(、封装(encapsulation)封装就是信息封装就是信息隐藏,通藏,通过封装封装对外界外界隐藏了藏了对象的象的实现细节。7、继承(承(Inheritance)继承,是指能够直接获得已有的性质和特征,继承,是指能够直接获得已有的性质和特征,而不必重复定义它们。而不必重复定义它们。A的操作的操作A的变量的变量类类AA的实例变量的实例变量从从A的继承特性的继承特性B的操作的操作B的变量的变量类类B继承来的继承来的A的实例变量的实例变量B的实例变量的实例变量类类

10、AA的实例的实例a1B的实例的实例b1类类B:A的子类的子类图图9.4 实现继承机制的原理实现继承机制的原理8、多、多态性(性(Polymorphism)多多态性性,指指子子类对象象可可以以象象父父类对象象那那样使使用用,同同样的的消消息息既既可可以以发送送给父父类对象象,也也可可以以发送送给子子类对象。象。即不同等即不同等级的的类,可以公用一个方法的名字。,可以公用一个方法的名字。C+中,多中,多态性是通性是通过虚函数来虚函数来实现的。在不同的。在不同层次的次的类中,虚函数中,虚函数实现算法不同,在运行算法不同,在运行时根据根据接收消息的接收消息的对象所属于的象所属于的类来决定来决定执行虚函

11、数的版行虚函数的版本,称本,称为动态联编。9、重、重载(Overloading)有两种重有两种重载:1)函数重)函数重载 指指在在同同一一作作用用域域内内的的若若干干个个参参数数特特征征不不同同的的函函数可以使用相同的函数名字。数可以使用相同的函数名字。如:如:Show(int a,int b)Show(int x)Show(int x,int y,int z)C+语言言中中函函数数重重载是是通通过静静态联编实现的的。即即编译时根根据据函函数数变元元的的个个数数和和类型型,决决定定函函数数版本。版本。2)运算符重)运算符重载 指指同同一一运运算算符符可可以以施施加加于于不不同同类型型的的操操作

12、作数数上上面面。当当被被操操作作数数类型型不不同同时,运运算算符符的的含含义是不同的。是不同的。编译时根根据据被被操操作作数数的的类型型,决决定定使使用用算算符符的哪种的哪种语义。另另外外,在在实现一一个个类成成员函函数数时,必必须通通过用用类名名限定函数名来告限定函数名来告诉编译器器这个函数属于哪个个函数属于哪个类。如,如,编写写qput()函数:函数:Void Queue:qput(int i)if(sloc=100)cout “Queue if full”;return;sloc+;q sloc=i;从从程程序序中中调用用一一个个类的的成成员函函数数,用用对象象和和点点运算符。如:运算符

13、。如:Queue ob1,ob2;ob1.init();/是是对对象象ob1的初始化函数的初始化函数init()的的调用用 ob1,ob2之之间的唯一关系是它的唯一关系是它们是同一是同一类对象。象。ob1的初始化不影响的初始化不影响ob2。用用面面向向对象象方方法法开开发软件件,通通常常需需要要建建立立三三种形式的模型,它种形式的模型,它们分分别是:是:(1)对象模型:描述系象模型:描述系统的数据的数据结构;构;(2)动态模型:描述系模型:描述系统的控制的控制结构;构;(3)功能模型:描述系)功能模型:描述系统的功能。的功能。3种种模模型型必必不不可可少少,其其重重要要程程度度不不同同,对象象

14、模模型型是是最最基本、最重要的。基本、最重要的。9.3 面向对象建模面向对象建模UML(Unified Modeling Language)UML是面向是面向对象的分析与象的分析与设计(OOAD)方法方法发展的展的产物。物。公公认的面向的面向对象建模象建模语言出言出现于于70年代中期。年代中期。90年代中,一批新方法出年代中,一批新方法出现了,其中最引人注了,其中最引人注目的是目的是Booch 1993、OOSE和和OMT-2等。等。1.标准建模语言标准建模语言UML的出现的出现 众多的建模众多的建模语言各有言各有优点,大多点,大多类同,但仍存同,但仍存在某些在某些细微的差微的差别,妨碍了用,

15、妨碍了用户之之间的交流。的交流。统一建模一建模语言在言在这样的背景下的背景下产生。生。1995年年10月:第一个公开版本月:第一个公开版本UM 0.8(Unified Method)。)。1996年年6月:月:UM改名改名为UML(Unified Modeling Language),发布布 UML 0.9。1996年底:年底:UML占面向占面向对象技象技术市市场的的85,成成为可可视化建模化建模语言事言事实上的工上的工业标准。准。现最新版本:最新版本:UML2.0 UML是是标准的建模准的建模语言,而不是言,而不是标准的准的开开发过程。程。在不同在不同组织和不同和不同应用用领域,域,UML应

16、用用需采取不同的开需采取不同的开发过程。程。1998年:年:RUP(Rational Unified Process)是一种典型的建模是一种典型的建模过程。程。2.标准建模语言标准建模语言UML的内容的内容UML的定的定义包括包括UML语义和和UML表示法表示法两部分。两部分。UML的重要内容可以由五类图(的重要内容可以由五类图(9种图形)来定义:种图形)来定义:1)用例图)用例图:从用户角度描述系统功能,并指出各功能从用户角度描述系统功能,并指出各功能2)静态图)静态图:包括类图、对象图和包图;包括类图、对象图和包图;类图类图2)静态图)静态图:包括类图、对象图和包图;包括类图、对象图和包图

17、;对对象象图图包包图图3)行为图)行为图:描述系统的动态模型;描述系统的动态模型;4)交互图)交互图:描述对象间的交互关系;描述对象间的交互关系;交互图交互图5)实现图)实现图:如配置图,定义系统中软硬件的物理体系结构。如配置图,定义系统中软硬件的物理体系结构。3.标准建模语言标准建模语言UML的应用领域的应用领域 UML适用于适用于软件开件开发中从需求分析到中从需求分析到测试的不的不同同阶段:段:需求需求获取取:用例:用例图、活、活动图 需求分析需求分析:类图、对象象图和包和包图 系系统分析与分析与设计:状:状态图、顺序序图、合作、合作图、活活动图、部件、部件图和配置和配置图。测试:单元元测

18、试用用类图、集成、集成测试用部件用部件图和和合作合作图、确、确认测试用用例用用例图等。等。UML常用于建立常用于建立软件系件系统模型,但同模型,但同样可可用于描述非用于描述非软件件领域的系域的系统,如:,如:机械系机械系统;企企业机构或机构或业务过程;程;处理复理复杂数据的信息系数据的信息系统;具有具有实时要求的工要求的工业系系统或工或工业过程;程;等。等。9.4 对象模型对象模型9.4.1 类图的基本符号的基本符号 1.定定义类类名类名属性属性服务服务图图9.5 表示类的图形符号表示类的图形符号2.定定义属性属性 UML描述属性的描述属性的语法格式:法格式:可可见性性 属性名:属性名:类型名

19、初型名初值性性质串串 可可见性:公有(性:公有(public)/+、私有(私有(private)/、保保护(protected)/#(没有默(没有默认可可见性)性)性性质串串:可能枚:可能枚举值或其它性或其它性质,如,如只只读 例:例:管理管理员:String=“未定未定”类变量量实例:例:货单数:数:Integer(类变量在量在该类所有所有对象中的属性象中的属性值相等)相等)3.定定义服服务(操作)(操作)UML描述操作的描述操作的语法格式:法格式:可可见性性 操作名(参数表):返回操作名(参数表):返回值类型型性性质串串 参数的参数的语法:法:参数名:参数名:类型名默型名默认值 Show(

20、x:integer=0,y:integer,z:integer):integer9.4.2 表示关系的符号表示关系的符号 1.关关联 1)普通关)普通关联作家作家计算机计算机使用使用被使用被使用*1*图图9.6 普通关联示例普通关联示例重数(重数(multiplicity)的表示方法:的表示方法:01 表示表示 0到到1个个对象;象;0*或或*表示表示 0到多个到多个对象;象;1+或或1*表示表示 1到多个到多个对象象;115 表示表示 1到到15个个对象;象;3 表示表示 3个个对象。象。2)关联的角色)关联的角色人人结婚结婚丈夫丈夫妻子妻子图图9.7 关联的角色关联的角色上图是一个递归关联

21、的例子。上图是一个递归关联的例子。这种情况下,标明角色名有助于理解类图。这种情况下,标明角色名有助于理解类图。3)限定关联)限定关联目录目录文件文件文件名图图9.8 限定关联限定关联目录目录文件文件保存保存被保存被保存1*普通关联普通关联利用限定词把一对多关系简化成了一对一关系。利用限定词把一对多关系简化成了一对一关系。4)关联类)关联类队列队列电梯控制器电梯控制器电梯电梯按钮按钮4*图图9.9 关联类示例关联类示例 控制器对象和电梯对象之间的连接,对应着一个队列控制器对象和电梯对象之间的连接,对应着一个队列(对象),它存储着控制器和电梯内部按钮的请求信息。(对象),它存储着控制器和电梯内部按

22、钮的请求信息。聚集表示聚集表示类与与类之之间是整体与部分的关系。是整体与部分的关系。2.聚集聚集 1)共享聚集)共享聚集课题组课题组人人成员成员*1*图图9.10 共享聚集示例共享聚集示例 处于部分方的对象可同时参与多个处于整体方处于部分方的对象可同时参与多个处于整体方对象的构成。对象的构成。部分部分类完全隶属于整体完全隶属于整体类,部分与整体共存,整体不,部分与整体共存,整体不存在了部分也随之消失。存在了部分也随之消失。2)组合聚集)组合聚集教材教材描绘教材结构的对象模型(组合聚集)描绘教材结构的对象模型(组合聚集)封面封面前言前言1+1+目录目录章章节节习题习题包含包含包含包含例子:例子:

23、3.泛化(泛化(继承)承)1)普通泛化)普通泛化抽象类抽象类:描述子类:描述子类的公共属性和行为,的公共属性和行为,不能生成具体对象不能生成具体对象的类。的类。一个比较复杂的类图示例:一个比较复杂的类图示例:2)受限泛化)受限泛化 给泛化关系(继承关系)附加约束条件,说明给泛化关系(继承关系)附加约束条件,说明该泛化关系的使用方法和扩充方法。该泛化关系的使用方法和扩充方法。约束有:多重、不相交、完全和不完全。约束有:多重、不相交、完全和不完全。多重继承多重继承:一个子类可以同时多次继承同一个上层基类。:一个子类可以同时多次继承同一个上层基类。不相交继承不相交继承:一个子类不能多次继承同一个上层

24、基类。:一个子类不能多次继承同一个上层基类。(默认为不相交继承)(默认为不相交继承)完全完全继承承:指父:指父类的所有子的所有子类都已都已经在在类图中中穷举出来了。出来了。不完全不完全继承承:指父:指父类的所有子的所有子类并没有在并没有在类图中中穷举出来了。出来了。随着随着对问题理解的深入,不完全理解的深入,不完全继承中可以承中可以不断不断扩充子充子类。(默(默认为不完全不完全继承)承)4.依依赖和和细化化 1)依)依赖关系关系类类B类类A友元友元图图9.15 友元依赖关系友元依赖关系 描描述述两两个个模模型型元元素素(类类、用用例例)之之间间的的关关系系,其其中中一一个个模模型型元元素素是是

25、独独立立的的(被被箭箭头头指指),另另一一个个依依赖赖于于独独立立的的模模型型元元素。如,一个类使用另一个类的对象作为自己的函数的参数。素。如,一个类使用另一个类的对象作为自己的函数的参数。(友元:依赖类可以使用独立类中私有的或保护的成员)(友元:依赖类可以使用独立类中私有的或保护的成员)2)细化关系化关系分析类分析类设计类设计类图图9.16 细化关系示例细化关系示例 细细化化用用来来协协调调不不同同阶阶段段模模型型之之间间的的关关系系,表表示示各各个个开开发发阶阶段段不不同同抽抽象象层层次次模模型型之之间间的的相相关关性性,通通常常用用于于跟跟踪踪模型的演变。模型的演变。例子:例子:公司公司

26、员工员工名字名字电话号码电话号码主要产品主要产品地址地址雇佣雇佣解雇解雇姓名姓名地址地址身份证号码身份证号码工资工资1+职务职务部门名部门名部门部门工人工人经理经理01管理管理产品产品产品名产品名成本成本重量重量项目项目项目名项目名预算预算优先级优先级生产生产1+主持主持参加参加1+1+1+一家公司的对象模型一家公司的对象模型组成组成9.5 动态模型动态模型 1)事事件件:事事件件是是某某个个特特定定时刻刻所所发生生的的事事情情。它是引起它是引起对象状象状态转换的控制信息。的控制信息。2)状状态:状状态就就是是对象象在在其其生生命命周周期期中中的的某某个特定个特定阶段所段所处的某种情形。的某种

27、情形。3)行行为:行行为是是指指对象象达达到到某某种种状状态时所所做做的一系列的一系列处理操作。理操作。通常用通常用UML提供的状提供的状态图来描来描绘动态模型。模型。注意:注意:每每个个类的的动态行行为用用一一张状状态图来来描描绘,各各个个类的的状状态图通通过共共享享事事件件合合并并起起来来,从从而而构构成系成系统的的动态模型。模型。实例:实例:电话的状态图电话的状态图 9.6 功能模型功能模型 通常,功能模型由一通常,功能模型由一组数据流数据流图组成。成。UML提供的用例提供的用例图也是也是进行需求分析和建立功行需求分析和建立功能模型的有力工具。能模型的有力工具。以用例以用例图建立起来的系

28、建立起来的系统模型称模型称为用例模型,用例模型,它描述的是外部行它描述的是外部行为者所理解的系者所理解的系统功能。功能。9.6.1 用例用例图1、系、系统2、用例、用例(use case)行行为者感受到的一个完整者感受到的一个完整的功能。的功能。用例是用例是类,代表一,代表一类功能,功能,用例的用例的实例称例称为脚本。脚本。3、行行为者者(actor)与系与系统交互的人或其他系交互的人或其他系统。它代表一种角色。它代表一种角色。4、用例之用例之间的关系的关系1)扩展关系展关系 向一个用例中添加一些向一个用例中添加一些动作后构成另一个用例,作后构成另一个用例,它它们之之间构成构成扩展关系。展关系

29、。2)使用关系使用关系 一个用例使用另一个用一个用例使用另一个用例,它例,它们之之间构成使用关构成使用关系。系。描描述述一一般般行行为为的的变变化化时时采采用用扩扩展展关关系;系;两两个个或或多多个个用用例例中中出出现现重重复复描描述述时时可采用使用关系。可采用使用关系。9.6.2 用例建模用例建模 一个用例模型由若干幅用例一个用例模型由若干幅用例图组成。成。创建用例模型的工作包括:定建用例模型的工作包括:定义系系统、寻找找行行为者、者、寻找用例、描述用例、定找用例、描述用例、定义用例之用例之间的关系、确的关系、确认模型。模型。1、寻找行找行为者者 下述下述问题有助于有助于发现行行为者:者:1

30、)谁将使用系将使用系统的主要功能?的主要功能?2)谁需要借助系需要借助系统的支持来完成日常工作?的支持来完成日常工作?3)谁来来维护和管理系和管理系统?4)系)系统控制哪些硬件控制哪些硬件设备?5)系)系统需要与哪些其他系需要与哪些其他系统交互?交互?6)哪些人或系)哪些人或系统对本系本系统产生的生的结果感果感兴趣?趣?2、寻找用例找用例 可以通可以通过每个行每个行为者回答下述者回答下述问题来来获取用例:取用例:1)行)行为者需要系者需要系统提供哪些功能?提供哪些功能?2)行)行为者自身需要做什么?者自身需要做什么?3)行)行为者是否需要者是否需要读取、取、创建、建、删除、修改或存除、修改或存

31、储系系统中的信息?中的信息?4)系)系统中中发生的事件需要通知行生的事件需要通知行为者者吗?5)行)行为者需要通知系者需要通知系统某些事情某些事情吗?6)系)系统需要哪些需要哪些输入入输出?出?7)当前使用的系)当前使用的系统存在的主要存在的主要问题是什么?是什么?9.7 三种模型之间的关系三种模型之间的关系1)针对每个每个类建立的建立的动态模型,描述了模型,描述了实例的例的生命周期或运行周期。生命周期或运行周期。2)状)状态转换驱使行使行为发生,生,这些行些行为在数据流在数据流图中被映射成中被映射成处理,在用例理,在用例图中被映射成用中被映射成用例,它例,它们同同时与与类图中的服中的服务相相

32、对应。3)功能模型中的)功能模型中的处理(或用例)理(或用例)对应于于对象模象模型中的型中的类所提供的服所提供的服务。4)数据流)数据流图中的数据存中的数据存储,以及数据的源点,以及数据的源点/终点,点,通常是通常是对象模型中的象模型中的对象。象。5)数据流)数据流图中的数据流,往往是中的数据流,往往是对象模型中象模型中对象的象的属性属性值,也可能是整个,也可能是整个对象。象。6)用例)用例图中的行中的行为者,可能是者,可能是对象模型中的象模型中的对象。象。7)功能模型中的)功能模型中的处理(或用例)可能理(或用例)可能产生生动态模型模型中的事件。中的事件。8)对象模型描述了数据流象模型描述了

33、数据流图中的数据流、数据存中的数据流、数据存储以及数据源点以及数据源点/终点的点的结构。构。练习题练习题填空题:1、用面向对象方法开发软件,通常需要建立3种形式的模型即()、()和功能模型。2、用面向对象方法学开发软件过程,是一个主动地多次反复迭代的()。传统方法学强调()顺序地完成软件开发的各阶段任务。名名词解解释:1、对象象2、类3、封装、封装4、继承承5、多、多态性性6、重、重载简答答题:1、简述面向述面向对象方法学的出象方法学的出发点和基本原点和基本原则?2、面向、面向对象方法的象方法的4个要点?个要点?3、与、与传统结构化方法相比构化方法相比较面向面向对象方法学象方法学的的优点?点?4、对象的象的5个基本特点?个基本特点?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁