第八讲面向对象分析与设计(2)
面向对象分析与设计
面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。
通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。
一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。
它强调将问题领域的实体、关系和行为抽象为对象、类和方法。
面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。
二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。
这种模块化可以提高代码的可维护性和可复用性。
2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。
多态则允许对象在不同上下文中表现出不同的行为。
这些特性使得代码更加灵活和易于扩展。
3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。
这种封装和信息隐藏可以保护数据的完整性和安全性。
4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。
这种流程可以提高开发效率,并减少错误和重复工作。
三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。
通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。
2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。
通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。
3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。
同时,还需要考虑系统的性能、安全和可维护性等方面的问题。
4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。
面向对象分析与设计
面向对象分析与设计1 什么是分析与设计分析强调对问题和需求的调查和研究而不是解决方案设计强调满足需求的概念上的解决方案(在software和hardware方面)不是具体实现2 什么是面向分析与设计面向对象分析(object-oriented analysis)强调在问题领域内发现和描述对象面向对象设计(object-oriented design)强调的是在定义软件对象以及它们如何协助以实现需求3 UML在OOA/D中的作用统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言,在OOA/D 中标准的图形化表示法。
4 软件开发分为几个阶段每个阶段的目标???软件开发一般分为五个阶段:1.问题的定义及规划此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
5 迭代与增量式,什么是迭代式开发?迭代式开发解决的问题?迭代:在迭代式生命周期中,开发被组织成一系列固定和短期项目。
面向对象分析与设计
面向对象:面向对象是软件开发方法。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象分析与设计:OOAD是现代软件企业广为采用的一项有效技术。
OOAD方法要求在设计中要映射现实世界中指定问题域中的对象和实体,例如:顾客、汽车和销售人员等。
这就需要设计要尽可能地接近现实世界,即以最自然的方式表述实体。
目前众多的软件项目有什么样的问题呢?早些时候上ERP的企业在企业发展的时候发现原有的ERP系统需要改进,可是要改进或者是更改现有的ERP系统,唯一的方法就是重新开发一个ERP系统。
这对于企业来说是笔不小的支出。
此时,落后的信息系统就成为制约企业发展的重要因素。
是什么原因造成了这种情况呢?主要的因素是传统的系统分析是在假定需求不变的情况下进行的,这样可以把企业的资源配置到最优的程度。
可是在现代瞬息万变的社会,一个企业固守旧有模式,势必会在竞争中处于劣势(因此现在也出现了"组件化"的ERP,这是题外话)。
既然企业的需求是变化的、不稳定的,那么以变化的需求为基础建立起来的企业信息系统当然也就不稳定了。
这时候,有个问题就产生了,前面我们已经说过,需求是项目的根本,既然需求都是不稳定的,那么何以建立起稳定的企业信息系统呢?要回答这个问题,首先要比较面向过程和面向对象的开发方法的差别,传统的面向过程的开发方法在前20年大行其道,为中国企业的信息化建设立下了汗马功劳。
之所以称为面向过程,是因为开发的焦点集中于过程,开发者集中于以函数为核心的过程,例如前些年很多人试图编写一些通用转账函数来满足银行的需求。
面向过程的开发语言包括:Cobol、Pascal、C及C的变形语言。
面向对象的概念是在近10年才进入中国的,而它的思想至今也没有真正意义上得到普及。
面向对象分析与设计
1.1软件开发过程1.2 面向对象技术面向对象(Object-oriented)技术是一种新型程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象、类、封装、继承、聚合、关联、消息、多态等基本概念来构造系统的软件开发方法。
它充分体现了分解、抽象、模块化、信息隐蔽等思想,可以有效地提高软件生产率、缩短软件开发时间、提高软件质量,是控制软件复杂性的有效途径。
(1)传统结构化方法与面向对象方法比较?传统的结构化方法着眼于一个信息系统需要什么样的方法和处理过程。
以过程抽象来对待系统的需求,其主要思想就是对问题进行功能分解,如果分解后得到的功能过大,那么再对这些功能进行分解,直到最后分解得到的功能能比较方便地处理和理解为止。
它从算法的角度进行建模,所有的软件都用过程或者函数作为其主要构造块,所以,具有模型脆弱、难以适应需求的变动、维护较困难等特点。
与传统的结构化方法相比,面向对象方法在描述和理解问题域时采用截然不同的方法。
其基本思想是,对问题域进行自然分割,以更接近人类思维方式建立问题域模型,从而使设计出的软件尽可能直观地描述现实世界,具有更好的可维护性,能适应用户需求的变化。
面向对象技术优点:首先,用面向对象技术开发的系统比较稳定,较小的需求变化不会导致大的系统结构的改变。
其次,用面向对象技术开发的系统易于理解。
结构化方法和面向对象方法对现实世界采用了不同的映射方法。
在结构化方法中,现实世界被映射为功能的集合;在面向对象方法中,现实世界中的实体及其相互关系被映射为对象及对象间的关系,实体之间的相互作用被映射为对象间的消息发送,以及其他类似的各种映射关系。
第三,采用面向对象技术开发的系统具有更好的适应性,能更好地适应用户需求的变化,有助于改造大型软件系统。
第四,用面向对象技术开发的系统具有更高的可靠性,有助于软件的维护与复用。
第五,面向对象技术有助于提高软件的质量和生产率。
(2)面向对象的基本原则抽象、封装、委托、分类、继承1.3 面向对象基本概念对象:对象(object)是系统中用来描述客观事物的一个实体,它是构造系统的一个基本单位。
UML2面向对象分析与设计(第2版)
5.3架构分析 5.4构造用例实现
5.5定义分析类
5.6练习题
6.1设计需要原则
6.2 Liskov替换原 则
6.3开放—封闭原则 6.4单一职责原则
6.6依赖倒置原则
6.5接口隔离原则
6.7练习题
01
7.1模式与 设计模式
02
7.2 GoF模 式
03
7.3更多的 设计模式
04
7.4职责分 配模式
UML2面向对象分析与设计(第2 版)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
02 内容摘要 04 精彩摘录 06 作者介绍
思维导图
本书关键字分析思维导图
设计
软件开发
例
方法
基础
设计
问题
面向对 象分析
分析
书
面向对象
业务
版
模型
类
建模
结构
架构
原则
内容摘要
内容摘要
分析和设计是软件开发中至关重要的一环,面向对象的方法是主流的软件开发方法,UML是用于面向对象分 析设计的标准化建模语言。本书围绕这3个方面展开,以论述分析设计建模过程为最终目标,以面向对象方法作为 建模的理论基础,以UML作为建模支撑语言。全书从面向对象和UML的基本概念入手,循序渐进地讲解业务建模、 需求建模、需求分析、设计原则和模式、架构设计、构件设计和代码生成等分析设计中的各个知识点,并通过多 个贯穿全书的案例将各个知识点串联起来,形成一套完整的面向对象分析设计方法论。本书是作者多年从事软件 工程教学和软件项目开发实践的总结,书中并没有太多抽象的概念,主要**实际软件开发中所需要的知识和实践 技能,力求做到通俗易懂。
面向对象分析与设计UML2.0版课程设计 (2)
面向对象分析与设计UML2.0版课程设计课程设计目的本课程设计旨在通过实践,掌握面向对象分析与设计方法以及UML2.0建模技巧,提高软件开发能力和水平。
同时还将通过实际项目案例演示,帮助学生深入理解面向对象设计原则,提高分析问题和解决问题的能力。
课程设计内容本课程设计将涉及以下内容:1.面向对象分析和设计的基本概念2.UML2.0建模工具的使用方法3.面向对象分析和设计中的常用模型,如用例图、类图、时序图、活动图等4.实际项目案例演示5.提高分析问题和解决问题的能力课程设计计划第一周•课程介绍•面向对象分析和设计基本概念和原则•了解UML2.0建模工具第二周•UML2.0建模工具的使用方法•用例图的绘制和使用•用例图分析•类图和对象的概念•类图中的关系•类图建模案例第四周•类图进阶知识:泛化、实现、依赖、关联和聚合、组合•类图进阶案例分析第五周•时序图和协作图,建模时序图和协作图•对象参与建模案例第六周•状态图和活动图,建模状态图和活动图•状态图和活动图建模案例第七周•实际项目案例演示•项目需求分析和设计文档编写要求实际项目案例演示课程设计最后一周将涉及实际项目案例演示。
分组进行项目分析和设计,演示分析结果和设计文档并进行点评。
案例描述设计一个系统来优化某个大学的教务管理,实现学生选课、教师上课、作业批改等功能。
通过与业务方沟通和市场调研,分析该系统的需求,包括用户需求、功能需求和非功能需求。
•用户需求:学生、教师、管理员•功能需求:选课、退课、添加课程、补选、查看课表、上课、考试、评分、拒绝选课、作业批改、发布通知、查看成绩等•非功能需求:安全性、性能、可用性、易用性、可扩展性等设计文档设计文档应包括以下内容:1.需求分析文档2.领域模型3.用例图4.类图5.时序图和活动图6.状态图7.实现文档结语面向对象分析与设计UML2.0版课程设计旨在帮助学生掌握面向对象分析和设计的基本方法和技巧。
通过课程设计中的实际项目演示,完成对整体理论知识的实践运用,进一步提升了应用设计能力。
面向对象分析与设计
面向对象分析与设计面向对象分析与设计(Object-oriented analysis and design)是软件工程领域中的一种方法论,用于解决软件系统开发过程中的问题和需求。
本文将对面向对象分析与设计的基本概念、流程和常用方法进行介绍,并附带答案和解析。
第一部分:面向对象分析(Object-oriented analysis)面向对象分析是软件开发过程中的第一步,旨在理解问题域并建立领域模型。
面向对象分析有以下几个重要概念:1. 对象(Object):对象是系统中的一个实体,包含数据和方法。
对象可以是具体的实物、虚拟的概念或一组相关的数据和行为。
2. 类(Class):类是一种抽象的定义,描述了一组具有相同特征和行为的对象。
3. 属性(Attribute):属性是对象的特征,用于描述对象的状态。
4. 方法(Method):方法是对象的行为,用于描述对象可以执行的操作。
面向对象分析的主要流程包括以下步骤:1. 需求收集:收集系统的需求,与利益相关者沟通,了解系统的功能和性能要求。
2. 领域建模:对现实世界的问题域进行抽象和建模,识别出系统中的对象和它们之间的关系。
3. 需求分析与规约:通过使用用例、活动图和状态图等工具对需求进行分析和规约,明确功能和交互细节。
4. 领域模型验证:与利益相关者验证领域模型的准确性和实用性,确保模型能够满足系统需求。
第二部分:面向对象设计(Object-oriented design)面向对象设计是在面向对象分析的基础上,进一步细化领域模型,为系统的实现提供指导。
面向对象设计有以下几个常用方法:1. 类图(Class diagram):类图用于展示类、属性和方法之间的关系。
类图包括类的名称、属性和方法,并通过关联、继承和聚合等关系展示类之间的联系。
2. 对象图(Object diagram):对象图用于展示类的实例和对象之间的关系。
对象图是类图的实例化表示,展示了系统在某一时刻的对象及其特定的属性值。
面向对象分析与设计方法
面向对象分析与设计方法面向对象分析与设计方法(Object-oriented Analysis and Design,简称OOAD)是一种用于系统开发的方法论,它倡导通过抽象和模块化的方式来分析和设计系统。
在软件开发领域,面向对象的方法已经成为主流,它具有良好的可维护性、可扩展性和可重用性。
一、面向对象分析(Object-oriented Analysis)面向对象分析是软件开发过程的第一步,它主要涉及到研究问题域并确定需求。
在面向对象分析阶段,开发团队与用户和领域专家进行密切合作,以确保对问题域的深入理解。
这一阶段的重要任务包括:1. 需求收集与分析:通过与客户和用户的交流,明确系统的功能需求和业务流程。
分析师可以使用各种技术(如访谈、问卷调查、观察等)来获取准确的需求。
2. 领域建模:通过对问题域的建模,深入理解业务领域的概念、业务规则和相关过程。
建模工具如UML(统一建模语言)可以被用来表示领域模型。
3. 构建用例模型:用例模型是对系统功能需求的描述,它描述了系统与外部参与者之间的交互。
用例模型可以帮助开发团队明确系统的边界和关键功能。
二、面向对象设计(Object-oriented Design)在面向对象设计阶段,分析师通过对需求的深入理解和领域模型的基础上,开始设计系统的结构和组织。
设计的目标是构建一个高效、灵活和可扩展的系统。
以下是面向对象设计的主要任务:1. 构建类模型:类是面向对象系统中最基本的构建块。
在设计阶段,分析师需要根据领域模型和需求,识别出系统中的类,并定义它们的属性和行为。
2. 定义类之间的关系:在面向对象系统中,类之间的关系非常重要。
通过定义关联、继承、聚合和依赖等关系,可以更好地组织系统的结构,使系统具有更好的灵活性和可扩展性。
3. 定义接口和协议:接口和协议定义了类之间的合作方式,它们定义了类的公共方法和行为。
通过良好的接口设计,可以实现系统模块的解耦合,提高系统的可维护性和可重用性。
面向对象分析与设计
面向对象分析与设计面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)是一种在软件工程中常用的方法论,它以面向对象的思维方式来进行软件系统的分析和设计。
本文将对面向对象分析与设计的概念、主要步骤和设计原则进行详细介绍。
一、概念面向对象分析与设计是一种将实际问题抽象为对象和类的方法。
它将问题空间中的实体、行为和关系转化为软件系统中的对象、方法和类,并且通过封装、继承和多态等机制来实现软件系统的模块化和可维护性。
二、主要步骤1. 需求分析:通过与用户沟通,获取系统需求,并将需求转化为用例模型或用户故事。
在需求分析阶段,可以使用用例图、活动图等工具来描述系统的功能和用户的交互过程。
2. 领域建模:通过分析问题领域中的实体、行为和关系,构建领域模型。
领域模型可使用类图、状态图等工具来表示,它可以帮助开发团队更好地理解和把握系统的核心概念。
3. 概念架构设计:根据需求和领域模型,设计概念架构,也称为系统架构。
概念架构是一个逻辑上的模型,它描述了系统的整体结构和各个模块之间的关系。
常见的概念架构模式有层次结构、客户-服务器和发布-订阅等。
4. 详细设计:在概念架构的基础上,对系统进行详细设计。
详细设计包括定义类的具体属性和方法、设计模块之间的接口和通信方式等。
可以使用类图、时序图等工具来进行详细设计。
5. 编码和测试:根据详细设计文档进行编码,并编写对应的单元测试和集成测试。
编码应遵循面向对象的编程原则,例如封装、继承和多态等。
测试阶段需要验证代码的正确性和功能完整性。
三、设计原则1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。
这样可以降低类的复杂度,提高代码的可维护性。
2. 开闭原则(Open-Closed Principle,OCP):软件实体应该对扩展开放,对修改封闭。
通过使用抽象和接口,可以实现系统的可扩展性,而不需要修改已有的代码。
面向对象分析与设计基础知识讲解
面向对象分析与设计基础知识讲解面向对象分析与设计(Object-oriented analysis and design,简称OOAD)是软件工程领域中重要的一部分。
它是指通过对现实世界的事物进行抽象和建模,以实现软件系统的开发和设计。
本文将介绍面向对象分析与设计的基础知识,包括面向对象的概念、面向对象分析和面向对象设计的过程。
一、面向对象的概念面向对象是一种软件开发方法,将现实世界抽象成为对象和对象之间的关系。
在面向对象的设计中,对象是系统中具体的实体,它包含了数据和操作数据的方法。
对象之间通过消息传递来完成协作和交互,从而实现系统的功能。
面向对象的四个基本概念:1. 类(Class): 类是对象的抽象,它定义了对象的属性和行为。
每个对象都是根据类的定义创建的。
2. 对象(Object): 对象是类的实例,它具有类定义的属性和行为。
每个对象都有唯一的身份,可以通过引用来访问。
3. 继承(Inheritance): 继承是指通过已有的类创建新的类,新类继承了原有类的属性和行为。
继承使得代码的复用更加方便,也提高了代码的可维护性。
4. 多态(Polymorphism): 多态是指同一个方法可以根据不同的对象产生不同的行为。
多态通过继承和接口实现。
二、面向对象分析(OOA)面向对象分析是软件开发中的第一步,它的目标是理解系统的需求,确定系统中的对象以及它们之间的关系。
面向对象分析主要包括以下步骤:1. 确定系统的边界和范围:明确系统要解决的问题和目标。
2. 确定系统的对象:从需求文档中提取对象,并识别它们之间的关系。
3. 定义对象的属性和行为:确定每个对象的属性和操作。
4. 划分对象的责任:将对象的操作分配到合适的对象上,确保每个对象的职责明确。
三、面向对象设计(OOD)面向对象设计是根据面向对象分析的结果,通过定义类和交互关系来实现系统的设计。
面向对象设计要考虑到系统的可扩展性、可维护性和可重用性。
面向对象分析与设计(第二版)习题答案
面向对象分析与设计(第二版)习题答案第一章:面向对象基础知识1.1 什么是面向对象分析和设计?面向对象分析和设计(Object-Oriented Analysis and Design,OOAD)是软件工程中一种常用的方法论,通过将问题领域进行建模,通过对象、类、继承、封装等概念来描述现实世界中的实体、关系和行为。
面向对象分析和设计的目标是开发出可复用、可维护、可扩展、高质量的软件系统。
1.2 面向对象分析和设计的优势有哪些?面向对象分析和设计有以下优势: - 高度模块化:通过将系统划分为多个独立的对象,便于理解和设计系统的各个部分。
- 可复用性:面向对象设计强调对象的复用,通过定义通用的类和接口,可以提高代码的复用程度。
- 可维护性:面向对象的封装特性使得系统的各个部分具有独立性,便于维护和修改。
- 可扩展性:通过继承和多态等特性,可以方便地扩展和修改系统的功能。
- 高可靠性:面向对象的封装和隐藏特性可以减少系统中的错误和安全漏洞。
- 开发效率高:面向对象的分析和设计提供了一种更自然的思考和描述问题的方法,可以提高开发效率。
第二章:面向对象建模2.1 对象的特征有哪些?对象具有以下特征: - 状态(State):对象的状态是对象的属性值的集合,表示对象的某个时刻的状态。
- 行为(Behavior):对象可以执行的操作,描述了对象能够做什么。
- 身份(Identity):每个对象都有唯一的身份,可以通过身份来区分不同的对象。
2.2 类和对象之间的关系有哪些?类和对象之间有以下关系: - 实例化(Instantiation):类是对象的模板,对象是类的一个具体实例。
- 继承(Inheritance):一个类可以继承另一个类的属性和方法。
- 聚合(Aggregation):一个类可以包含其他类的对象作为成员变量。
- 关联(Association):两个类之间存在某种关系,一个类的对象可以访问另一个类的对象。
面向对象分析与设计
面向对象分析与设计一、引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,用于解决复杂系统的设计与开发问题。
本文将介绍面向对象分析与设计的概念、原则和过程,并结合实际案例说明其重要性和应用。
二、概念解析1. 面向对象分析(Object-Oriented Analysis,简称OOA):通过识别和描述系统所涉及的对象及其相互关系,以及对象的属性和行为,从而确定系统需求和问题领域的分析方法。
2. 面向对象设计(Object-Oriented Design,简称OOD):基于面向对象分析的结果,通过定义类、抽象数据类型、方法、接口等概念,设计出系统的结构和组织,以及类之间的关系和交互方式。
三、面向对象分析与设计的原则1. 单一职责原则(Single Responsibility Principle,简称SRP):一个类只负责一项职责,保证类的内聚性和高内聚性。
2. 开放封闭原则(Open-Closed Principle,简称OCP):系统中的类、模块等应该对拓展开放,对修改封闭,通过继承、接口等方式实现。
3. 里氏替换原则(Liskov Substitution Principle,简称LSP):所有引用基类的地方必须能透明地使用其子类的对象,即子类必须能够替换基类。
4. 依赖倒置原则(Dependency Inversion Principle,简称DIP):高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。
5. 接口隔离原则(Interface Segregation Principle,简称ISP):客户端不应该依赖于它不需要的接口,接口应该进行细化拆分以适应不同的场景和客户端需求。
6. 迪米特法则(Law of Demeter,简称LoD):一个对象应该对其他对象有尽可能少的了解,减少耦合性,降低系统的复杂度。
面向对象分析与设计方法
面向对象分析与设计方法在软件开发中,面向对象分析与设计(OOAD)是一种常用的方法和技术,旨在通过对问题领域中的对象进行建模和分析,然后基于这些模型进行软件设计和实现。
本文将介绍面向对象分析与设计方法,并讨论其在软件开发中的应用。
一、概述面向对象分析与设计方法是一种基于对象的思维方式和开发过程。
它将问题领域中的实体、关系和行为看作对象,通过识别、分类和定义这些对象,建立起领域模型。
面向对象分析和设计方法主要包括以下几个步骤:1.需求分析:分析用户需求,识别系统的功能和性能要求。
2.领域建模:通过抽象和分类,识别问题领域中的实体、关系和行为。
3.对象设计:定义对象的属性、方法和关系,确定对象之间的协作方式。
4.系统设计:将对象组织成类和模块,确定系统的结构和架构。
5.实现和测试:基于设计结果进行编码实现,并进行测试验证。
二、面向对象分析与设计方法的特点面向对象分析与设计方法具有以下几个特点:1.模块化:将系统划分为独立的、可重用的模块,从而简化系统的设计和实现。
2.封装性:将数据和处理逻辑封装在对象中,实现了数据和行为的统一管理。
3.继承性:通过继承机制,实现了代码的重用和扩展,提高了系统的灵活性。
4.多态性:通过多态机制,实现了对象的动态行为绑定,提高了系统的可扩展性。
5.抽象性:通过抽象机制,将对象的共性特征抽象成类的属性和方法,实现了模型的简化和易维护性。
三、面向对象分析与设计方法的应用面向对象分析与设计方法广泛应用于软件开发中,尤其适用于中大型软件系统的开发和维护。
它可以提高软件系统的可维护性、可重用性和可扩展性,并降低软件开发的风险和成本。
面向对象分析与设计方法在以下方面有着重要的应用:1.需求分析:通过面向对象的方法,将用户需求转化为面向对象模型,明确系统的功能和性能需求。
2.架构设计:通过面向对象的架构设计,组织系统的各个模块和类之间的关系,确保系统的稳定性和可扩展性。
3.模块设计:通过面向对象的模块设计,定义模块的接口和功能,实现系统的解耦和模块化。
面向对象的分析与设计-分析篇
健壮分析
分析模型
2 2
需求模型
OOA是将问题域中的事物抽象为系统中的对象
抽象的目标是系统责任——需求 用况的概念解决了对需求的描述问题
系统责任
(抽象的目标)
需求模型 (用况图)
OOA模型 (类图)
问题域
(抽象的来源)
3 3
5.2 基本思路
问题的提出:在系统尚未存在时,如何描绘用户需要一 个什么样的系统?如何规范地定义用户需求? 考虑问题的思路:把系统看作一个黑箱,看它对外部的 客观世界发挥什么作用,描述其外部可见的行为。
学生
本科生
研究生
17 17
主动对象(active object)——至少有一个操作不需 要接收消息就能主动执行的对象 用于描述具有主动行为的事物 主动对象的类叫做主动类(active class) 被动对象(passive object) ——每个操作都必须在 消息的驱动下才能执行的对象
18 18
类的语义
OO方法中的类在不同的语境下有两种不同的语义:
1. 一个类代表由它的全部对象实例所构成的群体 日常语言表达中的例子:
“公司里有管理人员、技术人员和市场人员” “马路上汽车很多”
在OO模型中:
每个类都是由它的全部对象实例所构成的集合 类代表了它的全部对象实例。
2. 一个类代表属于该类的任意一个对象实例 从大量的个体中抽象出一个概念,再运用这个概念时就 可以代表其中的任何一个个体,例如:
系统管理员
系统维护
普通用户
登录
14 14
2、一个用况的执行,可能需要两个(甚至多个)参与者同时 与系统交互。
例:网上购物
客户
供货商 网上购物
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型定义
• 类型是一组实体都共享的结构或行为 特性的准确描述。
• 类型定义是对对象的类的实现,不同 类型的这种对象不可相互交换,或它 们最多可以在受限制的条件下交换。
2013-7-5
第八讲 面向对象分析与设计(2)
11
并发性
• 对于某种问题,一个自动系统可能不 得不同时解决许多不同的事件。
21
• OOA与OOD采用一致的概念、原则和表 示法,这是面向对象的分析与设计优 于传统的软件工程方法的重要原因之 一。它们不存在转换! • 但是各有不同的内容、策略和侧重点。 • 接下来我们继续研究OOA和OOD。
2013-7-5
第八讲 面向对象分析与设计(2)
22
面向对象分析的主要内容
• 面向对象分析的主要内容包括:
2013-7-5
第八讲 面向对象分析与设计(2)
18
面向对象设计(OOD)
• 面向对象设计是一种设计方法;它包含 面向对象分解的过程,以及一种表示方 法,用来描写设计中的系统的逻辑模型 与物理模型、静态模型与动态模型。
2013-7-5
第八讲 面向对象分析与设计(2)
19
面向对象编程(OOP)
• 面向对象编程是一种实现方法:程序被 组织成对象的协作集合,每一个对象代 表某个类的一个实例,对象的类是通过 继承关系联合在一起的类层次中的所有 成员。
2013-7-5 第八讲 面向对象分析与设计(2) 37
2、标识类和对象
• 标识类与对象是一致的。在确定系统的 用例后,可标识类及类的属性和操作。
2013-7-5
第八讲 面向对象分析与设计(2)
38
OOA模型及详细说明
• 完整的OOA模型分为基本模型和补充模 型以及详细说明。
2013-7-5
第八讲 面向对象分析与设计(2)
2
• 面向对象技术支持系统开发过程中的迭 代和增量开发。
• 下面从宏观和微观层面来了解其开发过 程。
2013-7-5
第八讲 面向对象分析与设计(2)
3
开发的宏观过程
• • • • • 建立核心需求(概念化) 开发要求的行为的模式(分析) 创立体系结构(设计) 演化实现(实现) 管理后续的演化(维护)
42
• 一、 基本模型 • 基本模型是一个类图(class diagram), 是以直观的方式表达系统最重要的信息。 OOA基本模型的三个层次分别描述了: 系统中应设哪几类对象,每类对象的内 部构成,对象与外部的关系。
2013-7-5
第八讲 面向对象分析与设计(2)
43
二、 补充模型 补充模型有主题图和交互图。 1、主题(subject)又称为子系统(subsystem)是将一些联系 密切的类组织在一起的类的集合。按照粒度控制原则,将系 统组成几个主题,便于理解。 主题图画出了系统的主题。 2、交互图(interaction diagram) 是Use case与系统成分 之间的对照图。 三、详细说明 按照分析方法所要求的格式,对分析模型进行说明和解 释。主要以文字为主。
2013-7-5
第八讲 面向对象分析与设计(2)
31
面向对象的分析过程
2013-7-5
第八讲 面向对象分析与设计(2)
32
实
例
• 银行网络系统--ATM(Auto Trade Machine) • 采用OMT方法对银行网络系统 ATM(Auto Trade Machine) 进行分析 和设计。
2013-7-5
–关联关系(对象之间的引用和消息传递等)
2013-7-5
第八讲 面向对象分析与设计(2)
24
动态结构分析
• 动态行为描述了系统中对象的合法状态序列。 • 对象的动态行为通常用动态模型来表示,它包括 两方面的内容:
– 一是单个对象自身的生命周期演化,主要包括三个组 成部分:
• 一是对象在生命周期中可能状态; • 二是对象发生状态转换时要执行的动作; • 三是导致对象从一个状态到另外一个状态的转换的事件,事 件是控制状态转换的条件。
– 一是整个系统中对象间的消息传递和协同工作。
2013-7-5
第八讲 面向对象分析与设计(2)
25
动态结构分析
• 系统中对象协作的动态性质可以由一组事 件序列来描述。 • 动态行为与静态结构密切相关并且受其约 束。状态是对象属性和关联的具体取值, 而静态结构限制了对象状态的取值范围。 • 对象状态的变化是通过对象的操作来完成 的。
– 算法分解
– 面向对象的分解:将世界看作是一个自治主体的集合, 它们协作执行某个更高层的行为。每个对象都包括了 其独有的行为,而且每一个都模拟了真实世界中的某 个对象。对象是一个表示某个良好定义的行为的有形 实体。对象执行动作,而我们通过发送消息告诉它们 执行的任务。这种分解是基于对象而不算法。
2013-7-5
2013-7-5
第八讲 面向对象分析与设计(2)
34
银行网络系统ATM(Auto Trade Machine)
出纳站 自动出纳机
案 例
一
分理处 计算机
自动出纳机 用户 自动出纳机 分行计算机 分理处 计算机
账户
账户
出纳站
图4.6 银行网络系统的示意图
2013-7-5
第八讲 面向对象分析与设计(2)
第八讲 面向对象分析与设计(2)
33
问题的陈述
• 银行网络系统包括人工出纳和分行共享的自动 出纳机;各分理处用自己的计算机处理业务 (保存账户、处理事务等);各分理处与出纳 站通过网络通信;出纳站录入账户和事务数据; 自动出纳机与分行计算机通信;自动出纳机与 用户接口,接受现金卡;发放现金;打印收据; 分行计算机与拨款分理处结账。 • 要求系统正确处理同一账户的并发访问;网络 费用平均摊派给各分理处。图1给出了银行网 用户基本需求 标识类和对象 定义类的结构和层次 表示类(对象)间的关系 为对象行为建模
图 OOA分析过程
2013-7-5
第八讲 面向对象分析与设计(2)
36
1、获取用户基本需求 • 用户与开发者之间进行充分交流,常用 User case来收集和描述用户的需求。 即先标识使用该系统的不同的行为者 (actor)。 • 行为者所提出的每个使用场景(或功能) 称为一个用例,所有的用例则构成完整 的系统需求。
2013-7-5
第八讲 面向对象分析与设计(2)
4
开发的微观过程
• 识别一个给定的抽象层次上的类和对 象 • 识别类和对象的语义 • 识别类和对象之间的关系
• 规定这些类和对象之间的接口,然后 说明这些类和对象的实现
2013-7-5
第八讲 面向对象分析与设计(2)
5
对象模型
• 面向对象技术建立在一个合理的工程 基础上,我们将它的组成部分总称为 对象模型。
2013-7-5
第八讲 面向对象分析与设计(2)
26
面向对象的分析模型
目标:用规范的面向对象图表和文字来描述所要建造
的软件系统,以便在用户与系统分析人员之间达成共 识,同时使后续工作得以继续。
内容:需求描述
基本模型 Class类图
对象层
辅助模型 Sequence 交互图 Collaboration 协作图 State Transition 状态转换图 Component 包图
–静态结构分析 –动态行为分析
2013-7-5
第八讲 面向对象分析与设计(2)
23
静态结构分析
• 静态结构首先要确定对象和对象类,然后 描述对象、类以及类间的相互关系:
–一般化与特殊化关系 (基类与派生类) –聚合关系(对象之间的组合构造关系 )
• 高层次的对象是容器对象,称为聚合对象; • 低层次的对象是内含对象,称为组成对象。
2013-7-5
第八讲 面向对象分析与设计(2)
13
软件的复杂性
• Brooks指出:软件的复杂性是一个基本 性质,而不是一个偶然性质。由4个因 素造成:
– – – – 问题领域的复杂性 管理开发过程的困难 软件可能的灵活性 表述离散系统行为的困难
2013-7-5
第八讲 面向对象分析与设计(2)
14
第八讲 面向对象分析与设计(2)
16
• 软件本身是复杂的,软件开发组的任务 就是巧妙地设计出简单的构想。
• 通过面向对象分解可将世界看作是相互 协作以达到某个更高层行为的对象的有 意义集合。
2013-7-5
第八讲 面向对象分析与设计(2)
17
面向对象分析 (OOA)
• 面向对象分析是一种分析方法:它 可在问题域的词汇表中找到的类和 对象的观点来审视需求。
类图(Class)
类图是系统模型的基础,描述系统的静态结构。
三个层次:
• 对象层:描述问题域和系统责任所需的对象 • 关系层:类之间的相互关系 • 特征层:类的属性和操作(分析阶段不用细化)
2013-7-5
第八讲 面向对象分析与设计(2)
29
顺序图(Sequence)
按时间顺序排列在完成某一功能过程中对象之间的交互 行为。
• 也有一些软件系统并不复杂。但这些应 用程序在很大程度上容易被人遗忘,它 们由一个人具体说明、构造、维护和使 用,这个人通常是业余程序员或处在孤 独工作中的专业开发人员。这些程序的 用途十分有限,生命短暂。
2013-7-5
第八讲 面向对象分析与设计(2)
15
• 在设计一个复杂的软件系统时,通常将它分解 成更小的部分,再将它们单独精化。有两种分 解:
2013-7-5
第八讲 面向对象分析与设计(2)
8
模块化
• 将一个程序划分为单个的构件可在某种程度上 降低复杂性。。。 • 模块化是指将程序分成若干模块,这些模块可 以独立编译,但与其他模块又有联系。 • C++的模块只是独立编译的文件。传统做法是 将模块接口放在.h文件中,模块的实现放 在.cpp文件中,各文件之间的依赖性可通过 #include宏来表示。是一个约定,不是需求也 不是语言本身强加的。