《软件课程设计精品文稿.ppt》由会员分享,可在线阅读,更多相关《软件课程设计精品文稿.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件课程设计第1页,本讲稿共40页课程设计内容面向对象软件的开发过程面向对象软件的开发过程基于基于UML的面向对象软件开发的面向对象软件开发软件文件的编写软件文件的编写第2页,本讲稿共40页面向对象软件的开发过程面向对象软件的开发过程面向对象软件工程方法的特征与优势面向对象软件工程方法的特征与优势面向对象分析面向对象分析OOA面向对象设计面向对象设计OOD面向对象编程面向对象编程OOP面向对象测试面向对象测试OOT第3页,本讲稿共40页自软件工程问世以来,出现了很多种软件工程的方法学。方法、自软件工程问世以来,出现了很多种软件工程的方法学。方法、自软件工程问世以来,出现了很多种软件工程的方法学
2、。方法、自软件工程问世以来,出现了很多种软件工程的方法学。方法、工具和过程是软件工程方法学的三个重要因素。工具和过程是软件工程方法学的三个重要因素。工具和过程是软件工程方法学的三个重要因素。工具和过程是软件工程方法学的三个重要因素。方法方法方法方法是指为了完成软件开发的各项任务所采用的技术方法。是指为了完成软件开发的各项任务所采用的技术方法。是指为了完成软件开发的各项任务所采用的技术方法。是指为了完成软件开发的各项任务所采用的技术方法。工具工具工具工具是为方法的实行提供的自动或半自动的支持。是为方法的实行提供的自动或半自动的支持。是为方法的实行提供的自动或半自动的支持。是为方法的实行提供的自动
3、或半自动的支持。过程过程过程过程是指为了获得高质量的软件产品所需要完成的一系列任务的框架。是指为了获得高质量的软件产品所需要完成的一系列任务的框架。是指为了获得高质量的软件产品所需要完成的一系列任务的框架。是指为了获得高质量的软件产品所需要完成的一系列任务的框架。在软件工程领域,在软件工程领域,在软件工程领域,在软件工程领域,“方法学方法学方法学方法学”是被广泛使用的一个词汇。在是被广泛使用的一个词汇。在是被广泛使用的一个词汇。在是被广泛使用的一个词汇。在2020世纪世纪世纪世纪7070年代,年代,年代,年代,“方法学方法学方法学方法学”一词用于表示一词用于表示一词用于表示一词用于表示“开发软
4、件产品的方式开发软件产品的方式开发软件产品的方式开发软件产品的方式”,而,而,而,而该词实际上是指该词实际上是指该词实际上是指该词实际上是指“方法的科学方法的科学方法的科学方法的科学”。“方法学方法学方法学方法学”应用于整个软件应用于整个软件应用于整个软件应用于整个软件工程的过程。工程的过程。工程的过程。工程的过程。第4页,本讲稿共40页面向对象的软件工程方法是当前最流行的软件工程方法,它主要有以下几面向对象的软件工程方法是当前最流行的软件工程方法,它主要有以下几面向对象的软件工程方法是当前最流行的软件工程方法,它主要有以下几面向对象的软件工程方法是当前最流行的软件工程方法,它主要有以下几个方
5、面的特征。个方面的特征。个方面的特征。个方面的特征。把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件。把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件。把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件。把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件。把特征相似的对象抽象为类。把特征相似的对象抽象为类。把特征相似的对象抽象为类。把特征相似的对象抽象为类。类之间可以存在继承或被继承的关系,形成软件系统的层次结构。类之间可以存在继承或被继承的关系,形成软件系统的层次结构。类之间可以存在继承或被继承的关系,形成软件系统的层次结构。类之间可以存在
6、继承或被继承的关系,形成软件系统的层次结构。对象之间通过发送消息进行通信。对象之间通过发送消息进行通信。对象之间通过发送消息进行通信。对象之间通过发送消息进行通信。将对象的私有信息封装起来。外界不能直接访问对象的内部信息,而必须是发将对象的私有信息封装起来。外界不能直接访问对象的内部信息,而必须是发将对象的私有信息封装起来。外界不能直接访问对象的内部信息,而必须是发将对象的私有信息封装起来。外界不能直接访问对象的内部信息,而必须是发送相应的消息后,通过有限的接口来访问。送相应的消息后,通过有限的接口来访问。送相应的消息后,通过有限的接口来访问。送相应的消息后,通过有限的接口来访问。形式化的软件
7、工程方法基于严格的数学逻辑,多应用于对安全性和可靠性形式化的软件工程方法基于严格的数学逻辑,多应用于对安全性和可靠性形式化的软件工程方法基于严格的数学逻辑,多应用于对安全性和可靠性形式化的软件工程方法基于严格的数学逻辑,多应用于对安全性和可靠性要求较高的特殊领域。要求较高的特殊领域。要求较高的特殊领域。要求较高的特殊领域。第5页,本讲稿共40页 面向对象的软件工程方法的优点面向对象的软件工程方法的优点面向对象的软件工程方法的优点面向对象的软件工程方法的优点 符合人类的思维习惯符合人类的思维习惯符合人类的思维习惯符合人类的思维习惯。通常人类在认识客观世界的事物时,把静态的属性及动态的动作特征组。
8、通常人类在认识客观世界的事物时,把静态的属性及动态的动作特征组。通常人类在认识客观世界的事物时,把静态的属性及动态的动作特征组。通常人类在认识客观世界的事物时,把静态的属性及动态的动作特征组合起来才能完整地表达一个事物。面向对象的软件工程方法最重要的特点就是把事物的属性和操合起来才能完整地表达一个事物。面向对象的软件工程方法最重要的特点就是把事物的属性和操合起来才能完整地表达一个事物。面向对象的软件工程方法最重要的特点就是把事物的属性和操合起来才能完整地表达一个事物。面向对象的软件工程方法最重要的特点就是把事物的属性和操作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,面向对象的软件工
9、程方法更加作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,面向对象的软件工程方法更加作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,面向对象的软件工程方法更加作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,面向对象的软件工程方法更加注重人类在认识客观世界时循序渐进,逐步深化的特点。注重人类在认识客观世界时循序渐进,逐步深化的特点。注重人类在认识客观世界时循序渐进,逐步深化的特点。注重人类在认识客观世界时循序渐进,逐步深化的特点。稳定性好稳定性好稳定性好稳定性好。传统的软件工程方法基于功能分析和功能分解。当软件功能发生变化时,很容易引起。传统的软件工程方法基于功能分
10、析和功能分解。当软件功能发生变化时,很容易引起。传统的软件工程方法基于功能分析和功能分解。当软件功能发生变化时,很容易引起。传统的软件工程方法基于功能分析和功能分解。当软件功能发生变化时,很容易引起软件结构的改变。而面向对象的软件工程方法则是基于对象的概念,用对象来表示与待解决的问软件结构的改变。而面向对象的软件工程方法则是基于对象的概念,用对象来表示与待解决的问软件结构的改变。而面向对象的软件工程方法则是基于对象的概念,用对象来表示与待解决的问软件结构的改变。而面向对象的软件工程方法则是基于对象的概念,用对象来表示与待解决的问题相关的实体,以对象之间的联系来表示实体之间的关系。当目标系统的需
11、求变化时,只要实体题相关的实体,以对象之间的联系来表示实体之间的关系。当目标系统的需求变化时,只要实体题相关的实体,以对象之间的联系来表示实体之间的关系。当目标系统的需求变化时,只要实体题相关的实体,以对象之间的联系来表示实体之间的关系。当目标系统的需求变化时,只要实体及实体之间的联系不发生变化,就不会引起软件系统结构的变化。及实体之间的联系不发生变化,就不会引起软件系统结构的变化。及实体之间的联系不发生变化,就不会引起软件系统结构的变化。及实体之间的联系不发生变化,就不会引起软件系统结构的变化。可复用性好可复用性好可复用性好可复用性好。面向对象技术采用了继承和多态的机制,极大地提高了代码的可
12、复用性。从父类。面向对象技术采用了继承和多态的机制,极大地提高了代码的可复用性。从父类。面向对象技术采用了继承和多态的机制,极大地提高了代码的可复用性。从父类。面向对象技术采用了继承和多态的机制,极大地提高了代码的可复用性。从父类派生出子类,一方面复用了父类中定义的数据结构和代码,另一方面提高了代码的可扩展性。派生出子类,一方面复用了父类中定义的数据结构和代码,另一方面提高了代码的可扩展性。派生出子类,一方面复用了父类中定义的数据结构和代码,另一方面提高了代码的可扩展性。派生出子类,一方面复用了父类中定义的数据结构和代码,另一方面提高了代码的可扩展性。维护性好维护性好维护性好维护性好。由于利用
13、面向对象软件工程方法开发的软件系统稳定性好和可复用性好,。由于利用面向对象软件工程方法开发的软件系统稳定性好和可复用性好,。由于利用面向对象软件工程方法开发的软件系统稳定性好和可复用性好,。由于利用面向对象软件工程方法开发的软件系统稳定性好和可复用性好,而且采用了封装和信息隐藏机制,易于对局部软件进行调整,所以系统的可维护性比而且采用了封装和信息隐藏机制,易于对局部软件进行调整,所以系统的可维护性比而且采用了封装和信息隐藏机制,易于对局部软件进行调整,所以系统的可维护性比而且采用了封装和信息隐藏机制,易于对局部软件进行调整,所以系统的可维护性比较好。较好。较好。较好。第6页,本讲稿共40页 面
14、向对象软件工程面向对象软件工程面向对象软件工程面向对象软件工程(OOSE)(OOSE)方法是面向对象方法在软件工程领域的全面应用,方法是面向对象方法在软件工程领域的全面应用,方法是面向对象方法在软件工程领域的全面应用,方法是面向对象方法在软件工程领域的全面应用,包括:包括:包括:包括:面向对象分析面向对象分析面向对象分析面向对象分析(OOA)(OOA):针对问题论域中客观存在的各项事物建立:针对问题论域中客观存在的各项事物建立:针对问题论域中客观存在的各项事物建立:针对问题论域中客观存在的各项事物建立OOAOOA模型模型模型模型 中的对象,用对中的对象,用对中的对象,用对中的对象,用对象的属性
15、和服务分别描述事物的静态特征和行为。象的属性和服务分别描述事物的静态特征和行为。象的属性和服务分别描述事物的静态特征和行为。象的属性和服务分别描述事物的静态特征和行为。面向对象设计面向对象设计面向对象设计面向对象设计(OOD)(OOD):针对系统的某个具体实现来运用:针对系统的某个具体实现来运用:针对系统的某个具体实现来运用:针对系统的某个具体实现来运用OOOO方法方法方法方法(1)(1)将将将将OOAOOA模型作为模型作为模型作为模型作为OODOOD的一部分;的一部分;的一部分;的一部分;(2)(2)针对具体实现中的人机界面、数据存储和任务管理等因素补充针对具体实现中的人机界面、数据存储和任
16、务管理等因素补充针对具体实现中的人机界面、数据存储和任务管理等因素补充针对具体实现中的人机界面、数据存储和任务管理等因素补充实现相关操作。实现相关操作。实现相关操作。实现相关操作。面向对象编程面向对象编程面向对象编程面向对象编程(OOP)(OOP):用一种面向对象的编程语言将:用一种面向对象的编程语言将:用一种面向对象的编程语言将:用一种面向对象的编程语言将OODOOD模型中的每个成分书写出来。模型中的每个成分书写出来。模型中的每个成分书写出来。模型中的每个成分书写出来。面向对象测试面向对象测试面向对象测试面向对象测试(OOT)(OOT):在测试中运用:在测试中运用:在测试中运用:在测试中运用
17、OOOO技术,以对象的类作为基本测试对象,查错范技术,以对象的类作为基本测试对象,查错范技术,以对象的类作为基本测试对象,查错范技术,以对象的类作为基本测试对象,查错范围主要是类定义之内的属性及服务,以及继承中类之间关系。围主要是类定义之内的属性及服务,以及继承中类之间关系。围主要是类定义之内的属性及服务,以及继承中类之间关系。围主要是类定义之内的属性及服务,以及继承中类之间关系。面向对象软件维护面向对象软件维护面向对象软件维护面向对象软件维护(OOM)(OOM):程序与问题论域保持一致,降低理解难度;对象的封装:程序与问题论域保持一致,降低理解难度;对象的封装:程序与问题论域保持一致,降低理
18、解难度;对象的封装:程序与问题论域保持一致,降低理解难度;对象的封装减小对象的修改对系统的影响。减小对象的修改对系统的影响。减小对象的修改对系统的影响。减小对象的修改对系统的影响。第7页,本讲稿共40页面向对象分析(面向对象分析(面向对象分析(面向对象分析(OOAOOA)的一般步骤是:)的一般步骤是:)的一般步骤是:)的一般步骤是:在客户和软件工程师之间沟通基本的用户要求,获取客户对系统的需求,包括标识场在客户和软件工程师之间沟通基本的用户要求,获取客户对系统的需求,包括标识场在客户和软件工程师之间沟通基本的用户要求,获取客户对系统的需求,包括标识场在客户和软件工程师之间沟通基本的用户要求,获
19、取客户对系统的需求,包括标识场景景景景(Scenario)(Scenario)和用例和用例和用例和用例(UseCase)(UseCase),以及建造需求模型;,以及建造需求模型;,以及建造需求模型;,以及建造需求模型;以基本的需求为指南来选择和标识类与对象以基本的需求为指南来选择和标识类与对象以基本的需求为指南来选择和标识类与对象以基本的需求为指南来选择和标识类与对象(包括定义属性和基本操作包括定义属性和基本操作包括定义属性和基本操作包括定义属性和基本操作);定义类的结构和层次;定义类的结构和层次;定义类的结构和层次;定义类的结构和层次;表示类(对象)之间的关系,建立对象表示类(对象)之间的关
20、系,建立对象表示类(对象)之间的关系,建立对象表示类(对象)之间的关系,建立对象-关系模型;关系模型;关系模型;关系模型;建立对象建立对象建立对象建立对象-行为模型;行为模型;行为模型;行为模型;利用用例利用用例利用用例利用用例/场景来复审模型,递进地重复任务场景来复审模型,递进地重复任务场景来复审模型,递进地重复任务场景来复审模型,递进地重复任务1515,直至完成建模。,直至完成建模。,直至完成建模。,直至完成建模。第8页,本讲稿共40页面向对象(面向对象(面向对象(面向对象(OODOOD)设计一般步骤如下:)设计一般步骤如下:)设计一般步骤如下:)设计一般步骤如下:系统设计系统设计系统设计
21、系统设计 将子系统分配到处理器。将子系统分配到处理器。将子系统分配到处理器。将子系统分配到处理器。选择实现数据管理、界面支持和任务管理的设计策略。选择实现数据管理、界面支持和任务管理的设计策略。选择实现数据管理、界面支持和任务管理的设计策略。选择实现数据管理、界面支持和任务管理的设计策略。为系统设计合适的控制机制。为系统设计合适的控制机制。为系统设计合适的控制机制。为系统设计合适的控制机制。复审并考虑权衡复审并考虑权衡复审并考虑权衡复审并考虑权衡 对象设计对象设计对象设计对象设计 在过程级别设计每个操作。在过程级别设计每个操作。在过程级别设计每个操作。在过程级别设计每个操作。定义内部类。定义内
22、部类。定义内部类。定义内部类。为类属性设计内部数据结构为类属性设计内部数据结构为类属性设计内部数据结构为类属性设计内部数据结构 消息设计:使用对象间的协作和对象消息设计:使用对象间的协作和对象消息设计:使用对象间的协作和对象消息设计:使用对象间的协作和对象-关系模型,设计消息模型。关系模型,设计消息模型。关系模型,设计消息模型。关系模型,设计消息模型。复审:复审设计模型,并在需要时迭代。复审:复审设计模型,并在需要时迭代。复审:复审设计模型,并在需要时迭代。复审:复审设计模型,并在需要时迭代。l lOODOOD通常分为高层设计和低层设计两个阶段,高层设计建立应用的体系结构,低通常分为高层设计和
23、低层设计两个阶段,高层设计建立应用的体系结构,低通常分为高层设计和低层设计两个阶段,高层设计建立应用的体系结构,低通常分为高层设计和低层设计两个阶段,高层设计建立应用的体系结构,低层设计集中于类及关系的详细设计。层设计集中于类及关系的详细设计。层设计集中于类及关系的详细设计。层设计集中于类及关系的详细设计。第9页,本讲稿共40页第10页,本讲稿共40页高层设计阶段开发软件的体系结构,构造软件的总体模型。高层设计阶段开发软件的体系结构,构造软件的总体模型。高层设计阶段开发软件的体系结构,构造软件的总体模型。高层设计阶段开发软件的体系结构,构造软件的总体模型。主要是标识在计算机环境中解决问题所需要
24、的概念,并增加一批新类(可使应用软件与系主要是标识在计算机环境中解决问题所需要的概念,并增加一批新类(可使应用软件与系主要是标识在计算机环境中解决问题所需要的概念,并增加一批新类(可使应用软件与系主要是标识在计算机环境中解决问题所需要的概念,并增加一批新类(可使应用软件与系统的外部世界交互的类)。统的外部世界交互的类)。统的外部世界交互的类)。统的外部世界交互的类)。此阶段的输出是适合应用软件要求的类此阶段的输出是适合应用软件要求的类此阶段的输出是适合应用软件要求的类此阶段的输出是适合应用软件要求的类、类之间的关系和应用的子系统视图、类之间的关系和应用的子系统视图、类之间的关系和应用的子系统视
25、图、类之间的关系和应用的子系统视图规格说明。规格说明。规格说明。规格说明。系统级的抉择将影响对应用软件各个子系统的任务分配,但不影响各个类的结构。系统级的抉择将影响对应用软件各个子系统的任务分配,但不影响各个类的结构。系统级的抉择将影响对应用软件各个子系统的任务分配,但不影响各个类的结构。系统级的抉择将影响对应用软件各个子系统的任务分配,但不影响各个类的结构。客户客户客户客户/服务器(服务器(服务器(服务器(C/SC/S)模型是一个典型的高层设计模型,这个模型导出的体系)模型是一个典型的高层设计模型,这个模型导出的体系)模型是一个典型的高层设计模型,这个模型导出的体系)模型是一个典型的高层设计
26、模型,这个模型导出的体系结构既可以在过程性系统中使用,又可在面向对象的系统中使用。结构既可以在过程性系统中使用,又可在面向对象的系统中使用。结构既可以在过程性系统中使用,又可在面向对象的系统中使用。结构既可以在过程性系统中使用,又可在面向对象的系统中使用。建立高层设计模型旨在让系统的一个部分(服务器子系统)提供一组服务给另一个部分建立高层设计模型旨在让系统的一个部分(服务器子系统)提供一组服务给另一个部分建立高层设计模型旨在让系统的一个部分(服务器子系统)提供一组服务给另一个部分建立高层设计模型旨在让系统的一个部分(服务器子系统)提供一组服务给另一个部分(客户子系统)。请求服务的对象都归于客户
27、子系统,而接受请求提供服务的就是服务器。(客户子系统)。请求服务的对象都归于客户子系统,而接受请求提供服务的就是服务器。(客户子系统)。请求服务的对象都归于客户子系统,而接受请求提供服务的就是服务器。(客户子系统)。请求服务的对象都归于客户子系统,而接受请求提供服务的就是服务器。第11页,本讲稿共40页第12页,本讲稿共40页l l类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:信息隐蔽信息隐蔽信息隐蔽信息隐蔽。软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示不被数。软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示
28、不被数。软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示不被数。软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示不被数据类型实例的用户直接存取。对其表示的惟一存取途径只能是界面。据类型实例的用户直接存取。对其表示的惟一存取途径只能是界面。据类型实例的用户直接存取。对其表示的惟一存取途径只能是界面。据类型实例的用户直接存取。对其表示的惟一存取途径只能是界面。消息限制消息限制消息限制消息限制。类的设计者应当为类的命令设计一个明确的界面,该类的实例的用户应当。类的设计者应当为类的命令设计一个明确的界面,该类的实例的用户应当。类的设计者应当为类的命令设计一个明确的界面,该类的实例的用户应当。类
29、的设计者应当为类的命令设计一个明确的界面,该类的实例的用户应当只使用界面提供的操作。只使用界面提供的操作。只使用界面提供的操作。只使用界面提供的操作。狭窄界面狭窄界面狭窄界面狭窄界面。不是所有的操作都是公共的。只有对其他类的实例必要的操作才放到界面。不是所有的操作都是公共的。只有对其他类的实例必要的操作才放到界面。不是所有的操作都是公共的。只有对其他类的实例必要的操作才放到界面。不是所有的操作都是公共的。只有对其他类的实例必要的操作才放到界面上,其他操作应是隐蔽实现的。上,其他操作应是隐蔽实现的。上,其他操作应是隐蔽实现的。上,其他操作应是隐蔽实现的。强内聚强内聚强内聚强内聚。模块内部各个部分
30、之间应有较强的关系,它们不能分别标识。模块内部各个部分之间应有较强的关系,它们不能分别标识。模块内部各个部分之间应有较强的关系,它们不能分别标识。模块内部各个部分之间应有较强的关系,它们不能分别标识。第13页,本讲稿共40页l l类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:弱耦合弱耦合弱耦合弱耦合。在面向对象方法中是最基本的对象,耦合主要指不同对象之间相。在面向对象方法中是最基本的对象,耦合主要指不同对象之间相。在面向对象方法中是最基本的对象,耦合主要指不同对象之间相。在面向对象方法中是最基本的对象,耦合主要指不同对象
31、之间相互关联的紧密程度。耦合程度依赖于所使用的分解方法,互关联的紧密程度。耦合程度依赖于所使用的分解方法,互关联的紧密程度。耦合程度依赖于所使用的分解方法,互关联的紧密程度。耦合程度依赖于所使用的分解方法,“一般一般一般一般/特殊特殊特殊特殊”的的的的继承结构损害了弱耦合的概念。包括继承结构损害了弱耦合的概念。包括继承结构损害了弱耦合的概念。包括继承结构损害了弱耦合的概念。包括交互耦合交互耦合交互耦合交互耦合和和和和继承耦合继承耦合继承耦合继承耦合。显式信息传递显式信息传递显式信息传递显式信息传递。除了依赖于最少的类外,还应该明确在这些类之间的信息流。在类之。除了依赖于最少的类外,还应该明确在
32、这些类之间的信息流。在类之。除了依赖于最少的类外,还应该明确在这些类之间的信息流。在类之。除了依赖于最少的类外,还应该明确在这些类之间的信息流。在类之间全局变量的共享隐含了信息的传递,并且是一种依赖形式。因此,两个类之间的交互间全局变量的共享隐含了信息的传递,并且是一种依赖形式。因此,两个类之间的交互间全局变量的共享隐含了信息的传递,并且是一种依赖形式。因此,两个类之间的交互间全局变量的共享隐含了信息的传递,并且是一种依赖形式。因此,两个类之间的交互应当仅涉及显式信息传递。显式信息传递是通过参数表来完成的。应当仅涉及显式信息传递。显式信息传递是通过参数表来完成的。应当仅涉及显式信息传递。显式信
33、息传递是通过参数表来完成的。应当仅涉及显式信息传递。显式信息传递是通过参数表来完成的。第14页,本讲稿共40页l l类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:类的模块设计还有以下一些方针:派生类当作派生类型派生类当作派生类型派生类当作派生类型派生类当作派生类型。每个派生类应该当做基类的特殊化来开发,而基类所具有的。每个派生类应该当做基类的特殊化来开发,而基类所具有的。每个派生类应该当做基类的特殊化来开发,而基类所具有的。每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。公共界面成为派生类的共有界面的一个子
34、集。公共界面成为派生类的共有界面的一个子集。公共界面成为派生类的共有界面的一个子集。C+C+允许设计者选择类的基类是公有允许设计者选择类的基类是公有允许设计者选择类的基类是公有允许设计者选择类的基类是公有的或私有的。如果基类是公有的,则其公有界面将成为新的派生类的共有界面部分,这表的或私有的。如果基类是公有的,则其公有界面将成为新的派生类的共有界面部分,这表的或私有的。如果基类是公有的,则其公有界面将成为新的派生类的共有界面部分,这表的或私有的。如果基类是公有的,则其公有界面将成为新的派生类的共有界面部分,这表明基类的行为成为派生类的行为部分。如果基类是私有的,它的行为将不是继承类的公共明基类
35、的行为成为派生类的行为部分。如果基类是私有的,它的行为将不是继承类的公共明基类的行为成为派生类的行为部分。如果基类是私有的,它的行为将不是继承类的公共明基类的行为成为派生类的行为部分。如果基类是私有的,它的行为将不是继承类的公共行为部分而是实现部分。对基类的划分是为了实现新类中的服务。行为部分而是实现部分。对基类的划分是为了实现新类中的服务。行为部分而是实现部分。对基类的划分是为了实现新类中的服务。行为部分而是实现部分。对基类的划分是为了实现新类中的服务。抽象类抽象类抽象类抽象类。某些语言提供了一个类,用它作为继承结构的开始点,所有用户定义的类都直接或间接。某些语言提供了一个类,用它作为继承结
36、构的开始点,所有用户定义的类都直接或间接。某些语言提供了一个类,用它作为继承结构的开始点,所有用户定义的类都直接或间接。某些语言提供了一个类,用它作为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。因此,每个继承结构的根类应当是目标概念的一个抽象模型。这个抽象模型生以这个类为基类。因此,每个继承结构的根类应当是目标概念的一个抽象模型。这个抽象模型生以这个类为基类。因此,每个继承结构的根类应当是目标概念的一个抽象模型。这个抽象模型生以这个类为基类。因此,每个继承结构的根类应当是目标概念的一个抽象模型。这个抽象模型生成一个类,它不用于产生实例。它定义了一个最小的共有界面,许多派生类可
37、以加到这个界面上成一个类,它不用于产生实例。它定义了一个最小的共有界面,许多派生类可以加到这个界面上成一个类,它不用于产生实例。它定义了一个最小的共有界面,许多派生类可以加到这个界面上成一个类,它不用于产生实例。它定义了一个最小的共有界面,许多派生类可以加到这个界面上以给出概念的一个特定视图。以给出概念的一个特定视图。以给出概念的一个特定视图。以给出概念的一个特定视图。第15页,本讲稿共40页l l面向对象编程面向对象编程面向对象编程面向对象编程(OOP)(OOP)是在完成面向对象分析、面向对象设计的基础上,利用一种或多是在完成面向对象分析、面向对象设计的基础上,利用一种或多是在完成面向对象分
38、析、面向对象设计的基础上,利用一种或多是在完成面向对象分析、面向对象设计的基础上,利用一种或多种面向对象语言,具体实现软件各项功能的过程。种面向对象语言,具体实现软件各项功能的过程。种面向对象语言,具体实现软件各项功能的过程。种面向对象语言,具体实现软件各项功能的过程。l l面向对象程序设计语言适合用来实现面向对象设计结果,具有方便的开发环境和丰富的类库面向对象程序设计语言适合用来实现面向对象设计结果,具有方便的开发环境和丰富的类库面向对象程序设计语言适合用来实现面向对象设计结果,具有方便的开发环境和丰富的类库面向对象程序设计语言适合用来实现面向对象设计结果,具有方便的开发环境和丰富的类库的面
39、向对象语言,是实现面向对象设计的最佳选择。的面向对象语言,是实现面向对象设计的最佳选择。的面向对象语言,是实现面向对象设计的最佳选择。的面向对象语言,是实现面向对象设计的最佳选择。l l不论采用何种面向对象语言进行编码,它们都有共性的一面,即符合面向对象编不论采用何种面向对象语言进行编码,它们都有共性的一面,即符合面向对象编不论采用何种面向对象语言进行编码,它们都有共性的一面,即符合面向对象编不论采用何种面向对象语言进行编码,它们都有共性的一面,即符合面向对象编程的规范,具有面向对象的编程风格,必须支持下面的概念:程的规范,具有面向对象的编程风格,必须支持下面的概念:程的规范,具有面向对象的编
40、程风格,必须支持下面的概念:程的规范,具有面向对象的编程风格,必须支持下面的概念:封装的封装的封装的封装的对象对象对象对象 类和实例类和实例类和实例类和实例的概念的概念的概念的概念 类的类的类的类的继承继承继承继承 类的类的类的类的多态性多态性多态性多态性l lOOPOOP中的基本构件是对象和类;基本机制是方法中的基本构件是对象和类;基本机制是方法中的基本构件是对象和类;基本机制是方法中的基本构件是对象和类;基本机制是方法、消息和继承性。提高软件开发、消息和继承性。提高软件开发、消息和继承性。提高软件开发、消息和继承性。提高软件开发的抽象层次和软件的重用性,是面向对象编程的基本思想和手段。的抽
41、象层次和软件的重用性,是面向对象编程的基本思想和手段。的抽象层次和软件的重用性,是面向对象编程的基本思想和手段。的抽象层次和软件的重用性,是面向对象编程的基本思想和手段。l l设计重点集中在类和类层次结构的设计、实现和重用上,是面向对象编程和传统程序设计重点集中在类和类层次结构的设计、实现和重用上,是面向对象编程和传统程序设计重点集中在类和类层次结构的设计、实现和重用上,是面向对象编程和传统程序设计重点集中在类和类层次结构的设计、实现和重用上,是面向对象编程和传统程序设计的本质区别。设计的本质区别。设计的本质区别。设计的本质区别。第16页,本讲稿共40页l l面向对象的软件测试(面向对象的软件
42、测试(面向对象的软件测试(面向对象的软件测试(OOTOOT)要面对某些新挑战。同时,作为增量开发过程要面对某些新挑战。同时,作为增量开发过程要面对某些新挑战。同时,作为增量开发过程要面对某些新挑战。同时,作为增量开发过程的一部分,良好的面向对象软件为改善传统测试过程提供了机遇。的一部分,良好的面向对象软件为改善传统测试过程提供了机遇。的一部分,良好的面向对象软件为改善传统测试过程提供了机遇。的一部分,良好的面向对象软件为改善传统测试过程提供了机遇。l l在面向对象编程语言中,继承和多态的特征对测试者来说是一个新的技术难点。面向对象在面向对象编程语言中,继承和多态的特征对测试者来说是一个新的技术
43、难点。面向对象在面向对象编程语言中,继承和多态的特征对测试者来说是一个新的技术难点。面向对象在面向对象编程语言中,继承和多态的特征对测试者来说是一个新的技术难点。面向对象技术不仅给编程语言带来了变化,而且给软件开发的很多方面也带来了变化。技术不仅给编程语言带来了变化,而且给软件开发的很多方面也带来了变化。技术不仅给编程语言带来了变化,而且给软件开发的很多方面也带来了变化。技术不仅给编程语言带来了变化,而且给软件开发的很多方面也带来了变化。l l对于面向对象的软件测试,使用了增量开发过程,重新调整并使用新的符号来分析和设计,对于面向对象的软件测试,使用了增量开发过程,重新调整并使用新的符号来分析
44、和设计,对于面向对象的软件测试,使用了增量开发过程,重新调整并使用新的符号来分析和设计,对于面向对象的软件测试,使用了增量开发过程,重新调整并使用新的符号来分析和设计,并充分利用编程语言的新特性,这些变化提高了软件的可维护性、复用性和灵活性等等:并充分利用编程语言的新特性,这些变化提高了软件的可维护性、复用性和灵活性等等:并充分利用编程语言的新特性,这些变化提高了软件的可维护性、复用性和灵活性等等:并充分利用编程语言的新特性,这些变化提高了软件的可维护性、复用性和灵活性等等:面向对象技术中特有的封装、继承和多态机制,给面向对象测试带来了一些新的特点,面向对象技术中特有的封装、继承和多态机制,给
45、面向对象测试带来了一些新的特点,面向对象技术中特有的封装、继承和多态机制,给面向对象测试带来了一些新的特点,面向对象技术中特有的封装、继承和多态机制,给面向对象测试带来了一些新的特点,增加了测试和调试的难度。增加了测试和调试的难度。增加了测试和调试的难度。增加了测试和调试的难度。在面向对象程序中,对象是属性和操作的封装体。对象彼此之间通过发送消息启动相应的操作,在面向对象程序中,对象是属性和操作的封装体。对象彼此之间通过发送消息启动相应的操作,在面向对象程序中,对象是属性和操作的封装体。对象彼此之间通过发送消息启动相应的操作,在面向对象程序中,对象是属性和操作的封装体。对象彼此之间通过发送消息
46、启动相应的操作,并通过修改对象状态达到转换系统运行状态的目的。并通过修改对象状态达到转换系统运行状态的目的。并通过修改对象状态达到转换系统运行状态的目的。并通过修改对象状态达到转换系统运行状态的目的。第17页,本讲稿共40页基于基于UML的面向对象软件开发的面向对象软件开发UML的基本构造块的基本构造块基于基于UML的面向对象分析的面向对象分析基于基于UML的面向对象设计的面向对象设计PowerDesigner实践实践第18页,本讲稿共40页UMLUML由图和元模型组成,图是语法,元模型是语义。由图和元模型组成,图是语法,元模型是语义。由图和元模型组成,图是语法,元模型是语义。由图和元模型组成
47、,图是语法,元模型是语义。UMLUML主要包主要包主要包主要包括三个基本构造块:事物(建模元素)、图和关系。括三个基本构造块:事物(建模元素)、图和关系。括三个基本构造块:事物(建模元素)、图和关系。括三个基本构造块:事物(建模元素)、图和关系。事物事物事物事物是是实体抽象化的最终结果,是模型中的基本成员,是是实体抽象化的最终结果,是模型中的基本成员,是是实体抽象化的最终结果,是模型中的基本成员,是是实体抽象化的最终结果,是模型中的基本成员,UMLUML中包含结构事中包含结构事中包含结构事中包含结构事物、行为事物、分组事物和注释事物。物、行为事物、分组事物和注释事物。物、行为事物、分组事物和注
48、释事物。物、行为事物、分组事物和注释事物。关系关系关系关系是将事物联系在一起的方式,是将事物联系在一起的方式,是将事物联系在一起的方式,是将事物联系在一起的方式,UMLUML中主要定义了六种关系:依赖、关联、中主要定义了六种关系:依赖、关联、中主要定义了六种关系:依赖、关联、中主要定义了六种关系:依赖、关联、聚合、组合、泛化和实现。聚合、组合、泛化和实现。聚合、组合、泛化和实现。聚合、组合、泛化和实现。图图图图是事物集合的分类,是事物集合的分类,是事物集合的分类,是事物集合的分类,UMLUML中包含中包含中包含中包含9 9种图:种图:种图:种图:n n类图类图类图类图、对象图、对象图、对象图、
49、对象图、用例图用例图用例图用例图、组件图和部署图五种描述静态结构;、组件图和部署图五种描述静态结构;、组件图和部署图五种描述静态结构;、组件图和部署图五种描述静态结构;n n顺序图顺序图顺序图顺序图、状态图、活动图、协作图四种描述动态性质。、状态图、活动图、协作图四种描述动态性质。、状态图、活动图、协作图四种描述动态性质。、状态图、活动图、协作图四种描述动态性质。第19页,本讲稿共40页 事物是实体抽象化的最终结果,是模型中的基本成员,包括:事物是实体抽象化的最终结果,是模型中的基本成员,包括:事物是实体抽象化的最终结果,是模型中的基本成员,包括:事物是实体抽象化的最终结果,是模型中的基本成员
50、,包括:结构事物结构事物结构事物结构事物(StructuralthingsStructuralthings):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,共有以下七种:是软件建模中最常见的元素,共有以下七种:是软件建模中最常见的元素,共有以下七种:是软件建模中最常见的元素,共有以下七种:类(类(类(类(ClassClass):类是指具有相同属性、方法、关系和语义的对象的集