好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象程学设计部分课件OO概论.ppt

61页
  • 卖家[上传人]:cl****1
  • 文档编号:577045834
  • 上传时间:2024-08-21
  • 文档格式:PPT
  • 文档大小:842KB
  • / 61 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第一部分第一部分面向对象方法概论面向对象方法概论1 第一章第一章 面向对象方法面向对象方法* *概论概论1 1..1 1 传统开发方法中存在的问题传统开发方法中存在的问题1 1..2 2 面向对象的基本思想面向对象的基本思想1 1..3 3 面向对象的主要概念及基本原则面向对象的主要概念及基本原则 1 1..4 4 面向对象方法的主要优点面向对象方法的主要优点1 1..5 5 面向对象方法的发展史及现状简介面向对象方法的发展史及现状简介2 1..1 传统开发方法中存在的问题传统开发方法中存在的问题•在二十世纪六十年代以前在二十世纪六十年代以前在二十世纪六十年代以前在二十世纪六十年代以前 •软件系统都是较小且相对简单的软件系统都是较小且相对简单的软件系统都是较小且相对简单的软件系统都是较小且相对简单的•所用的编程语言都是十分简单所用的编程语言都是十分简单所用的编程语言都是十分简单所用的编程语言都是十分简单((((Fortran,CobolFortran,CobolFortran,CobolFortran,Cobol等等等等 ))))•时兴个人英雄注意,即崇尚程序员的个人技能时兴个人英雄注意,即崇尚程序员的个人技能时兴个人英雄注意,即崇尚程序员的个人技能时兴个人英雄注意,即崇尚程序员的个人技能 •代码是面条式的,特别是代码中含有代码是面条式的,特别是代码中含有代码是面条式的,特别是代码中含有代码是面条式的,特别是代码中含有GOTOGOTOGOTOGOTO语句语句语句语句 随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,因为这样的代码是很难维护的。

      因为这样的代码是很难维护的因为这样的代码是很难维护的因为这样的代码是很难维护的 高层次语言的引入有助于解决一些与复杂性有关的问题,但这些高层次语言的引入有助于解决一些与复杂性有关的问题,但这些高层次语言的引入有助于解决一些与复杂性有关的问题,但这些高层次语言的引入有助于解决一些与复杂性有关的问题,但这些语言并不是充分的语言并不是充分的语言并不是充分的语言并不是充分的 那时,无开发方法而言那时,无开发方法而言那时,无开发方法而言那时,无开发方法而言 3 1、功能分解法(、功能分解法(起于二十世纪七十年代起于二十世纪七十年代起于二十世纪七十年代起于二十世纪七十年代))功能分解法(function decomposition) 功能分解= 功能+子功能 +功能接口以系统需要提供的功能为中心来组织系统首先定义各种功能,然后把功能分解为子功能,同时定义功能之间的接口对较大的子功能进一步分解,直到可给出明确的定义根据功能/子功能的需要设计数据结构和算法 功能 功能 功能 系统 子功能子功能子功能子功能分解分解分解分解分解分解……………………工作过程:工作过程:一层层地进行功能分解一层层地进行功能分解4 功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块得到的系统模型:得到的系统模型:由模块及其接口构成由模块及其接口构成5 优点:优点:优点:优点:•当时的计算机应用还不是很普及,只是特定的用户当时的计算机应用还不是很普及,只是特定的用户按自己的需要,对软件系统做出了功能性的要求,按自己的需要,对软件系统做出了功能性的要求,有有据可寻据可寻。

      •在相当大的程度上,解决了以前存在的问题特别在相当大的程度上,解决了以前存在的问题特别是与模块化编程结合使用,效率更高是与模块化编程结合使用,效率更高•删除删除GOTOGOTO语句,使得软件能得到有效的维护语句,使得软件能得到有效的维护•与模块化编程相结合,使得软件能得到有效的维护与模块化编程相结合,使得软件能得到有效的维护 •适用于功能稳定的应用领域,如某些科学计算适用于功能稳定的应用领域,如某些科学计算•直接地反映用户的需求直接地反映用户的需求, ,所以工作很容易开始所以工作很容易开始6 缺点缺点::::•开头容易,结束难开头容易,结束难•结构化分析和设计注重处理功能,对所处理的数据放于次要的结构化分析和设计注重处理功能,对所处理的数据放于次要的位置•对于众多的领域而言,其功能是易变的,如企业管理和商业管对于众多的领域而言,其功能是易变的,如企业管理和商业管理对需求变化的适应能力很差对需求变化的适应能力很差•局部的错误和局部的修改很容易产生全局性的影响局部的错误和局部的修改很容易产生全局性的影响•不能直接地映射问题域,很难检验分析结果的正确性不能直接地映射问题域,很难检验分析结果的正确性。

      7 2 2、数据流法(结构化分析法)、数据流法(结构化分析法) 数据流法= 数据流+数据处理(加工)+数据存储+端点+处理说明+数据字典又称作结构化分析结构化分析基本策略是跟踪数据流,即研究问题域中数据如何流动以及在各个环节上进行何种处理,从而发现数据流和加工问题域被映射为数据流图(DFD),并用处理说明和数据字典进行详细说明数据流数据流加工加工数据存储数据存储端点端点处理说明处理说明————————————————————————数据词典数据词典————————————————————————8 数据流数据流加工加工数据存储数据存储端点端点处理说明处理说明数据字典数据字典跟踪数据流,从而发现数据跟踪数据流,从而发现数据流和加工流和加工•优点:优点:有严格的法则,逐步求精,较强调研究问题域有严格的法则,逐步求精,较强调研究问题域•缺点:缺点:•在概念上,不能直接地映射到在概念上,不能直接地映射到问题域中的事物问题域中的事物•对需求变化的适应能力较弱对需求变化的适应能力较弱•大系统数据流和加工的数量太多,引起分析文档的膨胀大系统数据流和加工的数量太多,引起分析文档的膨胀•系统复杂时,难以检验分析的正确性。

      系统复杂时,难以检验分析的正确性•分析与分析与设计的概念和设计的概念和表示法不一致,其转换规则也不严格表示法不一致,其转换规则也不严格1 19 上述的功能分解法和数据流发已经开发了很多软件系统上述的功能分解法和数据流发已经开发了很多软件系统对于功能稳定的应用领域,如某些科学计算,上述方法是适用对于功能稳定的应用领域,如某些科学计算,上述方法是适用的 对于众多的领域而言,其功能是易变的,如企业管理和商对于众多的领域而言,其功能是易变的,如企业管理和商业管理领域就是如此因为随着市场的变化,要对这些领域的业管理领域就是如此因为随着市场的变化,要对这些领域的管理模式不断地进行调整对于较为复杂的系统,用上述方法管理模式不断地进行调整对于较为复杂的系统,用上述方法进行软件开发,容易导致模块的低内聚和模块间的高耦合,从进行软件开发,容易导致模块的低内聚和模块间的高耦合,从而使得系统缺乏灵活性和可维护性而使得系统缺乏灵活性和可维护性 特别是由于当时团队的开发与管理方法的不足,使得在特别是由于当时团队的开发与管理方法的不足,使得在20世纪世纪70年代的软件危机情况更加严重。

      年代的软件危机情况更加严重 为了解决软件危机,人们对开发技术进行了一定的改进,为了解决软件危机,人们对开发技术进行了一定的改进,对编程语言也进行了革新,如产生了用于软件开发的对编程语言也进行了革新,如产生了用于软件开发的4GL、、CASE工具、原型技术和代码生成器这些努力取得了一定的成工具、原型技术和代码生成器这些努力取得了一定的成就,但没有从根本上解决问题就,但没有从根本上解决问题 10 3、基于数据的方法、基于数据的方法•实体实体实体实体- - - -联系图联系图联系图联系图 用实体的数据集合作为构造块,以数据结构为中心用实体的数据集合作为构造块,以数据结构为中心用实体的数据集合作为构造块,以数据结构为中心用实体的数据集合作为构造块,以数据结构为中心 •当时软件职业者和研究人员认为数据是当时软件职业者和研究人员认为数据是当时软件职业者和研究人员认为数据是当时软件职业者和研究人员认为数据是““““企业应用企业应用企业应用企业应用””””中最中最中最中最稳定的部分,并且关系数据库有一个极好的数学基础,在稳定的部分,并且关系数据库有一个极好的数学基础,在稳定的部分,并且关系数据库有一个极好的数学基础,在稳定的部分,并且关系数据库有一个极好的数学基础,在二十世纪八十年代大多数公司使用数据建模方法开发软件。

      二十世纪八十年代大多数公司使用数据建模方法开发软件二十世纪八十年代大多数公司使用数据建模方法开发软件二十世纪八十年代大多数公司使用数据建模方法开发软件 •结构化的方法实际上帮助开发者处理数据,但数据建模方结构化的方法实际上帮助开发者处理数据,但数据建模方结构化的方法实际上帮助开发者处理数据,但数据建模方结构化的方法实际上帮助开发者处理数据,但数据建模方法却不能帮助开发者管理功能法却不能帮助开发者管理功能法却不能帮助开发者管理功能法却不能帮助开发者管理功能11 信息建模法(information modeling)信息建模= 实体(对象)+属性+关系+父类型/子类型+关联对象由实体-联系法(E-R方法)发展而来与数据库设计有很深的渊源•核心概念是实体和联系: 实体描述问题域的事物,含有属性; 联系描述事物之间在数据方面的关系,也可以带有属性•发展之后的方法也把实体称作对象,并使用了类型和子类型的概念,作为实体(对象)的抽象描述12 实体(对象)实体(对象)属性属性联系联系父类型父类型/子类子类型型关联对象关联对象跟踪数据流,从而发现数据跟踪数据流,从而发现数据流和加工流和加工。

      •强调对信息实体建模,而不是对象建模强调对信息实体建模,而不是对象建模•对象只有属性,而无操作对象只有属性,而无操作•父类与子类之间也只有属性继承父类与子类之间也只有属性继承•没采用消息通讯没采用消息通讯1 113 4、、有限状态机方法有限状态机方法 •它基于现实的行为视图,状态是这类系统的构造块,它基于现实的行为视图,状态是这类系统的构造块,它基于现实的行为视图,状态是这类系统的构造块,它基于现实的行为视图,状态是这类系统的构造块,并且所操作的数据是独立于状态的并且所操作的数据是独立于状态的并且所操作的数据是独立于状态的并且所操作的数据是独立于状态的•基于系统状态的处理基于系统状态的处理基于系统状态的处理基于系统状态的处理•这一方法没有说到数据管理这一方法没有说到数据管理这一方法没有说到数据管理这一方法没有说到数据管理 14 4、、基于规则的系统基于规则的系统 •计算机是执行一套规则的推理机(计算机是执行一套规则的推理机(计算机是执行一套规则的推理机(计算机是执行一套规则的推理机(if—thenif—thenif—thenif—then语句)•基于人工智能系统基于人工智能系统基于人工智能系统基于人工智能系统 •基于规则的系统并没有帮助我们处理数据,也不支持基于规则的系统并没有帮助我们处理数据,也不支持基于规则的系统并没有帮助我们处理数据,也不支持基于规则的系统并没有帮助我们处理数据,也不支持过程概念过程概念过程概念过程概念 •如如如如 prolog, listprolog, listprolog, listprolog, list语言语言语言语言 • • • • • •• • • • • •• • • • • •• • • • • •总结总结 上述方法都仅基于一个角度看待系统,对系统的其上述方法都仅基于一个角度看待系统,对系统的其上述方法都仅基于一个角度看待系统,对系统的其上述方法都仅基于一个角度看待系统,对系统的其它视图建模方面的能力都很弱。

      但对它视图建模方面的能力都很弱但对它视图建模方面的能力都很弱但对它视图建模方面的能力都很弱但对OOOOOOOO产生都做出了一产生都做出了一产生都做出了一产生都做出了一定的贡献定的贡献定的贡献定的贡献. . . . 15 1..2 面向对象的基本思想面向对象的基本思想 为为了了克克服服早早期期的的方方法法的的不不足足,,这这时时是是人人们们已已经经开开始始考考虑虑使使用用面面向向对对象象方方法法来来开开发发系系统统较较为为完完善善面面向向对对象象的的分分析析和和设设计方法出现在八十年代中后期计方法出现在八十年代中后期 早期的方法只使用一种系统的视角作为构造块,而没有容早期的方法只使用一种系统的视角作为构造块,而没有容纳其他视角纳其他视角•功能分解法集中于将功能作为系统的构造块功能分解法集中于将功能作为系统的构造块•在数据分析方法中(实体联系模型)构造块是实体,但在数据分析方法中(实体联系模型)构造块是实体,但在该方法中用来满足系统需求的功能被完全忽略掉了在该方法中用来满足系统需求的功能被完全忽略掉了 两种方法都没有处理对动态行为的捕获,声明性语义(规两种方法都没有处理对动态行为的捕获,声明性语义(规则)以及例外处理机制都被完全忽略了。

      则)以及例外处理机制都被完全忽略了 16 面向对象方法的解决问题的思路是从现实世界中的面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的在面向入手和信息工程化方法从信息入手是不一样的在面向对象方法中,把一切都看成是对象对象方法中,把一切都看成是对象 17 一切都是对象一切都是对象例题:编写一个开发票程序,需要对发票的名细栏进行计算非面向对象思路:定义数据结构定义函数面向对象思路:对象一组属性操作:发票总计 ……18 从程序设计方法的角度看,面向对象是一种新的程从程序设计方法的角度看,面向对象是一种新的程序设计范型序设计范型(paradigm)(paradigm),其基本思想是使用对象、,其基本思想是使用对象、类、继承、封装、类、继承、封装、聚合、关联、聚合、关联、消息、消息、多态性多态性等基等基本概念来进行程序设计本概念来进行程序设计。

      自八十年代以来,面向对象方法已自八十年代以来,面向对象方法已深入到计算机软件领域的深入到计算机软件领域的几乎所有分支它不仅是一些具体的软件开发技术与策略,几乎所有分支它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件造的软件方法学方法学从这个意义上讲:从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的聚合、关联、消息、多态性等概念来构造系统的软件开发方法软件开发方法 什么是面向对象什么是面向对象19 面向对象的基本思想面向对象的基本思想((1 1))从现实世界中客观存在的事物出发来建立软件系统,强调从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。

      这可以使系统直接映射中的对象,作为系统的基本构成单位这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌问题域,保持问题域中事物及其相互关系的本来面貌( (对象对象) )((2 2))用对象的属性表示事物的性质;用对象的操作表示事物的用对象的属性表示事物的性质;用对象的操作表示事物的行为属性属性与与操作操作)) (3) (3) 对象的属性与操作结合为一体,成为一个独立的、不可分对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节的实体,对外屏蔽其内部细节对象的对象的封装封装))20 (4) (4) 对事物进行分类把具有相同属性和相同操作的对象归为一对事物进行分类把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例类,类是这些对象的抽象描述,每个对象是它的类的一个实例 ((分类分类))(5) (5) 复杂的对象可以用简单的对象作为其构成部分复杂的对象可以用简单的对象作为其构成部分聚合聚合)) (6) 通过在不同程度上运用抽象的原则通过在不同程度上运用抽象的原则,可以得到较一般的类和较可以得到较一般的类和较特殊的类。

      特殊类继承一般类的属性与操作,从而简化系统的构造特殊的类特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档过程及其文档继承继承))(7) (7) 类具有封闭性,把内部的属性和操作隐藏起来,只有公共的类具有封闭性,把内部的属性和操作隐藏起来,只有公共的操作对外是可见的操作对外是可见的 (类的类的封闭性封闭性)(8) (8) 对象之间通过消息进行通讯,以实现对象之间的动态联系对象之间通过消息进行通讯,以实现对象之间的动态联系 ((消息消息))(9) (9) 通过关联表达类通过关联表达类(一组对象一组对象)之间的静态关系之间的静态关系关联关联))21 客观世界对象对象对象对象对象对象对象对象对象对象对象名属性…操作…类类类类分类分类分类分类类继承继承继承继承类类对象聚合聚合聚合聚合抽象抽象抽象抽象客观事物及其客观事物及其客观事物及其客观事物及其间的联系间的联系间的联系间的联系关联关联关联关联用况图用况图类图类图顺序图顺序图状态图状态图活动图活动图构件图构件图OO模型对象对象对象对象对象对象对象对象计算机内的对象编程编程编程编程构成构成构成构成封装封装封装封装运行运行运行运行分析分析分析分析设计设计设计设计………………22 总结:总结:用类和对象作为系统的基本构成单位。

      对象对应问题用类和对象作为系统的基本构成单位对象对应问题域中的事物,其属性与操作刻画了事物的性质和行为,它们域中的事物,其属性与操作刻画了事物的性质和行为,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系域中事物之间实际存在的各种关系 因此,无论系统的构成成分,还是通过这些成分之间的因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域关系而体现的系统结构,都可直接地映射问题域充分运用人类日常的思维方法充分运用人类日常的思维方法 强调运用人类在日常的逻辑思维中经常采用的思想方法与强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等这原则,例如抽象、分类、继承、聚合、封装、关联等等这使得软件开发者能更有效地思考问题,并以其他人也能看得使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来懂的方式把自己的认识表达出来23 面向对象方法也是多种多样的,尽管各种面向对象方法面向对象方法也是多种多样的,尽管各种面向对象方法不同,但都是以上述的基本思想为基础的。

      不同,但都是以上述的基本思想为基础的 一种一种方法方法要包含一组概念和相应的表示法以及用其构造要包含一组概念和相应的表示法以及用其构造系统的过程指导,面向对象方法也不例外系统的过程指导,面向对象方法也不例外 贯穿于本书的面向对象概念及表示法均取自贯穿于本书的面向对象概念及表示法均取自UML (Unified Modeling Language)的的2.0版本版本;至于;至于过程指导过程指导,国,国内外尚无统一标准,本书给出的是基于特定活动组织的,其内外尚无统一标准,本书给出的是基于特定活动组织的,其特点是易学易用,且不失应用的普遍性特点是易学易用,且不失应用的普遍性24 1..3 面向对象中的主要概念及基本原则面向对象中的主要概念及基本原则面向对象中的主要概念:面向对象中的主要概念: 对象、属性、操作、类、继承、聚合、关联、永久对对象、属性、操作、类、继承、聚合、关联、永久对象,对象还分为主动对象和消息,象,对象还分为主动对象和消息,泛化分为有多态性和无泛化分为有多态性和无多态性的多态性的面向对象中的基本原则:面向对象中的基本原则: 信息隐蔽或封装、消息传递、后期连接、委托、类信息隐蔽或封装、消息传递、后期连接、委托、类/对对象和关系等。

      象和关系等1.3.11.3.1面向对象中的主要概念面向对象中的主要概念25 对象标识对象标识就是对象的名字,有“外部标识”和“内部标识”之分对象是现实世界中某个实际存在的事物,它可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)对象是构成世界的一个独立单位它具有自己的静态特征和动态特征对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位一个对象由一组属性和对这组属性进行操作的一组操作构成对象对象属性操作对象标识属性属性是用来描述对象性质的一个数据项操作操作是用来描述对象行为的一个动作序列对象,属性,操作,对象标识对象,属性,操作,对象标识抽抽 象象26 类,一般类,特殊类,抽象类,一般类,特殊类,抽象抽象与分类:抽象与分类:抽象(化)忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性把具有共同性质的事物划分为一类,得出一个抽象的概念,叫做分类类类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作务两个主要部分类的作用是用来创建对象,对象是类的一个实例不同程度的抽象可得到不同层次的分类较多地忽略事物之间的差别得到较一般的类较多地注意事物之间的差别得到较特殊的类运输工具运输工具火车火车汽车汽车飞机飞机卡车卡车轿车轿车轮船轮船车辆车辆27 继承:继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。

      继承意味着自动地拥有自动地拥有,或曰隐含地复制隐含地复制子类从父类中继承属性和操作,根据需要添加自己的属性和方法继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一公司人员姓名身份证号码股东股份 ······ ······职员工资··················例:例:由继承机由继承机制保证制保证一般类与特一般类与特殊类之间的殊类之间的关系叫泛化关系叫泛化关系(继承关系(继承关系),简关系),简称称泛化泛化继承关系的语义:继承关系的语义:“is a kind of”28 多继承:多继承:允许一个特殊类具有一个以上一般类的继承模式称作多继承多继承特殊类的内部情况在职研究生在职研究生姓名姓名············学号学号班级班级专业专业············职称职称专业专业············在职单位在职单位························来自来自“人员人员”类类来自来自“研究生研究生”类类来自来自“教职工教职工”类类本类中显示定义本类中显示定义例例:人员人员姓名姓名························教职工教职工职称职称专业专业························研究生研究生学号学号班级班级专业专业························在职研究生在职研究生在职单位在职单位 ······ ······ ······ ······29 消息消息 对象通过它对外提供的操作在系统中发挥作用。

      当对象通过它对外提供的操作在系统中发挥作用当系统中的其他对象或其他系统成分(在不要求完全对象系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如化的语言中,允许有不属于任何对象的成分,例如C++程序中的程序中的main函数),请求这个对象执行某个操作时,函数),请求这个对象执行某个操作时,该对象就响应这个请求,完成该操作该对象就响应这个请求,完成该操作 在在OO方法中,把向对象发出的操作请求称为消息方法中,把向对象发出的操作请求称为消息 目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用但但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统 例子:顾客买报纸例子:顾客买报纸 30 聚合:聚合:一个(较复杂的)对象由其他若干(较简单的)对象作一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为为其构成部分,称较复杂的对象为聚集聚集,称较简单的对,称较简单的对象为象为成分成分,称这种关系为,称这种关系为聚合聚合。

      这种关系的语义是这种关系的语义是“has a”或或“is a part of”聚合刻画了现实事物之间的构成关系聚合刻画了现实事物之间的构成关系两种方式:(前一种方式又称组合)两种方式:(前一种方式又称组合)部分对象部分对象整体对象嵌套对象嵌套对象整体对象部分对象部分对象整体对象对象指针或对象标识对象指针或对象标识描述紧密、描述紧密、固定的关固定的关系,例如系,例如汽车与发汽车与发动机动机描述松散、描述松散、 灵活的关灵活的关系,例如系,例如公司与法公司与法律顾问律顾问31 例:例:汽汽 车车发动机发动机1 14..64..60….10….10..10..1车车 轮轮公公 司司0..*0..*法律顾问法律顾问32 关联:关联:类之间的静态联系称作类之间的静态联系称作关联关联在实例化后,由类产生对象,由关联产生连接对象的链在实例化后,由类产生对象,由关联产生连接对象的链链链是关联的实例是关联的实例 关联的表示符号也称作关联的表示符号也称作实例连接实例连接城市城市0..*0..*有航线有航线 城市之间有航线城市之间有航线教教 师师学学 生生0..*0..*1 1指导论文指导论文 教师为学生指导论文教师为学生指导论文例:例:33 其他:其他:永久对象:可以在程序运行后继续保存的对象时间时间 空间空间意义意义实现途径:语言,实现途径:语言,OO-DBMS主动对象:表示进程或线程的对象。

      描述具有主动行为的事物描述具有主动行为的事物描述并发执行的任务描述并发执行的任务34 (1)抽象抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象例如,一个现实事物,可能担任很多角色,只有与问题域有关的角色,才予以考虑* 在不同的高度看待或解决问题 OO中应用应用:–过程抽象:任何一个完成确定功能的操作序列,其使用者都可把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的–数据抽象:根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察–客观事物->对象->类->一般类–不同开发阶段需要进行不同程度的抽象 *–便于实现模块的可替换性 1.3.21.3.2面向对象中的基本原则面向对象中的基本原则35 ((2)封装:)封装:把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节只是向外部提供接口,降低了对象间的耦合度售报亭售报亭售报亭售报亭属属性性服服务务报刊报刊A报刊报刊B…钱箱钱箱报刊零售报刊零售款货清点款货清点顾顾客客封装的重要意义:封装的重要意义:使对象能够集中而完整地描述并对应一个具体事物。

      使对象能够集中而完整地描述并对应一个具体事物体现了事物的相对独立性,使对象外部不能随意存体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的取对象的内部数据,避免了外部错误对它的““交插交插感染感染””对象的内部的修改对外部的影响很小,减少了修改对象的内部的修改对外部的影响很小,减少了修改引起的引起的“波动效应波动效应”公开静态的、不变的操作,而把动态的、易变的操公开静态的、不变的操作,而把动态的、易变的操作隐藏起来作隐藏起来 封装带来的问题:封装带来的问题:编程的麻烦编程的麻烦执行效率的损失执行效率的损失 解决办法:解决办法:不强调严格封装,不强调严格封装,实行可见性控制实行可见性控制混合型(混合型OOPL)) 例如:例如:C++由封装机制保由封装机制保证:证:数据不能被对象的使用者直接访问只允许通过由对象提供的方法或代码访问数据36 信息隐蔽信息隐蔽•对象的操作定义了其他的对象怎样获得对其的访问每一个对象都将提供给所有对象的公共操作公开化它也提供仅局限于特定对象的其它的操作(受保护的和私有的)•其他的对象对被请求的对象怎样提供操作(代码,内部数据)没有感知。

      操作 操作操作 操作 …… 属性集37 ((3 3)委托)委托 •借助消息传递,工作可从一个对象(客户)传递到另一个对象(代理),因为从客户的观点,代理具有客户所需要的操作工作连续地传递,直到到达了既有数据又有方法(代码)能完成这项工作的对象 例如:建造一所办公楼例如:建造一所办公楼 董事会董事会->总经理总经理->建筑公司建筑公司注意:委托是执行任务的权利,而不是责任注意:委托是执行任务的权利,而不是责任38 ((4 4)分类)分类•把具有共同性质的事物划分为一类,得出一个抽象的概念•分类帮助我们组织我们所生活的复杂世界我们可以对在一个特殊分类中的对象做一些假设如果一个对象是分类(类)的一个实例,它将符合该分类的总体模式分类:对象-分类:对象->类-类- >一般类一般类类类/对象对象.所有的对象都是类的实例实例能够在运行时被产生(初始化)或销毁(删除)•对象怎样提供操作,由该对象为其实例的类所决定。

      这样,同一个类的所有对象在响应特定的操作请求(功能调用)时使用相同的方法 39 ((5 5)泛化)泛化 (继承)(继承)•无无多多态态性性的的泛泛化化.类可以由层次继承结构所组织在该结构中,子类将从位于层次结构高层的父类中继承属性、操作和关系 抽象的父类是指仅用来定义子类的超类这样,抽象类就没有直接的实例•有有多多态态的的泛泛化化.可以使用层次继承结构组织类,子类可以继承位于层次结构的高层的父类的属性、操作和关系然而,子类可以定义它自己的操作来代替其任何超类的同名操作 多态是指同一个命名可具有不同的语义OO方法中,常指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为 用途: 把具有共同基类的对象组成一组,并对它们进行一致的处理 例如,多边形下的三角形、长方形、正多边形 40 多态:多态:多边形边数顶点数据绘图XY轴向矩形x边数*顶点数据*绘图正多边形*顶点数据*绘图例:例:41 ((6 6)消息通信)消息通信 即要求对象之间只能通过消息进行通讯 消息传递机制与函数调用机制的区别 第一,在消息传递机制中,每一个消息被发送给指定的接收者(对象)。

      在命令式编程范型中,函数调用机制没有指定的接收者第二,消息的解释(用来完成操作请求的方法或操作/代码集)依赖接收者,并且因接收者的不同而异第三,在面向对象的范型中,通常在运行时才能知道给定消息的特定的接收者42 ((7)行为分析)行为分析 关系机制为我们提供了用同等(关联、依赖)和层次关系机制为我们提供了用同等(关联、依赖)和层次(一般化(一般化/ /特殊化和聚合)结构组织类特殊化和聚合)结构组织类/ /对象的方法很对象的方法很多面向对象的专家把模型的这部分结构称作静态模型多面向对象的专家把模型的这部分结构称作静态模型我们使用我们使用James MartinJames Martin和和James OdellJames Odell的术语,将其称的术语,将其称为结构分析为结构分析 然而,一个应用然而,一个应用/系统有了结构分析并不充分,还需系统有了结构分析并不充分,还需要进行行为分析行为分析是我们用来考察一个对象要进行行为分析行为分析是我们用来考察一个对象(类)是怎样提供它的操作的过程类)是怎样提供它的操作的过程 从分析的视点,有两种类型的行为:从分析的视点,有两种类型的行为:–静态的静态的–动态的动态的43 静态行为静态行为 在在静态行为静态行为中,实现操作的代码不被任何外部中,实现操作的代码不被任何外部或内部的事件(动作)所影响。

      或内部的事件(动作)所影响 示例:一个类中有一个示例:一个类中有一个““求平方根求平方根””的操作如果对数码如果对数码4执行执行““求平方根求平方根””操作,其结果操作,其结果总会是总会是2没有外部的或内部的动作能够引起没有外部的或内部的动作能够引起该类的代码改变计算平方根的结果该类的代码改变计算平方根的结果 实际上,只要我们使用命令式编程(如用实际上,只要我们使用命令式编程(如用C C编编程)是容易做到这一点的程)是容易做到这一点的 44 动态行为动态行为 •在行为中发生这些变化的原因可能是由于对象存在很多不同的状在行为中发生这些变化的原因可能是由于对象存在很多不同的状态随后,对象根据它的状态做出反映使用命令式编程技术不态随后,对象根据它的状态做出反映使用命令式编程技术不能很好地处理这种类型的行为使用另外的一种称为有限状态机能很好地处理这种类型的行为使用另外的一种称为有限状态机的机制会更好地捕获这样的方法的机制会更好地捕获这样的方法 例子:例子:航班定票系统中的定票过程航班定票系统中的定票过程对象对象“机票机票”的状态:的状态: 预定、等待、确认、取消、使用、归档预定、等待、确认、取消、使用、归档 •系统中的对象是相互协作的,通过发消息共同完成某项功能。

      这系统中的对象是相互协作的,通过发消息共同完成某项功能这种协作的交互性,可以用交互图来进行描述种协作的交互性,可以用交互图来进行描述•有很多系统具有并发行为从事物的并发行为的起因上看,每个有很多系统具有并发行为从事物的并发行为的起因上看,每个并发行为是主动发生的体现在对象上,就是有一种对象是主动并发行为是主动发生的体现在对象上,就是有一种对象是主动的,它代表着一个进程或线程,剩余的另一种对象则是被动的的,它代表着一个进程或线程,剩余的另一种对象则是被动的在交互图上也能体现出对象间的并发行为在交互图上也能体现出对象间的并发行为 45 ((8 8)复杂性控制)复杂性控制 •引入包引入包(package) (package) 的概念,使模型具有的概念,使模型具有大小不同的粒度层次,以利于控制复杂大小不同的粒度层次,以利于控制复杂性 如把分析和设计阶段的模型分别用包进行组织如把分析和设计阶段的模型分别用包进行组织46 1..4 面向对象方法的特点面向对象方法的特点•从认识论角度和软件工程方法的角度看一下面向对象从认识论角度和软件工程方法的角度看一下面向对象方法带来的好处;方法带来的好处;•具体地描述面向对象方法的特点。

      具体地描述面向对象方法的特点 47 对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)•软件开发:从问题域出发,对事物进行认识和描述软件开发:从问题域出发,对事物进行认识和描述•问题问题——语言的鸿沟语言的鸿沟1 1、从认识论的角度可以看出,面向对象方法改变了人们认识、从认识论的角度可以看出,面向对象方法改变了人们认识、从认识论的角度可以看出,面向对象方法改变了人们认识、从认识论的角度可以看出,面向对象方法改变了人们认识世界的方式世界的方式世界的方式世界的方式 48 计算机机器语言自然语言客观世界(问题域)语言的鸿沟2 2、语言的发展、语言的发展————鸿沟变窄鸿沟变窄面向对象的语言非OO的高级语言汇编语言程序的指令、数据、地址,都是由二进制的“0”和“1”构成的离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远以易理解的符号表示指令、数据以及寄存器、地址等物理概念稍稍适合人类的形象思维,但仍然相差很远因为抽象层次太低,仍需考虑大量的机器细节高级语言高级语言隐蔽了机器细节,使用有形象意义的数据命名和表达式,可以联系到程序所描述的具体事物。

      特别是结构化编程语言结构化编程语言更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发49 问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计3、、面向对象方法使得从问题域到计算机间的鸿沟变窄面向对象方法使得从问题域到计算机间的鸿沟变窄 分析与设计的鸿沟分析与设计概念及表示法的不一致软件工程学的作用软件工程学的作用——结构化的软件工程方法结构化的软件工程方法50 问题域OOA计算机自然语言面向对象的编程语言OODOOPOOT软件工程学的作用软件工程学的作用——面向对象的软件工程方法面向对象的软件工程方法51 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计把数据和处理数据的过程作为一个整体,即对象算法+数据结构算法+数据结构算法+数据结构算法+数据结构算法+数据结构关系程序程序=<对象,关系对象,关系> 对象对象=(算法)(算法)+(数据结构)(数据结构)4 4、面向对象方法有助于软件的维护与复用、面向对象方法有助于软件的维护与复用、面向对象方法有助于软件的维护与复用、面向对象方法有助于软件的维护与复用 52 结构化程序设计结构化程序设计程序程序 =<关系,算法,数据结构关系,算法,数据结构 >数据结构数据结构数据结构算法算法算法关系53 结结构构化化方方法法::从从算算法法的的角角度度进进行行建建模模,,所所有有的的软软件件都都用用过过程程或或函函数数作作为为其其主主要要构构造造块块。

      人人们们把把大大量量精精力力都都集集中中在在控控制制流流程程和和大算法的分解上大算法的分解上 这种建模的缺点是模型脆弱需求变动、维护困难这种建模的缺点是模型脆弱需求变动、维护困难 面面向向对对象象方方法法::以以众众多多的的类类及及交交互互模模式式((类类间间的的协协同同工工作作))为中心 着着重重于于的的数数据据库库方方法法::以以实实体体-关关系系模模型型为为中中心心,,该该模模型型的的行为放入触发器和存储过程中行为放入触发器和存储过程中 对对于于一一个个给给定定的的应应用用系系统统和和开开发发方方法法,,上上述述的的任任何何一一种种方方法可能都是正确的只是代价和受益是不同的法可能都是正确的只是代价和受益是不同的54 与传统方法相比,面向对象方法的主要优点:与传统方法相比,面向对象方法的主要优点:((1 1)把易变的数据结构和部分功能封装在对象内并加以隐藏,)把易变的数据结构和部分功能封装在对象内并加以隐藏, 一是保证了对象行为的可靠性;一是保证了对象行为的可靠性; 二是对它们的修改并不会影响其他的对象,有利于维护,二是对它们的修改并不会影响其他的对象,有利于维护,对需求变化有较强的适应性。

      对需求变化有较强的适应性2 2)封装性和继承性有利于复用对象封装性和继承性有利于复用对象 把把对象的属性和操作捆象的属性和操作捆绑在一起,提高了在一起,提高了对象(作象(作为模模块))的内聚性,减少了与其他的内聚性,减少了与其他对象的耦合,象的耦合,这为复用复用对象提供了可象提供了可能性和方便性在能性和方便性在继承承结构中,特殊构中,特殊类对一般一般类的的继承,本身承,本身就是就是对一般一般类的属性和操作的复用的属性和操作的复用 55 5 5、面向对象方法有助于提高软件的质量和生产率、面向对象方法有助于提高软件的质量和生产率、面向对象方法有助于提高软件的质量和生产率、面向对象方法有助于提高软件的质量和生产率 按照现今的质量观点,不是仅仅要在编程后通过测试排除错误,而是要着眼于软按照现今的质量观点,不是仅仅要在编程后通过测试排除错误,而是要着眼于软件开发过程的每个环节开展质量保证活动,包括分析和设计阶段系统的高质量不是件开发过程的每个环节开展质量保证活动,包括分析和设计阶段系统的高质量不是仅指系统没有错误,而是系统要达到好用、易用、可移植和易维护等,让用户由衷地仅指系统没有错误,而是系统要达到好用、易用、可移植和易维护等,让用户由衷地感到满意。

      采用感到满意采用OO方法进行软件开发,相对而言是更容易做到这些的方法进行软件开发,相对而言是更容易做到这些的 有数据表明,使用有数据表明,使用OO技术从分析到编程阶段能提高效率技术从分析到编程阶段能提高效率20%,在维护阶段(,在维护阶段(完善完善性维护、纠错性维护、适应性维护、预防性维护)提高得就更多这主要体现在如下性维护、纠错性维护、适应性维护、预防性维护)提高得就更多这主要体现在如下几方面几方面:•设计的投入在编程、测试时会得到回报设计的投入在编程、测试时会得到回报•OO方法使系统更易于理解方法使系统更易于理解•分析文档、设计文档、源代码对应良好分析文档、设计文档、源代码对应良好•功能变化引起的全局性修改较少功能变化引起的全局性修改较少•有利于有利于OOA结果的复用结果的复用56 面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流 ······面向对象是软件方法学的返朴归真面向对象是软件方法学的返朴归真软件科学的发展历程中软件科学的发展历程中出现过许多出现过许多““面向面向””软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。

      面向对象面向对象57 1..5面向对象方法的发展史及现状简介面向对象方法的发展史及现状简介1 1、、 雏形阶段雏形阶段q60606060年年年年代代代代挪挪挪挪威威威威计计计计算算算算中中中中心心心心开开开开发发发发的的的的Simula67—Simula67—Simula67—Simula67—面面面面向向向向对对对对象象象象语语语语言言言言的的的的先驱和第一个里程碑先驱和第一个里程碑先驱和第一个里程碑先驱和第一个里程碑( ( ( (首先引入了类的概念和继承机制首先引入了类的概念和继承机制首先引入了类的概念和继承机制首先引入了类的概念和继承机制) ) ) )q70707070年年年年代代代代CLUCLUCLUCLU、、、、并并并并发发发发PascalPascalPascalPascal、、、、AdaAdaAdaAda和和和和Modula-2Modula-2Modula-2Modula-2等等等等语语语语言言言言对对对对抽抽抽抽象象象象数据类型理论的发展起到重要作用数据类型理论的发展起到重要作用数据类型理论的发展起到重要作用数据类型理论的发展起到重要作用( ( ( (支持数据与操作封装支持数据与操作封装支持数据与操作封装支持数据与操作封装) ) ) )q犹犹犹犹他他他他大大大大学学学学博博博博士士士士生生生生Alan Alan Alan Alan KayKayKayKay设设设设计计计计了了了了一一一一个个个个实实实实验验验验性性性性语语语语言言言言FlexFlexFlexFlex。

      从从从从SimulaSimulaSimulaSimula 67 67 67 67中借鉴了许多概念,如类、对象、继承等中借鉴了许多概念,如类、对象、继承等中借鉴了许多概念,如类、对象、继承等中借鉴了许多概念,如类、对象、继承等q1972197219721972年年年年Palo Palo Palo Palo AlnoAlnoAlnoAlno研研研研究究究究中中中中心心心心(PARC)(PARC)(PARC)(PARC)发发发发布布布布了了了了Smalltalk-72Smalltalk-72Smalltalk-72Smalltalk-72,,,,其中正式使用了其中正式使用了其中正式使用了其中正式使用了““““面向对象面向对象面向对象面向对象””””这个术语这个术语这个术语这个术语qSmalltalkSmalltalkSmalltalkSmalltalk的的的的问问世世世世标标志着面向志着面向志着面向志着面向对对象程序象程序象程序象程序设计设计方法的正式形方法的正式形方法的正式形方法的正式形成但是这这个个个个时时期的期的期的期的SmalltalkSmalltalkSmalltalkSmalltalk语语言言言言还还不不不不够够完善完善完善完善. . . .58 2 2、完善阶段、完善阶段q PARCPARCPARCPARC先后发布了先后发布了先后发布了先后发布了Smalltalk-72Smalltalk-72Smalltalk-72Smalltalk-72,,,,76767676,,,,78787878等版本,直至等版本,直至等版本,直至等版本,直至1981198119811981年推出该语言最完善的版本年推出该语言最完善的版本年推出该语言最完善的版本年推出该语言最完善的版本Smalltalk-80Smalltalk-80Smalltalk-80Smalltalk-80。

      q Smalltalk-80Smalltalk-80Smalltalk-80Smalltalk-80的的的的问问问问世世世世被被被被今今今今认认认认为为为为是是是是面面面面向向向向对对对对象象象象语语语语言言言言发发发发展展展展史史史史上上上上最最最最重重重重要要要要的的的的里里里里程程程程碑碑碑碑迄迄迄迄今今今今绝绝绝绝大大大大部部部部分分分分面面面面向向向向对对对对象象象象的的的的基基基基本本本本概概概概念念念念及及及及其其其其支支支支持持持持机机机机制制制制在在在在Smalltalk-80Smalltalk-80Smalltalk-80Smalltalk-80中中中中都都都都已已已已具具具具备备备备它它它它是是是是第第第第一一一一个个个个完善的、能够实际应用的面向对象语言完善的、能够实际应用的面向对象语言完善的、能够实际应用的面向对象语言完善的、能够实际应用的面向对象语言 但是,但是,但是,但是,SmalltalkSmalltalkSmalltalkSmalltalk的应用尚不够广泛,原因是:的应用尚不够广泛,原因是:的应用尚不够广泛,原因是:的应用尚不够广泛,原因是:① ① ① ① 一种新的软件方法学被广泛接受需要一定的时间。

      一种新的软件方法学被广泛接受需要一定的时间一种新的软件方法学被广泛接受需要一定的时间一种新的软件方法学被广泛接受需要一定的时间② ② ② ② 商品化软件开发工作到商品化软件开发工作到商品化软件开发工作到商品化软件开发工作到87878787年才开始进行年才开始进行年才开始进行年才开始进行③ ③ ③ ③ 追求纯追求纯追求纯追求纯OOOOOOOO的宗旨使许多软件开发人员感到不便的宗旨使许多软件开发人员感到不便的宗旨使许多软件开发人员感到不便的宗旨使许多软件开发人员感到不便 59 3 3 3 3、繁荣阶段、繁荣阶段、繁荣阶段、繁荣阶段q 自自自自80808080年年年年代代代代中中中中期期期期到到到到90909090年年年年代代代代,,,,是是是是面面面面向向向向对对对对象象象象语语语语言言言言走走走走向向向向繁繁繁繁荣荣荣荣的的的的阶阶阶阶段段段段其其其其主主主主要要要要表表表表现现现现是是是是大大大大批批批批比比比比较较较较实实实实用用用用的的的的OOPLOOPLOOPLOOPL的的的的涌涌涌涌现现现现,,,,例例例例如如如如 C++C++C++C++、、、、Objective-CObjective-CObjective-CObjective-C、、、、Object Object Object Object PascalPascalPascalPascal、、、、CLOSCLOSCLOSCLOS((((Common Common Common Common Lisp Lisp Lisp Lisp Object SystemObject SystemObject SystemObject System)、)、)、)、EiffelEiffelEiffelEiffel、、、、ActorActorActorActor等。

      等q OOOOOOOO编程语言分为纯编程语言分为纯编程语言分为纯编程语言分为纯OOOOOOOO语言和混合型语言和混合型语言和混合型语言和混合型OOOOOOOO语言• 混混混混合合合合型型型型语语语语言言言言是是是是在在在在传传传传统统统统的的的的过过过过程程程程式式式式语语语语言言言言基基基基础础础础上上上上增增增增加加加加OOOOOOOO语语语语言成分,在实用性方面具有更大的优势如言成分,在实用性方面具有更大的优势如言成分,在实用性方面具有更大的优势如言成分,在实用性方面具有更大的优势如C++C++C++C++• 此此此此时时的的的的纯纯OOOOOOOO语语言也比言也比言也比言也比较较重重重重视实视实用性如如如如EiffelEiffelEiffelEiffel、、、、 Smalltalk Smalltalk Smalltalk Smalltalk 、、、、ActorActorActorActor 60 4 4、、 当前的状况当前的状况q 在在编编程程方方面面,,普普遍遍采采用用语语言言、、类类库库和和可可视视化化编编程程环环境境相相结结合合的的方方式,例如,式,例如,Visual C++Visual C++,,Visual BasicVisual Basic和和DelphiDelphi,,JavaJava等。

      等q 到到九九十十年年代代,,面面向向对对象象的的分分析析与与设设计计方方法法已已多多达达数数十十种种,,这这些些方方法都各有所长,现在趋于统一法都各有所长,现在趋于统一 统统一一建建模模语语言言UMLUML((Unified Unified Modeling Modeling languagelanguage)),,其其推推荐荐的的方方法法是是USDPUSDP((Unified Unified Software Software Development Development ProcessProcess));; UML是是一一种面向对象的建模语言,在软件产业界获得了很大的支持种面向对象的建模语言,在软件产业界获得了很大的支持 OPEN((OO Process, Environment and Notation)),,OPEN中中含含有有建建模模过过程程和和建建模模语语言言OML((OPEN Modeling language))OPEN在学术界影响面很大,产业界中的反响很小在学术界影响面很大,产业界中的反响很小 在面向对象的过程指导方面,目前还没有国际规范发布。

      在面向对象的过程指导方面,目前还没有国际规范发布 61 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.