几种典型面向对象方法简介共16页
第9章 面向对象的分析设计方法

第9章 面向对象的分析设计方法
9.1 面向对象的分析与设计方法概 述
面向对象技术是当前的热门话题,也是软件开发方法 的潮流和方向。面向对象方法的形成最初是从面向对象程 序设计语言开始的,随后才逐渐形成了面向对象的分析和 设计。面向对象是近几十年来国内外IT行业最为关注的技 术之一,面向对象技术是一种按照人们对现实世界习惯的 认识论和思维方式来研究和模拟客观世界的方法学。它将 现实世界中的任何事物都视为“对象”,将客观世界看成 是由许多不同种类的对象构成的,每一个对象都有自己的 内部状态和运动规律,不同对象之间的相互联系和相互作 用就构成了完整的客观世界。面向对象方法(Object Oriented,简称OO方法)克服了传统的功能分解方法只能 单纯反映管理功能的结构状态、数据流程模型只侧重反映 事物的信息特征和流程、信息模拟只能被动地迎合实际问 题需要等缺点,构成以系统对象为研究中心,为信息管理 系统的分析与设计提供了一种全新的方法。
第9章 面向对象的分析设计方法
面向对象方法就是以对象为中心、以对象为出发点的方 法。在应用领域中有意义的、与所要解决的问题有关系的任 何人或事物(即我们说的实体)都可以作为对象,它既可以 是具体的物理实体的抽象,也可以是人为的概念,或者是任 何有明确边界和意义的事物或东西。在面向对象方法中,对 象是一组数据(属性)和施加于这些数据上的一组操作代码 (操作)构成的独立类体。换言之,对象是一个有着各种特 殊属性(数据)和行为方式(方法)的逻辑实体。对象是一 个封闭体,它向外界提供一组接口界面,外界通过这些接口 与对象进行交互,这样对象就具有较强的独立性、自治性和 模块性,从而为软件的重用奠定了坚实的基础。
第9章 面向对象的分析设计方法
第9章 面向对象的分析设计方法 章
4-1UML类目介绍

期间,形成了以下 大学派 大学派, 期间,形成了以下2大学派,即: 第一种: 驱动的方法学。 第一种:以“方法(method )”驱动的方法学。 方法( 基本思想:在给出符号体系的基础上, • 基本思想:在给出符号体系的基础上,明确规定 进行的“步骤” 进行的“步骤”,并在每一步中给出 “实施策略”。 实施策略” 代表:P.Coad的 OOA(1990) OOD(91) • 代表:P.Coad的“OOA(1990)”, “ OOD(91) ” 优缺点分析: • 优缺点分析: 优点:容易学习和掌握。 优点:容易学习和掌握。 缺点:不够灵活, 缺点:不够灵活,可能对出现的新问题就没有 办法处理。 办法处理。
2 UML UML概述 1) UML概述
UML是一种可视化语言,用于: 是一种可视化语言,用于: 是一种可视化语言 规约系统的制品 系统的制品; (1)规约系统的制品; 构造系统的制品 系统的制品; (2)构造系统的制品; 建立系统制品的文档 系统制品的文档。 (3)建立系统制品的文档。 UML应用范围 应用范围 UML作为一种一般性的语言 作为一种一般性的语言: UML作为一种一般性的语言: 可用于对象方法和构件方法; (1)可用于对象方法和构件方法; (2)可用于 •所有应用领域 所有应用领域
•••••• •••••• •••••• ••••••
表达模型的工具 -类图、交互图等 需求分析层 类图、 类图 表达模型的工具 -类图、交互图等 类图、 类图 表达模型的工具 设计层
2)面向对象方法术语/符号 2)面向对象方法术语/ 面向对象方法术语 基于面向对象方法的世界观, 大千世界是由对象组成的, 基于面向对象方法的世界观,即“大千世界是由对象组成的, 面向对象方法的世界观 对象有其自己的属性和运动规律, 对象有其自己的属性和运动规律,对象之间的相互作用构成了 客观世界各种各样的系统。 为了支持软件开发, 客观世界各种各样的系统。” 为了支持软件开发,面向对象方 法 主要提供了两类术语: 主要提供了两类术语: 一类是表达结构化事物的术语; 一类是表达结构化事物的术语; 一类是表达关系的术语。 一类是表达关系的术语。
08面向对象导论

