软件工程ppt-09面向对象方法学引论课件

上传人:94****0 文档编号:240684297 上传时间:2024-04-30 格式:PPT 页数:72 大小:533.92KB
返回 下载 相关 举报
软件工程ppt-09面向对象方法学引论课件_第1页
第1页 / 共72页
软件工程ppt-09面向对象方法学引论课件_第2页
第2页 / 共72页
软件工程ppt-09面向对象方法学引论课件_第3页
第3页 / 共72页
点击查看更多>>
资源描述
tjm 第九章第九章 面向对象方法学引论面向对象方法学引论面向对象方法学概述面向对象方法学概述面向对象的基本概念面向对象的基本概念面向对象建模面向对象建模对象模型对象模型 动态模型动态模型功能模型功能模型 第九章 面向对象方法学引论面向对象方法学概述1tjm面向对象方法学的出发点和基本原则,是尽可能模面向对象方法学的出发点和基本原则,是尽可能模面向对象方法学的出发点和基本原则,是尽可能模面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程拟人类习惯的思维方式,使开发软件的方法与过程拟人类习惯的思维方式,使开发软件的方法与过程拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,尽可能接近人类认识世界解决问题的方法与过程,尽可能接近人类认识世界解决问题的方法与过程,尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间也就是使描述问题的问题空间也就是使描述问题的问题空间也就是使描述问题的问题空间(也称为问题域也称为问题域也称为问题域也称为问题域)与实与实与实与实现解法的解空间现解法的解空间现解法的解空间现解法的解空间(也称为求解域也称为求解域也称为求解域也称为求解域)在结构上尽可能一在结构上尽可能一在结构上尽可能一在结构上尽可能一致。致。致。致。面向对象方法学概述面向对象方法学概述1.面向对象方法学的要点面向对象方法学的要点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维2tjm面向对象方法具有下述面向对象方法具有下述面向对象方法具有下述面向对象方法具有下述4 4个要点:个要点:个要点:个要点:(1)(1)认为客观世界是由各种对象组成的,任何事物认为客观世界是由各种对象组成的,任何事物认为客观世界是由各种对象组成的,任何事物认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象都是对象,复杂的对象可以由比较简单的对象都是对象,复杂的对象可以由比较简单的对象都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。以某种方式组合而成。以某种方式组合而成。以某种方式组合而成。(2)(2)把所有对象都划分成各种对象类把所有对象都划分成各种对象类把所有对象都划分成各种对象类把所有对象都划分成各种对象类(简称为类,简称为类,简称为类,简称为类,class)class),每个对象类都定义了一组数据和一组,每个对象类都定义了一组数据和一组,每个对象类都定义了一组数据和一组,每个对象类都定义了一组数据和一组方法。方法。方法。方法。(3)(3)按照子类按照子类按照子类按照子类(或称为派生类或称为派生类或称为派生类或称为派生类)与父类与父类与父类与父类(或称为基类或称为基类或称为基类或称为基类)的的的的关系,把若干个对象类组成一个层次结构的系关系,把若干个对象类组成一个层次结构的系关系,把若干个对象类组成一个层次结构的系关系,把若干个对象类组成一个层次结构的系统统统统(也称为类等级也称为类等级也称为类等级也称为类等级)。(4)(4)对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。面向对象方法具有下述4个要点:3tjm 面向对象就是运用对象、类、继承、封面向对象就是运用对象、类、继承、封装、消息、结构与连接等面向对象的概念对装、消息、结构与连接等面向对象的概念对问题进行分析、求解的系统开发技术,或者问题进行分析、求解的系统开发技术,或者说,是以说,是以对象(类)对象(类)为为数据中心数据中心、对象之间、对象之间的的动态行为模式动态行为模式为为运行机制运行机制的一种问题求解的一种问题求解方法。用公式可表示为:方法。用公式可表示为:面向对象面向对象=对象对象+类类+继承继承+封装封装+消息消息+结构与结构与连接连接 面向对象就是运用对象、类、继承、封装、消息、结4tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 也就是说,面向对象就是既使用对象又使也就是说,面向对象就是既使用对象又使也就是说,面向对象就是既使用对象又使也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过用类和继承等机制,而且对象之间仅能通过用类和继承等机制,而且对象之间仅能通过用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。传递消息实现彼此通信。传递消息实现彼此通信。传递消息实现彼此通信。如果仅使用对象和消息,则这种方法可以称如果仅使用对象和消息,则这种方法可以称如果仅使用对象和消息,则这种方法可以称如果仅使用对象和消息,则这种方法可以称为基于对象的为基于对象的为基于对象的为基于对象的(object-based)(object-based)方法,而不能称方法,而不能称方法,而不能称方法,而不能称为面向对象的方法;如果进一步要求把所有为面向对象的方法;如果进一步要求把所有为面向对象的方法;如果进一步要求把所有为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类对象都划分为类,则这种方法可称为基于类对象都划分为类,则这种方法可称为基于类对象都划分为类,则这种方法可称为基于类的的的的(class-based)(class-based)方法,但仍然不是面向对象方法,但仍然不是面向对象方法,但仍然不是面向对象方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消的方法。只有同时使用对象、类、继承和消的方法。只有同时使用对象、类、继承和消的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。息的方法,才是真正面向对象的方法。息的方法,才是真正面向对象的方法。息的方法,才是真正面向对象的方法。也就是说,面向对象就是既使用对象又使用类和继承等机5tjm1 1)与人类习惯的思维方法一致)与人类习惯的思维方法一致)与人类习惯的思维方法一致)与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法,传统的程序设计技术是面向过程的设计方法,传统的程序设计技术是面向过程的设计方法,传统的程序设计技术是面向过程的设计方法,这种方法以算法为核心,把数据和过程作为相互独这种方法以算法为核心,把数据和过程作为相互独这种方法以算法为核心,把数据和过程作为相互独这种方法以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码立的部分,数据代表问题空间中的客体,程序代码立的部分,数据代表问题空间中的客体,程序代码立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。则用于处理这些数据。则用于处理这些数据。则用于处理这些数据。2 2)稳定性好稳定性好稳定性好稳定性好 传统的软件开发方法以算法为核心,开发过程传统的软件开发方法以算法为核心,开发过程传统的软件开发方法以算法为核心,开发过程传统的软件开发方法以算法为核心,开发过程基于功能分析和功能分解。用传统方法所建立起来基于功能分析和功能分解。用传统方法所建立起来基于功能分析和功能分解。用传统方法所建立起来基于功能分析和功能分解。用传统方法所建立起来的软件系统的结构紧密依赖于系统所要完成的功能,的软件系统的结构紧密依赖于系统所要完成的功能,的软件系统的结构紧密依赖于系统所要完成的功能,的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。当功能需求发生变化时将引起软件结构的整体修改。当功能需求发生变化时将引起软件结构的整体修改。当功能需求发生变化时将引起软件结构的整体修改。事实上,用户需求变化大部分是针对功能的,因此,事实上,用户需求变化大部分是针对功能的,因此,事实上,用户需求变化大部分是针对功能的,因此,事实上,用户需求变化大部分是针对功能的,因此,这样的软件系统是不稳定的。这样的软件系统是不稳定的。这样的软件系统是不稳定的。这样的软件系统是不稳定的。2.面向对象方法学的优点面向对象方法学的优点1)与人类习惯的思维方法一致2.面向对象方法学的优点6tjm3 3)可重用性好)可重用性好)可重用性好)可重用性好 用已有的零部件装配新的产品,是典型的重用用已有的零部件装配新的产品,是典型的重用用已有的零部件装配新的产品,是典型的重用用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和技术,例如,可以用已有的预制件建筑一幢结构和技术,例如,可以用已有的预制件建筑一幢结构和技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的外形都不同于从前的新大楼。重用是提高生产率的外形都不同于从前的新大楼。重用是提高生产率的外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。最主要的方法。最主要的方法。最主要的方法。4 4)较易开发大型软件产品)较易开发大型软件产品)较易开发大型软件产品)较易开发大型软件产品 在开发大型软件产品时,组织开发人员的方法在开发大型软件产品时,组织开发人员的方法在开发大型软件产品时,组织开发人员的方法在开发大型软件产品时,组织开发人员的方法不恰当往往是出现问题的主要原因。用面向对象方不恰当往往是出现问题的主要原因。用面向对象方不恰当往往是出现问题的主要原因。用面向对象方不恰当往往是出现问题的主要原因。用面向对象方法学开发软件时,构成软件系统的每个对象就像一法学开发软件时,构成软件系统的每个对象就像一法学开发软件时,构成软件系统的每个对象就像一法学开发软件时,构成软件系统的每个对象就像一个微型程序,有自己的数据、操作、功能和用途,个微型程序,有自己的数据、操作、功能和用途,个微型程序,有自己的数据、操作、功能和用途,个微型程序,有自己的数据、操作、功能和用途,因此,可以把一个大型软件产品分解成一系列本质因此,可以把一个大型软件产品分解成一系列本质因此,可以把一个大型软件产品分解成一系列本质因此,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理。上相互独立的小产品来处理。上相互独立的小产品来处理。上相互独立的小产品来处理。3)可重用性好7tjm5 5)可维护性好)可维护性好)可维护性好)可维护性好 用传统方法和面向过程语言开发出来的软件很用传统方法和面向过程语言开发出来的软件很用传统方法和面向过程语言开发出来的软件很用传统方法和面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,是软件难维护,是长期困扰人们的一个严重问题,是软件难维护,是长期困扰人们的一个严重问题,是软件难维护,是长期困扰人们的一个严重问题,是软件危机的突出表现。危机的突出表现。危机的突出表现。危机的突出表现。由于下述因素的存在,使得用面向对象方法所开发由于下述因素的存在,使得用面向对象方法所开发由于下述因素的存在,使得用面向对象方法所开发由于下述因素的存在,使得用面向对象方法所开发的软件可维护性好:的软件可维护性好:的软件可维护性好:的软件可维护性好:(1 1)面向对象的软件稳定性比较好。面向对象的软件稳定性比较好。面向对象的软件稳定性比较好。面向对象的软件稳定性比较好。(2 2)面向对象的软件比较容易修改。面向对象的软件比较容易修改。面向对象的软件比较容易修改。面向对象的软件比较容易修改。(3 3)面向对象的软件比较容易理解。面向对象的软件比较容易理解。面向对象的软件比较容易理解。面向对象的软件比较容易理解。(4 4)易于测试和调试。易于测试和调试。易于测试和调试。易于测试和调试。5)可维护性好8tjm迭代是软件开发过程迭代是软件开发过程迭代是软件开发过程迭代是软件开发过程中普遍存在的一种内中普遍存在的一种内中普遍存在的一种内中普遍存在的一种内在属性。经验表明,在属性。经验表明,在属性。经验表明,在属性。经验表明,软件过程各个阶段之软件过程各个阶段之软件过程各个阶段之软件过程各个阶段之间的迭代或一个阶段间的迭代或一个阶段间的迭代或一个阶段间的迭代或一个阶段内各个工作步骤之间内各个工作步骤之间内各个工作步骤之间内各个工作步骤之间的迭代,在面向对象的迭代,在面向对象的迭代,在面向对象的迭代,在面向对象范型中比在结构化范范型中比在结构化范范型中比在结构化范范型中比在结构化范型中更常见。型中更常见。型中更常见。型中更常见。“喷泉喷泉喷泉喷泉”这个词体现这个词体现这个词体现这个词体现了面向对象软件开发了面向对象软件开发了面向对象软件开发了面向对象软件开发过程迭代和无缝的特过程迭代和无缝的特过程迭代和无缝的特过程迭代和无缝的特性。性。性。性。喷泉模型喷泉模型喷泉模型喷泉模型迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过9tjm 由描述该对象属性的数据以及可以对这些数据由描述该对象属性的数据以及可以对这些数据由描述该对象属性的数据以及可以对这些数据由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可施加的所有操作封装在一起构成的统一体。对象可施加的所有操作封装在一起构成的统一体。对象可施加的所有操作封装在一起构成的统一体。对象可以作的操作表示它的动态行为,在面向对象分析和以作的操作表示它的动态行为,在面向对象分析和以作的操作表示它的动态行为,在面向对象分析和以作的操作表示它的动态行为,在面向对象分析和面向对象设计中,通常把对象的操作称为服务或方面向对象设计中,通常把对象的操作称为服务或方面向对象设计中,通常把对象的操作称为服务或方面向对象设计中,通常把对象的操作称为服务或方法。法。法。法。面向对象的基本概念面向对象的基本概念1、对象对象 对象是人们要进行研究的任何事物,具体一对象是人们要进行研究的任何事物,具体一对象是人们要进行研究的任何事物,具体一对象是人们要进行研究的任何事物,具体一点讲就是研究对象。它可以是有形实体,也可以点讲就是研究对象。它可以是有形实体,也可以点讲就是研究对象。它可以是有形实体,也可以点讲就是研究对象。它可以是有形实体,也可以是作用、事件、性能说明等,当然,如果朋友成是作用、事件、性能说明等,当然,如果朋友成是作用、事件、性能说明等,当然,如果朋友成是作用、事件、性能说明等,当然,如果朋友成为你研究的对象时,对象也可以是你的朋友。为你研究的对象时,对象也可以是你的朋友。为你研究的对象时,对象也可以是你的朋友。为你研究的对象时,对象也可以是你的朋友。由描述该对象属性的数据以及可以对这些数据施加的10tjm2 )对象的定义对象的定义目前,对对象所下的定义并不完全统一,人们从不目前,对对象所下的定义并不完全统一,人们从不目前,对对象所下的定义并不完全统一,人们从不目前,对对象所下的定义并不完全统一,人们从不同角度给出对象的不同定义。这些定义虽然形式不同角度给出对象的不同定义。这些定义虽然形式不同角度给出对象的不同定义。这些定义虽然形式不同角度给出对象的不同定义。这些定义虽然形式不同,但基本含义是相同的。同,但基本含义是相同的。同,但基本含义是相同的。同,但基本含义是相同的。(1)(1)定义定义定义定义1 1:对象是具有相同状态的一组操作的集对象是具有相同状态的一组操作的集对象是具有相同状态的一组操作的集对象是具有相同状态的一组操作的集合。合。合。合。这个定义主要是从面向对象程序设计的角度看这个定义主要是从面向对象程序设计的角度看这个定义主要是从面向对象程序设计的角度看这个定义主要是从面向对象程序设计的角度看“对对对对象象象象”。(2)(2)定义定义定义定义2 2:对象是对问题域中某个东西的抽象,对象是对问题域中某个东西的抽象,对象是对问题域中某个东西的抽象,对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与这种抽象反映了系统保存有关这个东西的信息或与这种抽象反映了系统保存有关这个东西的信息或与这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作它交互的能力。也就是说,对象是对属性值和操作它交互的能力。也就是说,对象是对属性值和操作它交互的能力。也就是说,对象是对属性值和操作的封装。的封装。的封装。的封装。这个定义着重从信息模拟的角度看待这个定义着重从信息模拟的角度看待这个定义着重从信息模拟的角度看待这个定义着重从信息模拟的角度看待“对象对象对象对象”。2 )对象的定义11tjm(3)(3)定义定义定义定义3 3:对象对象对象对象 =ID,MS,DS,MIID,MS,DS,MI。其中,。其中,。其中,。其中,IDID是对象的标识或名字,是对象的标识或名字,是对象的标识或名字,是对象的标识或名字,MSMS是对象中的操作集合,是对象中的操作集合,是对象中的操作集合,是对象中的操作集合,DSDS是对象的数据结构,是对象的数据结构,是对象的数据结构,是对象的数据结构,MIMI是对象受理的消息名集是对象受理的消息名集是对象受理的消息名集是对象受理的消息名集合合合合(即对外接口即对外接口即对外接口即对外接口)。这个定义是一个形式化的定义。这个定义是一个形式化的定义。这个定义是一个形式化的定义。这个定义是一个形式化的定义。从动态角度或对象的实现机制来看,对象是一台自从动态角度或对象的实现机制来看,对象是一台自从动态角度或对象的实现机制来看,对象是一台自从动态角度或对象的实现机制来看,对象是一台自动机。具有内部状态动机。具有内部状态动机。具有内部状态动机。具有内部状态S S,操作,操作,操作,操作f fi i(i=1,2,n)(i=1,2,n),且与,且与,且与,且与操作操作操作操作f fi i对应的状态转换函数为对应的状态转换函数为对应的状态转换函数为对应的状态转换函数为g gi i(i=1,2,n)(i=1,2,n)的一个的一个的一个的一个对象,可以用下图所示的自动机来模拟。对象,可以用下图所示的自动机来模拟。对象,可以用下图所示的自动机来模拟。对象,可以用下图所示的自动机来模拟。(3)定义3:对象=ID,MS,DS,MI。其中,12tjm软件工程ppt-09面向对象方法学引论课件13tjm3)对象的特点对象的特点(1)(1)以数据为中心。以数据为中心。以数据为中心。以数据为中心。(2)(2)对象是主动的。对象是主动的。对象是主动的。对象是主动的。(3)(3)实现了数据封装。实现了数据封装。实现了数据封装。实现了数据封装。(4)(4)本质上具有并行性。本质上具有并行性。本质上具有并行性。本质上具有并行性。(5)(5)模块独立性好。模块独立性好。模块独立性好。模块独立性好。3)对象的特点14tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物3)对象的状态和行为对象的状态和行为 对象有自身的状态,比如你的对象有自身的状态,比如你的女朋友有她的姓名女朋友有她的姓名(张朋张朋)、年龄、年龄(25岁岁)、工作单位等状态。对象还有操作,用于工作单位等状态。对象还有操作,用于改变对象的状态,对象及其操作就是对改变对象的状态,对象及其操作就是对象的行为,比如象的行为,比如“张朋跳槽到某公司张朋跳槽到某公司”这个行为将使她的工作单位这个状态发这个行为将使她的工作单位这个状态发生变化。生变化。3)对象的状态和行为15tjm2、其他概念、其他概念1 1)类类类类(class)(class)在面向对象的软件技术中,在面向对象的软件技术中,在面向对象的软件技术中,在面向对象的软件技术中,具有相同或相似性质的具有相同或相似性质的具有相同或相似性质的具有相同或相似性质的对象的抽象就是类。如桃树、李树、樟树等是具体对象的抽象就是类。如桃树、李树、樟树等是具体对象的抽象就是类。如桃树、李树、樟树等是具体对象的抽象就是类。如桃树、李树、樟树等是具体的树,抽象之后得到的树,抽象之后得到的树,抽象之后得到的树,抽象之后得到“树树树树”这个类。类具有属性,这个类。类具有属性,这个类。类具有属性,这个类。类具有属性,属性是状态的抽象,如一棵李树的高度是属性是状态的抽象,如一棵李树的高度是属性是状态的抽象,如一棵李树的高度是属性是状态的抽象,如一棵李树的高度是3 3 3 3米,樟米,樟米,樟米,樟树是树是树是树是10101010米,树则抽象出一个属性米,树则抽象出一个属性米,树则抽象出一个属性米,树则抽象出一个属性“高度高度高度高度”。类具有。类具有。类具有。类具有操作,它是对象行为的抽象。操作,它是对象行为的抽象。操作,它是对象行为的抽象。操作,它是对象行为的抽象。2、其他概念1)类(class)16tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物类的结构类的结构 类的结构有两种,一种是类的结构有两种,一种是“一般一般-具具体体”结构,如植物、树都是类,它们之结构,如植物、树都是类,它们之间是抽象到具体的关系,即树是一种间是抽象到具体的关系,即树是一种(is a)is a)植物。还有一种就是植物。还有一种就是“整体整体-部部分分”结构,如计算机是类、结构,如计算机是类、CPUCPU也是类,也是类,则计算机与则计算机与CPUCPU之间就是整体与部分的之间就是整体与部分的关系,即计算机有一个关系,即计算机有一个(has a)CPUhas a)CPU。类的结构17tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物实例实例实例实例(instance)(instance)实例就是由某个特定的类所描述的一个具体的对象。实例就是由某个特定的类所描述的一个具体的对象。实例就是由某个特定的类所描述的一个具体的对象。实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽类是对具有相同属性和行为的一组相似的对象的抽类是对具有相同属性和行为的一组相似的对象的抽类是对具有相同属性和行为的一组相似的对象的抽象,类在现实世界中并不能真正存在。象,类在现实世界中并不能真正存在。象,类在现实世界中并不能真正存在。象,类在现实世界中并不能真正存在。当使用当使用当使用当使用“对象对象对象对象”这个术语时,既可以指一个具体的这个术语时,既可以指一个具体的这个术语时,既可以指一个具体的这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用对象,也可以泛指一般的对象,但是,当使用对象,也可以泛指一般的对象,但是,当使用对象,也可以泛指一般的对象,但是,当使用“实实实实例例例例”这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。实例(instance)18tjm3 3)消息)消息)消息)消息(message)(message)消息就是要求某个对象执行在定义它的那个类中所定消息就是要求某个对象执行在定义它的那个类中所定消息就是要求某个对象执行在定义它的那个类中所定消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。即义的某个操作的规格说明。即义的某个操作的规格说明。即义的某个操作的规格说明。即对象之间进行通信的构对象之间进行通信的构对象之间进行通信的构对象之间进行通信的构造。比如张朋是一个对象,上司发出一个出差通知消造。比如张朋是一个对象,上司发出一个出差通知消造。比如张朋是一个对象,上司发出一个出差通知消造。比如张朋是一个对象,上司发出一个出差通知消息:张朋出差到深圳。这样,相应的对象接收到这个息:张朋出差到深圳。这样,相应的对象接收到这个息:张朋出差到深圳。这样,相应的对象接收到这个息:张朋出差到深圳。这样,相应的对象接收到这个消息就会给予响应。消息就会给予响应。消息就会给予响应。消息就会给予响应。通常,一个消息由下述通常,一个消息由下述通常,一个消息由下述通常,一个消息由下述3 3部分组成:部分组成:部分组成:部分组成:接收消息的对象;接收消息的对象;接收消息的对象;接收消息的对象;张朋张朋张朋张朋消息选择符消息选择符消息选择符消息选择符(也称为消息名也称为消息名也称为消息名也称为消息名);出差通知出差通知出差通知出差通知零个或多个变元。零个或多个变元。零个或多个变元。零个或多个变元。张朋出差到深圳张朋出差到深圳张朋出差到深圳张朋出差到深圳3)消息(message)19tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物4 4)方法)方法)方法)方法(method)(method)方法就是对象所能执行的操作,也就是类中所定义方法就是对象所能执行的操作,也就是类中所定义方法就是对象所能执行的操作,也就是类中所定义方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应的服务。方法描述了对象执行操作的算法,响应的服务。方法描述了对象执行操作的算法,响应的服务。方法描述了对象执行操作的算法,响应消息的方法。在消息的方法。在消息的方法。在消息的方法。在C+C+语言中把方法称为成员函数。语言中把方法称为成员函数。语言中把方法称为成员函数。语言中把方法称为成员函数。比如张朋是一个对象,上司发出一个消息:张比如张朋是一个对象,上司发出一个消息:张比如张朋是一个对象,上司发出一个消息:张比如张朋是一个对象,上司发出一个消息:张朋出差到深圳。这样,相应的对象接收到这个消朋出差到深圳。这样,相应的对象接收到这个消朋出差到深圳。这样,相应的对象接收到这个消朋出差到深圳。这样,相应的对象接收到这个消息就会给予响应,在这个消息中,张朋是息就会给予响应,在这个消息中,张朋是息就会给予响应,在这个消息中,张朋是息就会给予响应,在这个消息中,张朋是对象名对象名对象名对象名,出差到就是出差到就是出差到就是出差到就是方法名方法名方法名方法名,深圳就是,深圳就是,深圳就是,深圳就是参数参数参数参数。在类中操作。在类中操作。在类中操作。在类中操作的实现过程叫做的实现过程叫做的实现过程叫做的实现过程叫做方法方法方法方法。上面的出差到。上面的出差到。上面的出差到。上面的出差到(某地某地某地某地)这个这个这个这个方法如何实现呢,就是买车票,乘车到某地。这方法如何实现呢,就是买车票,乘车到某地。这方法如何实现呢,就是买车票,乘车到某地。这方法如何实现呢,就是买车票,乘车到某地。这个过程就是方法。个过程就是方法。个过程就是方法。个过程就是方法。4)方法(method)20tjm5 5)属性)属性)属性)属性(attribute)(attribute)属性就是类中所定义的数据,它是对客观世界属性就是类中所定义的数据,它是对客观世界属性就是类中所定义的数据,它是对客观世界属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己实体所具有的性质的抽象。类的每个实例都有自己实体所具有的性质的抽象。类的每个实例都有自己实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。特有的属性值。特有的属性值。特有的属性值。在在在在C+C+语言中把属性称为数据成员语言中把属性称为数据成员语言中把属性称为数据成员语言中把属性称为数据成员6 6)封装)封装)封装)封装(encapsulation)(encapsulation)在面向对象的程序中,把数据和实现操作的代在面向对象的程序中,把数据和实现操作的代在面向对象的程序中,把数据和实现操作的代在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。一个对象好像是一个不码集中起来放在对象内部。一个对象好像是一个不码集中起来放在对象内部。一个对象好像是一个不码集中起来放在对象内部。一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的透明的黑盒子,表示对象状态的数据和实现操作的透明的黑盒子,表示对象状态的数据和实现操作的透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外面代码与局部数据,都被封装在黑盒子里面,从外面代码与局部数据,都被封装在黑盒子里面,从外面代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些数是看不见的,更不能从外面直接访问或修改这些数是看不见的,更不能从外面直接访问或修改这些数是看不见的,更不能从外面直接访问或修改这些数据和代码。据和代码。据和代码。据和代码。5)属性(attribute)21tjm对象具有封装性的条件如下:对象具有封装性的条件如下:对象具有封装性的条件如下:对象具有封装性的条件如下:(1 1)有一个清晰的边界。所有私有数据和实现操有一个清晰的边界。所有私有数据和实现操有一个清晰的边界。所有私有数据和实现操有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更作的代码都被封装在这个边界内,从外面看不见更作的代码都被封装在这个边界内,从外面看不见更作的代码都被封装在这个边界内,从外面看不见更不能直接访问。不能直接访问。不能直接访问。不能直接访问。(2 2)有确定的接口(即协议)。这些接口就是对有确定的接口(即协议)。这些接口就是对有确定的接口(即协议)。这些接口就是对有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使象可以接受的消息,只能通过向对象发送消息来使象可以接受的消息,只能通过向对象发送消息来使象可以接受的消息,只能通过向对象发送消息来使用它。用它。用它。用它。(3 3)受保护的内部实现。实现对象功能的细节受保护的内部实现。实现对象功能的细节受保护的内部实现。实现对象功能的细节受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围(私有数据和代码)不能在定义该对象的类的范围(私有数据和代码)不能在定义该对象的类的范围(私有数据和代码)不能在定义该对象的类的范围外访问。外访问。外访问。外访问。对象具有封装性的条件如下:22tjm7 7)继承)继承)继承)继承(inheritance)(inheritance)广义地说,继承是指能够直接获得已有的性质和特广义地说,继承是指能够直接获得已有的性质和特广义地说,继承是指能够直接获得已有的性质和特广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术征,而不必重复定义它们。在面向对象的软件技术征,而不必重复定义它们。在面向对象的软件技术征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方中,继承是子类自动地共享基类中定义的数据和方中,继承是子类自动地共享基类中定义的数据和方中,继承是子类自动地共享基类中定义的数据和方法的机制。下图描绘了实现继承机制的原理:法的机制。下图描绘了实现继承机制的原理:法的机制。下图描绘了实现继承机制的原理:法的机制。下图描绘了实现继承机制的原理:7)继承(inheritance)23tjm8 8)多态性)多态性)多态性)多态性(polymorphism)(polymorphism)多态性是指子类对象可以像父类对象那样使用,多态性是指子类对象可以像父类对象那样使用,多态性是指子类对象可以像父类对象那样使用,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子同样的消息既可以发送给父类对象也可以发送给子同样的消息既可以发送给父类对象也可以发送给子同样的消息既可以发送给父类对象也可以发送给子类对象。类对象。类对象。类对象。在在在在C+C+语言中,多态性是通过虚函数来实现的。语言中,多态性是通过虚函数来实现的。语言中,多态性是通过虚函数来实现的。语言中,多态性是通过虚函数来实现的。在类等级不同层次中可以说明名字、参数特征和返在类等级不同层次中可以说明名字、参数特征和返在类等级不同层次中可以说明名字、参数特征和返在类等级不同层次中可以说明名字、参数特征和返回值类型都相同的虚拟成员函数,而不同层次的类回值类型都相同的虚拟成员函数,而不同层次的类回值类型都相同的虚拟成员函数,而不同层次的类回值类型都相同的虚拟成员函数,而不同层次的类中的虚函数实现算法各不相同。虚函数机制使得程中的虚函数实现算法各不相同。虚函数机制使得程中的虚函数实现算法各不相同。虚函数机制使得程中的虚函数实现算法各不相同。虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版序员能在一个类等级中使用相同函数的多个不同版序员能在一个类等级中使用相同函数的多个不同版序员能在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据接收消息的对象所属于的类,本,在运行时刻才根据接收消息的对象所属于的类,本,在运行时刻才根据接收消息的对象所属于的类,本,在运行时刻才根据接收消息的对象所属于的类,决定到底执行哪个特定的版本,这称为决定到底执行哪个特定的版本,这称为决定到底执行哪个特定的版本,这称为决定到底执行哪个特定的版本,这称为动态联编动态联编动态联编动态联编,也叫也叫也叫也叫滞后联编滞后联编滞后联编滞后联编。8)多态性(polymorphism)24tjm9 9)重载)重载)重载)重载(overloading)(overloading)有两种重载:函数重载是指在同一作用域内的有两种重载:函数重载是指在同一作用域内的有两种重载:函数重载是指在同一作用域内的有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名若干个参数特征不同的函数可以使用相同的函数名若干个参数特征不同的函数可以使用相同的函数名若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同字;运算符重载是指同一个运算符可以施加于不同字;运算符重载是指同一个运算符可以施加于不同字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操类型的操作数上面。当然,当参数特征不同或被操类型的操作数上面。当然,当参数特征不同或被操类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语作数的类型不同时,实现函数的算法或运算符的语作数的类型不同时,实现函数的算法或运算符的语作数的类型不同时,实现函数的算法或运算符的语义是不相同的。义是不相同的。义是不相同的。义是不相同的。在在在在C+C+语言中函数重载是通过静态联编语言中函数重载是通过静态联编语言中函数重载是通过静态联编语言中函数重载是通过静态联编(也叫先也叫先也叫先也叫先前联编前联编前联编前联编)实现的。实现的。实现的。实现的。9)重载(overloading)25tjm 所谓模型,就是为了理解事物而对事物作出的所谓模型,就是为了理解事物而对事物作出的所谓模型,就是为了理解事物而对事物作出的所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通一种抽象,是对事物的一种无歧义的书面描述。通一种抽象,是对事物的一种无歧义的书面描述。通一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图示符号和组织这些符号的规则组常,模型由一组图示符号和组织这些符号的规则组常,模型由一组图示符号和组织这些符号的规则组常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。成,利用它们来定义和描述问题域中的术语和概念。成,利用它们来定义和描述问题域中的术语和概念。成,利用它们来定义和描述问题域中的术语和概念。为了开发复杂的软件系统,系统分析员应该从不同为了开发复杂的软件系统,系统分析员应该从不同为了开发复杂的软件系统,系统分析员应该从不同为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法角度抽象出目标系统的特性,使用精确的表示方法角度抽象出目标系统的特性,使用精确的表示方法角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系构造系统的模型,验证模型是否满足用户对目标系构造系统的模型,验证模型是否满足用户对目标系构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细统的需求,并在设计过程中逐渐把和实现有关的细统的需求,并在设计过程中逐渐把和实现有关的细统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。节加进模型中,直至最终用程序实现模型。节加进模型中,直至最终用程序实现模型。节加进模型中,直至最终用程序实现模型。面向对象建模面向对象建模 所谓模型,就是为了理解事物而对事物作出的一种抽象,26tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 面向对象的建模分析从概念上分为二个面向对象的建模分析从概念上分为二个层次。层次。问题分析:问题分析:主要任务是收集并确认用户主要任务是收集并确认用户的需求信息,对实际问题进行的需求信息,对实际问题进行功能分析功能分析和和过程分析过程分析。应用分析:应用分析:主要任务是主要任务是动态描述动态描述系统中系统中对象的对象的合法状态序列合法状态序列。面向对象的建模分析从概念上分为二个层次。27tjm 在对目标系统进行分析的初始阶段,面对大量在对目标系统进行分析的初始阶段,面对大量在对目标系统进行分析的初始阶段,面对大量在对目标系统进行分析的初始阶段,面对大量模糊的、涉及众多专业领域的、错综复杂的信息,模糊的、涉及众多专业领域的、错综复杂的信息,模糊的、涉及众多专业领域的、错综复杂的信息,模糊的、涉及众多专业领域的、错综复杂的信息,系统分析员往往感到无从下手。模型提供了组织大系统分析员往往感到无从下手。模型提供了组织大系统分析员往往感到无从下手。模型提供了组织大系统分析员往往感到无从下手。模型提供了组织大量信息的一种有效机制。量信息的一种有效机制。量信息的一种有效机制。量信息的一种有效机制。通常,用户和领域专家可以通过快速建立的原通常,用户和领域专家可以通过快速建立的原通常,用户和领域专家可以通过快速建立的原通常,用户和领域专家可以通过快速建立的原型亲身体验,从而对系统模型进行更有效的审查。型亲身体验,从而对系统模型进行更有效的审查。型亲身体验,从而对系统模型进行更有效的审查。型亲身体验,从而对系统模型进行更有效的审查。在对目标系统进行分析的初始阶段,面对大量模糊的、28tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1.1.面向对象的模型面向对象的模型面向对象的模型包括三个面向对象的模型包括三个,它们分它们分别是:别是:描述系统描述系统数据结构数据结构的的对象模型对象模型。描述系统描述系统控制结构控制结构的的动态模型动态模型。描述系统描述系统功能功能的的功能模型功能模型。1.面向对象的模型29tjm 对象模型表示静态的、结构化的系统的对象模型表示静态的、结构化的系统的对象模型表示静态的、结构化的系统的对象模型表示静态的、结构化的系统的“数据数据数据数据”性质。它是对模拟客观世界实体的对象以及对象彼性质。它是对模拟客观世界实体的对象以及对象彼性质。它是对模拟客观世界实体的对象以及对象彼性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的此间的关系的映射,描述了系统的此间的关系的映射,描述了系统的此间的关系的映射,描述了系统的静态结构静态结构静态结构静态结构。它从它从它从它从客观世界实体对象的关系角度来描述,表现了对象客观世界实体对象的关系角度来描述,表现了对象客观世界实体对象的关系角度来描述,表现了对象客观世界实体对象的关系角度来描述,表现了对象的相互关系。事实上,这个模型可以当作扩充的实的相互关系。事实上,这个模型可以当作扩充的实的相互关系。事实上,这个模型可以当作扩充的实的相互关系。事实上,这个模型可以当作扩充的实体体体体关系模型(关系模型(关系模型(关系模型(E-RE-RE-RE-R)。)。)。)。面向对象方法强调围绕对象而不是围绕功能来构面向对象方法强调围绕对象而不是围绕功能来构面向对象方法强调围绕对象而不是围绕功能来构面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提造系统。对象模型为建立动态模型和功能模型,提造系统。对象模型为建立动态模型和功能模型,提造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。供了实质性的框架。供了实质性的框架。供了实质性的框架。对象模型对象模型 对象模型表示静态的、结构化的系统的“数据”性质。它是30tjm我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1.1.类图的基本符号类图的基本符号类图的基本符号类图的基本符号 类图描述类及类与类之间的静态关系。类图是一种类图描述类及类与类之间的静态关系。类图是一种类图描述类及类与类之间的静态关系。类图是一种类图描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其他静态模型,它是创建其他静态模型,它是创建其他静态模型,它是创建其他UMLUML图的基础。一个系统可图的基础。一个系统可图的基础。一个系统可图的基础。一个系统可以由多张类图来描述,一个类也可以出现在几张类图以由多张类图来描述,一个类也可以出现在几张类图以由多张类图来描述,一个类也可以出现在几张类图以由多张类图来描述,一个类也可以出现在几张类图中。中。中。中。1.类图的基本符号 类图描述类及类与类之间的静态关系。31tjm1)定义类)定义类UMLUML中类的图形符号为长方形,用两条横线把长方中类的图形符号为长方形,用两条横线把长方中类的图形符号为长方形,用两条横线把长方中类的图形符号为长方形,用两条横线把长方形分成上、中、下形分成上、中、下形分成上、中、下形分成上、中、下3 3个区域(下面两个区域可省略),个区域(下面两个区域可省略),个区域(下面两个区域可省略),个区域(下面两个区域可省略),3 3个区域分别放类的名字、属性和服务。个区域分别放类的名字、属性和服务。个区域分别放类的名字、属性和服务。个区域分别放类的名字、属性和服务。表示类的图表示类的图表示类的图表示类的图1)定义类表示类的图32tjm 类名是一类对象的名字。命名是否恰当对系统的类名是一类对象的名字。命名是否恰当对系统的类名是一类对象的名字。命名是否恰当对系统的类名是一类对象的名字。命名是否恰当对系统的可理解性影响相当大,因此,为类命名时应该遵守可理解性影响相当大,因此,为类命名时应该遵守可理解性影响相当大,因此,为类命名时应该遵守可理解性影响相当大,因此,为类命名时应该遵守以下几条准则:以下几条准则:以下几条准则:以下几条准则:(1)(1)使用标准术语。例如,使用标准术语。例如,使用标准术语。例如,使用标准术语。例如,“交通信号灯交通信号灯交通信号灯交通信号灯”比比比比“信信信信号单元号单元号单元号单元”这个名字好,这个名字好,这个名字好,这个名字好,“传送带传送带传送带传送带”比比比比“零件传送设零件传送设零件传送设零件传送设备备备备”好。好。好。好。(2)(2)使用具有确切含义的名词。例如,使用具有确切含义的名词。例如,使用具有确切含义的名词。例如,使用具有确切含义的名词。例如,“库房库房库房库房”比比比比“房屋房屋房屋房屋”或或或或“存物场所存物场所存物场所存物场所”更确切。更确切。更确切。更确切。(3)(3)必要时用名词短语作名字。例如,必要时用名词短语作名字。例如,必要时用名词短语作名字。例如,必要时用名词短语作名字。例如,“最小的领最小的领最小的领最小的领土单元土单元土单元土单元”、“储藏室储藏室储藏室储藏室”、“公司员工公司员工公司员工公司员工”等都是比较等都是比较等都是比较等都是比较恰当的名字。恰当的名字。恰当的名字。恰当的名字。类名是一类对象的名字。命名是否恰当对系统的可理解性影响33tjm2)定义属性)定义属性UMLUML描述属性的语法格式如下:描述属性的语法格式如下:描述属性的语法格式如下:描述属性的语法格式如下:可见性可见性可见性可见性 属性名:属性名:属性名:属性名:类型名类型名类型名类型名=初值初值初值初值 性质串性质串性质串性质串 属性的可见性(即可访问性)通常有下述属性的可见性(即可访问性)通常有下述属性的可见性(即可访问性)通常有下述属性的可见性(即可访问性)通常有下述3 3种:公种:公种:公种:公有的有的有的有的(public)(public)、私有的、私有的、私有的、私有的(private)(private)和保护的和保护的和保护的和保护的(protected)(protected),分别用加号(,分别用加号(,分别用加号(,分别用加号(+)、减号()、减号()、减号()、减号(-)和井号)和井号)和井号)和井号(#)表示。如果未声明可见性,则表示该属性的)表示。如果未声明可见性,则表示该属性的)表示。如果未声明可见性,则表示该属性的)表示。如果未声明可见性,则表示该属性的可见性尚未定义。注意,没有默认的可见性。可见性尚未定义。注意,没有默认的可见性。可见性尚未定义。注意,没有默认的可见性。可见性尚未定义。注意,没有默认的可见性。属性名和类型名之间用冒号(:)分隔。类型名表属性名和类型名之间用冒号(:)分隔。类型名表属性名和类型名之间用冒号(:)分隔。类型名表属性名和类型名之间用冒号(:)分隔。类型名表示该属性的数据类型,它可以是基本数据类型,也示该属性的数据类型,它可以是基本数据类型,也示该属性的数据类型,它可以是基本数据类型,也示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型。可以是用户自定义的类型。可以是用户自定义的类型。可以是用户自定义的类型。2)定义属性34tjm 在创建类的实例时应给其属性赋值,如果给某在创建类的实例时应给其属性赋值,如果给某在创建类的实例时应给其属性赋值,如果给某在创建类的实例时应给其属性赋值,如果给某个属性定义了初值,则该初值可作为创建实例时这个属性定义了初值,则该初值可作为创建实例时这个属性定义了初值,则该初值可作为创建实例时这个属性定义了初值,则该初值可作为创建实例时这个属性的默认值。类型名和初值之间用等号(个属性的默认值。类型名和初值之间用等号(个属性的默认值。类型名和初值之间用等号(个属性的默认值。类型名和初值之间用等号(=)隔开。隔开。隔开。隔开。用花括号括起来的性质串明确地列出该属性所用花括号括起来的性质串明确地列出该属性所用花括号括起来的性质串明确地列出该属性所用花括号括起来的性质串明确地列出该属性所有可能的取值。枚举类型的属性往往用性质串列出有可能的取值。枚举类型的属性往往用性质串列出有可能的取值。枚举类型的属性往往用性质串列出有可能的取值。枚举类型的属性往往用性质串列出可以选用的枚举值,不同枚举值之间用逗号分隔。可以选用的枚举值,不同枚举值之间用逗号分隔。可以选用的枚举值,不同枚举值之间用逗号分隔。可以选用的枚举值,不同枚举值之间用逗号分隔。也可以用性质串说明属性的其他性质,例如,约束也可以用性质串说明属性的其他性质,例如,约束也可以用性质串说明属性的其他性质,例如,约束也可以用性质串说明属性的其他性质,例如,约束说明说明说明说明 只读只读只读只读 表明该属性是只读属性。表明该属性是只读属性。表明该属性是只读属性。表明该属性是只读属性。在创建类的实例时应给其属性赋值,如果给某个属性定35tjm例如,例如,例如,例如,“发货单发货单发货单发货单”类的属性类的属性类的属性类的属性“管理员管理员管理员管理员”,在,在,在,在UMLUML类类类类图中像下面那样描述:图中像下面那样描述:图中像下面那样描述:图中像下面那样描述:-管理员:管理员:管理员:管
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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