第8章面向对象方法学导论哈尔滨理工大学荣成学院李胜利•结构化软件开发曾经给软件产业带来了巨大进步,部分地缓解了软件危机。
使用这种方法开发的许多中、小型软件项目大都获得了成功。
但是,把它应用于大型软件产品的开发时,却很少取得成功。
•在20世纪60年代后期出现了类和对象的概念;80年代中期起,逐步形成了面向对象方法学。
90年代,面向对象成为人们开发软件的首选方法。
总体上说,面向对象技术是当前最好的软件开发技术•面向对象方法学概述•面向对象方法学的主要优点•面向对象的概念•面向对象建模1. 面向对象方法学概述•面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致。
•面向对象方法的要点:(1)客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。
面向对象方法使用对象分解取代了传统方法的功能分解。
(2)把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。
数据表示对象的静态属性,是对象的状态信息。
类中定义的方法,是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码。
(3)按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。
在这种层次结构中,通常下层的派生类继承上层基类的特性(数据和方法),但如果在派生类中对某些特性做了重新描述,则以新描述为准。
即低层的特性将屏蔽高层的同名特性。
(4)对象彼此之间仅能通过传递消息互相通信。
对象与传统的数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发送消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。
也就是说,一切局部于该对象的私有信息,都被封装在对象的定义内,外界看不见,也不能直接操作。
C 面向对象程序设计(2010年清华大学出版社出版的图书)

第1章计算机和C++编程入门 概述 1.1计算机系统 1.2编程和问题求解 1.3 C++入门 1.4测试和调试 小结 自测题答案 编程项目 第2章 C++基础知识 概述
图书五
内容简介
图书目录
《C++面向对象程序设计》从实际应用出发,系统地介绍C++面向对象程序设计的原理、方法和技巧。重点突 出,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的 特征,又能掌握C++语言的编程与应用。全书共8章,主要包括:面向对象程序设计语言概述、C++语言基础知识、 类和对象、对象成员和友员、继承和派生、多态性和运算符重载、模板、C++的输入/输出流。在每一章的知识点 后面,都给出了相应的程序设计实例,这些实例不仅有助于读者巩固知识点的内容,而且更有助于读者创新能力 的培养。
图书一
内容提要
目录
C++面向对象程序设计本书介绍了C++面向对象程序设计的基本知识和编程方法,以及C++面向对象的基本特征。 针对初学者的特点,本书力求通过大量实例、习题和上机实验题,以通俗易懂的语言讲解复杂的概念和方法,使读 者能深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领,以期帮助读者尽快地迈入面向对象程 序设计的大门。
Savitch教授的研究领域包括复杂性理论、形式语言理论、计算语言学和计算机教材的开发。他因为对复杂 性理论所做的贡献而声名远扬,其中包括他提出的第一个完整语言(complete1anguage)范例。这个奠基性的
软件工程-面向对象分析

第7章面向对象分析•7.1.1 面向对象分析过程面向对象的分析主要以用例模型为基础。
开发人员在收集到的原始需求的基础上,通过构建用例模型从而得到系统的需求。
进而再通过对用例模型的完善,使得需求得到改善。
所谓用例是指系统中的一个功能单元,可以描述为参与者与系统之间的一次交互。
用例常被用来收集用户的需求。
①首先要找到系统的操作者,即用例的参与者。
参与者是在系统之外,透过系统边界与系统进行有意义交互的任何事物。
②可以把参与者执行的每一个系统功能都看作一个用例。
可以说,用例描述了系统的功能,涉及系统为了实现一个功能目标而关联的参与者、对象和行为。
③确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了。
把具有相似属性和操作的对象定义为一个类。
边界类示意图控制类示意图目标系统的类可以划分为边界类、控制类和实体类。
Ø边界类代表了系统及其操参与者的边界,描述参与者与系统之间的交互。
它更加关注系统的职责,而不是实现职责的具体细节。
通常,界面控制类、系统和设备接口类都属于边界类。
Ø控制类代表了系统的逻辑控制,描述一个用例所具有的事件流的控制行为,实现对用例行为的封装。
通常,可以为每个用例定义一个控制类。
Ø实体类描述了系统中必须存储的信息及相关的行为,通常对应于现实世界中的事物。
确定了系统的类和对象之后,就可以分析类之间的关系了。
对象或类之间的关系有依赖、关联、聚合、组合、泛化和实现。
①依赖关系是“非结构化”的和短暂的关系,表明某个对象会影响另外一个对象的行为或服务。
②关联关系是“结构化”的关系,描述对象之间的连接。
③聚合关系和组合关系是特殊的关联关系,它们强调整体和部分之间的从属性,组合是聚合的一种形式,组合关系对应的整体和部分具有很强的归属关系和一致的生命期。
比如,计算机和显示器就属于聚合关系。
④泛化关系与类间的继承类似。
⑤实现关系是针对类与接口的关系。
明确了对象、类和类之间的层次关系之后,需要进一步识别出对象之间的动态交互行为,即系统响应外部事件或操作的工作过程。
面向对象方法学

表示类的图
4.2 表示关系的符号
如前所述,类图由类及类与类之间的关系组成。定 义了类之后就可以定义类与类之间的各种关系了。 类与类之间通常有关联、泛化(继承)、依赖和细 化等4种关系。 1. 关联
关联表示两个类的对象之间存在某种语义上的联系。 例如,作家使用计算机,我们就认为在作家和计算 机之间存在某种语义连接,因此,在类图中应该在 作家类和计算机类之间建立关联关系。
(3) 实例(instance)
实例就是由某个特定的类所描述的一个具体的对 象。类是对具有相同属性和行为的一组相似的对象 的抽象,类在现实世界中并不能真正存在。实际上 类是建立对象时使用的“样板”,按照这个样板所 建立的一个个具体的对象,就是类的实际例子,通 常称为实例。当使用“对象”这个术语时,既可以 指一个具体的对象,也可以泛指一般的对象,但是, 当使用“实例”这个术语时,必然是指一个具体的 对象。
(1) 普通关联
普通关联是最常见的关联关系,只要在类与类之间 存在连接关系就可以用普通关联表示。普通关联的 图示符号是连接两个类之间的直线。通常,关联是 双向的,可在一个方向上为关联起一个名字,在另 一个方向上起另一个名字(也可不起名字)。为避 免混淆,在名字前面(或后面)加一个表示关联方 向的黑三角。
面向对象方法学的优点
1. 与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法,这
种方法以算法为核心,把数据和过程作为相互独立 的部分,数据代表问题空间中的客体,程序代码则 用于处理这些数据。
2. 稳定性好
传统的软件开发方法以算法为核心,开发过程基 于功能分析和功能分解。用传统方法所建立起来的 软件系统的结构紧密依赖于系统所要完成的功能, 当功能需求发生变化时将引起软件结构的整体修改。 事实上,用户需求变化大部分是针对功能的,因此, 这样的软件系统是不稳定的。
北邮软件工程课件第7章面向对象分析

一般说来,确定属性的过程包括分析和选择两个步骤。
7.3.4确定属性
属性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。在分析过程中应该首先找出最重要的属性,以后再逐渐把其余属性增添进去。在分析阶段不要考虑那些纯粹用于实现的属性。
通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类—&—对象,因此,分析员应该根据领域知识或常识进一步把隐含的类—&—对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。
筛选出正确的类—&—对象
显然,仅通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的类—&—对象,接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。
1.分析
2.选择
认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性。通常有以下几种常见情况。 误把对象当作属性 把链属性误作为属性 把限定误当成属性 误把内部状态当成了属性 过于细化 存在不一致的属性
图7.5 ATM对象模型中的属性
7.3.5识别继承关系
01
确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织。
ATM打印账单,退出现金兑换卡,请储户拿走它们;储户取走账单和卡
ATM确认取款额在预先规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功地处理完这项事务并返回该账户的新余额[ZK)]
ATM问储户是否继续这项事务;储户回答“不”
系统分析师教材(参考)软件工程专题

专题七:软件工程专题1、软件工程知识1.1概述软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。
其目的是提高软件生产率、提高软件质量、减低软件成本。
软件工程是1968年在德国的NATO会议上提出的,希望用工程化的原则和方法来克服软件危机;而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的辅助,而且缺少有关的文档,使得大量的软件难以维护。
软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工作得组织以及各个阶段如何衔接。
下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档。
化、实现功能的扩充和质告量的改善而修改软件软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。
软件工程包括三个要素:方法、工具和过程。
主要的软件开发方法有以下几种方法:生命周期法:命周期法认为:每一个软件系统都有一定的生命周期。
软件的生命周期是指一个软件系统从其提出、调查到分析、设计和有效使用,直至被淘汰或取代的整个期间。
软件生命周期法就是按软件生命周期的各个阶段划分任务,按一定的规则和步骤,有效地进行软件开发的方法。
通常一个软件系统的生命周期可分为五个阶段:准备阶段、分析阶段、设计阶段、实施阶段、运行与维护阶段原型法:原型法是先根据用户的最主要要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。
原型法分4个阶段:确定用户需求;设计原型;使用、评价原型;修改、完善原型。
1.2软件分析软件开发模型:瀑布模型;演化模型(原型法);螺旋模型;喷泉模型(迭代和无间隙);软件成本模型;可行性分析的任务是从技术上、经济上、使用上、法律上分析需解决的问题是否存在可行的解。
需求分析是软件生存周期中相当重要的一个阶段。
需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。