程序设计与程序设计语言_第1页
程序设计与程序设计语言_第2页
程序设计与程序设计语言_第3页
程序设计与程序设计语言_第4页
程序设计与程序设计语言_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象的系统分析与设计 宋呦宋呦 唐山学院计算机科学与技术系唐山学院计算机科学与技术系 一、系统建模与面向对象 1.1 软件的概念、特点和分类 n现代软件的概念和特点 q软件规模大 q软件开发规范并趋于标准化 q软件开发方法多,有大量的软件工 具支持 q注重软件开发的管理 q软件维护相对过去容易得多 软件的分类 n(1)按软件的功能划分 q系统软件 q支撑软件 q应用软件 n(2)按软件的规模划分 q微型软件 q小型软件 q中型软件 q大型甚至超大型软件 n(3)按软件工作方式划分 q实时处理软件 q分时软件 q交互式软件 q批处理软件 软件的分类 n(4)按软件服务对象的范围划分 q项目软

2、件 q产品软件。 n(5)按使用的频度划分 q一次性使用软件 q使用频度较高的软件 n(6)按软件失效的影响程度划分 q一般性软件 q关键性软件 1.2 软件的发展与软件工程 n软件工程的指导性原则: q变动的软件需求 q稳妥的设计方法 q高效的软件开发支持技术 q有效的过程管理 n软件工程具有里程碑意义的进展: q结构化软件开发方法的工具 q计算机辅助软件工程(CASE) q面向对象语言和方法成为主流的软件开发技术 1.3 软件开发模型的演变和生存周期 n1.3.1 软件开发过程与模型的演变 n1. 瀑布模型(waterfall model) q(1)慎重使用瀑布模型的情况: n不能充分理解

3、客户需求或客户需求有可能迅速发生化; n系统太大太复杂,不能一次做完所有的事; n事先拟采用的技术迅速发生变化; n提供的资源有限; n无法利用各开发阶段的某一中间产品 q(2)使用瀑布模型的情况: n系统所有的功能、性能要求客户可以一次性准确交付时; n必须是首次开发的新系统并且淘汰全部老系统时。 1.3 软件开发模型的演变和生存周期 n2. 渐增模型(incremental model) n(1)慎重考虑使用渐增模型的情况: n不能充分理解客户需求或客户需求有可能迅速 发生变化; n事先拟采用的技术迅速发生变化; n客户突然提出一些新的功能需求; n长时期内仅有有限的资源保证(开发人员和资

4、 金)。 使用渐增模型的情况:使用渐增模型的情况: n需要在尽短的时间内得到系统基本功能的演示或使用;需要在尽短的时间内得到系统基本功能的演示或使用; n各版本都有中间阶段产品可提供使用;各版本都有中间阶段产品可提供使用; n系统可以被自然地分割成渐增的模式;系统可以被自然地分割成渐增的模式; n开发人员与资金可以逐步增加。开发人员与资金可以逐步增加。 1.3 软件开发模型的演变和生存周期 n3. 演化模型(evolutionary model) q演化模型也称为原型(prototype)法模型。 n使用演化模型时应注意: q演化模型也是通过系统各个可执行的中间版本以渐增的 形式来开发系统的,

5、但是客户需求可以分步逐渐了解, 不用在初始时就确定。 q在模型中,可以预先定义一部分客户需求,然后在每个 后继的中间版本中再逐步增加需求,一点点完善。 q在开发每个中间版本时,开发过程中的活动和任务可以 顺序地或部分重叠平行地被加入到这些中间版本中。 4. 螺旋模型(spiral model) 螺旋模型的四类活动: n制定计划; n风险分析; n实施开发; n客户评估。 5 . 智能模型(intelligent model) 1.3.2 软件开发模型的选择 n要综合考虑以下几个因素: q(1)软件规模 q(2)软件类型 n系统软件的开发。 n实时软件的开发。 n商业应用软件的开发。 n嵌入式软

6、件的开发。 n人工智能软件的开发。 1.3.2 软件开发模型的选择 q(3)软件质量要求 q(4)交付工期 q(5)客户需求明确度 q(6)投资 q(7)可复用性 q(8)开发者掌握的资源 1.3.3 软件生存周期 1.4 软件开发方法简介 n1. 结构化程序设计方法 q其控制结构仅由顺序、选择与重复等有限 的基本控制结构表示。 n2. 模块化程序设计方法 q模块之间的接口应尽可能简明清晰: n单独模块的修改不影响其它模块的功能; n模块化应具有可修改性、易读性和可验证性。 n3. 面向对象程序设计方法 1.4.1 结构化软件开发方法 n结构化分析的步骤 q构造数据流模型; q构建控制流模型;

7、 q生成数据字典(DD); q生成可选方案,建立需求规约。 1.4.1 结构化软件开发方法 n结构化设计步骤 q首先研究、分析和审查数据流图。从软件的需求规 格说明中弄清数据流加工的过程。 q然后根据数据流图决定问题的类型。 q由数据流图推导出系统的初始结构图。 q优化软件结构。 q描述模块接口。 q修改和补充数据词典。 q制定测试计划。 1.4.2 模块化软件开发方法 n(1)模块可分解性。 n(2)模块可组装性。 n(3)模块可理解性。 n(4)模块连续性。 n(5)模块保护。 1.4.3 面向数据结构软件开发方法 n1建立JSD的系统进程模型 n2JSD方法的步骤 q(1)JSD需求分析

8、步骤 n标识系统中的实体与相应动作; n生成实体结构图; n初建系统模型。 q(2)JSD系统设计步骤 n扩充功能过程; n系统定时; n系统实现。 1.4.3 面向数据结构软件开发方法 n面向数据结构的开发方法的特点: q将分析结果作为设计基础,无明显分界; q都必须标识关键实体和动作; q信息具有层次性; q提供一组将层次化的数据结构映射到程序结构的步 骤; q数据结构由顺序、选择和重复3种构造成分表示。 1.4.4 面向对象软件开发方法 n面向对象方法的意义: q(1)一种新的思考方式; q(2)将数据和行为结合成为对象; q(3)核心是封装; q(4)面向对象方法建立的基础是: n软件

9、工程概念; n计算机科学概念; n工程管理; n数据库信息模型; n传统软件开发方法。 面向对象方法有几十种,综合起来,面向对象方法有几十种,综合起来, 其基本观点如下:其基本观点如下: n现实客观世界由对象组成。现实客观世界由对象组成。 n相同的对象归并为类。相同的对象归并为类。 n类可以继承。类可以继承。 n对象之间通过消息进行联系。对象之间通过消息进行联系。 面向对象面向对象 = = 对象对象 + + 类类 + + 继承继承 + + 通信通信 1.4.5 软件开发方法的评价与选择 n综合考虑以下几方面因素: q人员素质。 q时间进度。 q掌握资源。 q可行性。 q领域知识。 n从四个方面

10、评价: q技术特征。 q使用特征。 q管理特征。 q经济特征。 面向对象的世界观 对对象模型的通俗理解 建立面向对象的世界观 建模就是认识现实世界 客观世界 世 界 主观世界 认识 世界 改 造 世 界 世界是 什么样 的呢? 不同类型的人有不同的世界观 E=MC 2 事物,运动 矛盾,变化, 发展 X+Y= Z 1+1=? 类,关 联,对 象 持不同的世界观就会得到对现实世界的不同认识 建立不同的世界模型。 只存在同一个现实世界 所以,模型没有对错、只有符合建模人目的多 少之分。 软件人的目的 现代目的: 在计算机中模拟现实世界的物和事。 传统目的: 控制计算机运行。 站在六个角度来看待事物

11、 nA.这里面有什么东东? nB.每个东东看上去是什么样的? nC.每个东东能做点什么用? nD.这些东东都呆在什么地方? nE.这些东东之间有什么关系? nF.这些东东是怎么成事的? F A C E B D 举例说 明 “昨天我的一个朋友结婚了” n这里面有什么东东? q月老,小伙,姑娘,恋人,玫瑰花。 n每个东东看上去是什么样的? q月老,看上去有些年纪了,挺热心的。 q小伙,看上去很强壮,很实诚的。 q姑娘,看上去好漂亮,还很温柔。 q恋人,看上去很黏糊,当然就结婚了。 q玫瑰花,火红火红的,难怪姑娘动情了。 每个东东能做点什么用? n月老:牵线搭桥,介绍认识。 n小伙:追求献花,表达爱

12、意。 n姑娘:仰慕倾情,以身相许。 n恋人:拍拖结婚。 n玫瑰花:令姑娘头晕,传情示爱。 这些东东都呆在什么地方? n月老:婚介所,交友网站,亲戚家等。 n小伙:软件公司,住家。 n姑娘:人民医院,住宿舍。 n恋人:饭店,电影院, n玫瑰花:花店里,小伙手中,姑娘手中。 这些东东之间有什么关系? 关系关系月老月老小伙小伙姑娘姑娘恋人恋人玫瑰玫瑰 月老月老干妈舅妈撮合者没关系 小伙小伙干儿子男友老公男主角买送主 姑娘姑娘外甥女女友太太女主角受主 恋人恋人作品组合组合使用者 玫瑰玫瑰没关系信物接受者 信物 这些东东是怎么成事的? n月老牵线搭桥,介绍小伙和姑娘认识; n姑娘和小伙一见钟情,成为一对

13、恋人; n一对恋人开始拍拖; n小伙追求献花,表达对姑娘的爱意; n姑娘收到999火红玫瑰,激动得头晕目眩; n小伙真心求婚,姑娘以身相许; n一对恋人终于走入婚姻殿堂。 用面向对象世界观看事物的答案 A.这里面有些什么东东? n答:这里面有的都是事物。 qObject q对象 q台湾人的翻译就非常准确,叫做“物件”。 n如上例, q有月老,小伙,姑娘,恋人,玫瑰等事物(对象) B.每个事物看上去是什么样的? n每个事物看上去都有自己的属性,在每个属性 上都有一个特征值。 n如上例中: q月老,有属性:年纪,特征值:较大; q小伙,有属性:体格,特征值:强壮; q姑娘,有属性:性情,特征值:温

14、柔; q恋人,有属性:关系,特征值:黏糊; q玫瑰花,有属性:颜色,特征值:火红。 C.每个事物能做点什么用? n每个事物都具备某种能力; n这些事物有什么用,就要看它有什么能力了。 qMethod q方法 n如上例中: q月老有牵线搭桥,介绍认识的能力(方法); q小伙有“追求”的能力,姑娘有“嫁人”的能力; q恋人有“拍拖”的能力,玫瑰有“示爱”的能力。 D.这些事物都呆在什么地方? n每个事物都会有它合理的或者必须的空间位置 和逻辑位置。尤其当这些位置对事物的行为造 成重要影响的时候,表明他们的位置是极其重 要的。 n面向对象的世界观中叫事物的部署。 n上例列出的位置对故事主要情节没有太

15、大的影 响,本来是可以不列出来的。 E.这些事物之间有什么关系? n事物之间的关系非常多,面向对象的观点一般 分为主要的三类: q整体-部分关系,甲是乙的一个组成部分。 n如恋人和小伙,恋人和姑娘的关系。 q笼统-具体关系,甲是乙的一个特例。 n如人和小伙,人和月老,人和姑娘的关系。 q伙伴关系,甲会对乙做点什么。 n如月老和小伙、姑娘,小伙和玫瑰,小伙和姑娘的关系。 F.这些事物是怎么成事的? n每个事物都会尽量利用伙伴的能力; n整体事物的能力依靠部分事物的能力; n笼统事物的属性和能力就是具体事物的属性和 能力;具体事物除了有笼统事物的属性和能力 外,还可以有自己特殊的。 n事物分工协作

16、,互通信息,共同完成整体的目 标。 俗语对术语的映射 俗语俗语术语术语例子例子 出了什么事?用例我的一个朋友结了婚。 具体事物对象我的一个朋友,他未婚妻 事物类型类小伙,姑娘,玫瑰,月老 属性属性年龄,体格,性情 能力方法牵线,追求,结婚 位置部署单位,电影院 整-部关系聚集关系恋人-小伙,恋人-姑娘 笼-具关系继承关系人-小伙,人-姑娘 伙伴关系关联关系小伙-姑娘,小伙-玫瑰 成事过程用例实现相识,相恋,结婚 面向对象的原理与实现 面向对象的软件开发方法 n为了解决结构化程序设计的这些问题,面向对象 的技术应运而生。 n它是一种非常强有力的软件开发方法 q它将数据和对数据的操作作为一个相互依

17、赖、不可分割 的整体,采用数据抽象和信息隐蔽技术,力图使对现实 世界问题的求解简单化 q它符合人们的思维习惯,同时有助于控制软件的复杂性, 提高软件的生产效率,从而得到了广泛的应用 n面向对象的技术是目前最为流行的一种软件开发 方法 面向对象 n现实世界中所有的事物都是对象 n对象都具有某些特征,并展现某些行为 面向对象示例 n 公司中的不同部门都是 对象 面向对象示例 n按照实体在现实世界中的表现来实现 n将活动和属性与每一实体相关联 数据数据 员工详细资料 工资结算表 票据 凭证 收据 活动活动 计算工资 支付工资 支付帐单 记帐 银行交易 面向对象的基本概念 n面向对象=对象+类+继承+

18、通信 n如果一个软件系统是使用这样四个概念来设计和 实现的,我们认为这个软件系统是面向对象的 n相关概念 q对象 q类 q抽象 q继承 q封装 q可重用性 q多态性 对象 n 对象是客观世界中具体的或抽象的事物。 n 在计算机领域中,对象可视为是由一组数据( 信息)和施加于该组数据上的一组操作(行为) 组成的集合体。 n 例如,现实世界中的人、树、房子、汽车等 关于对象 n现实对象 q存在于客观世界的实体 n物理对象 q一辆汽车、一个人、一本书 n概念实体 q一种语言、一个图形、一种管理方式 n程序对象 q构成程序的实体 n对象的用途 q帮助理解现实世界 q为计算机应用提供实践基础 现实对象

19、程序对象 n计算机用户环境中的元素 q窗口 q菜单 n数据集合 q机器零件清单 q员工档案 n用户自定义的数据类型 q时间 q角度 q复数 对象的实质 n对象是一个拟人化的客观存在的实体,该实体 是由其结构特征和行为特征来描述的。 n例如,人是一个自主的实体,人由许多器官组 成,表现为人的结构特征。一个具体的人,每 时每刻都具有一个状态,该状态是由构成身体 的各个器官的状态组成的。一个人,对自己的 行为具有支配能力,其它人不能根据自己的意 志支配他的行为,也就是说,人的状态是由人 自身的行为来改变的。 对象的实质 n描述对象状态的数据或信息只能由对象自身所具 备的操作或行为来改变,而触发对象某

20、种操作或 行为的激励来自对象之外的某种消息。这一特征 体现了对象信息隐藏的基本思想。 n例如,引起人的某种行为发生是由于人受到某种 刺激或由人以外的其它人或事物对该人施加某种 影响发生的。这实际上是对象之间发生相互联系 的唯一途径。 对象的特征 n(1)有一个标识符,如同人的身份证一样,该标 识符在问题空间中必须是唯一的,用以区别于其它 对象。 n(2)有一个状态,由一组数据或由数据与其它对 象的组合来描述,该组数据称为对象的属性。 n(3)有一组操作,每一个操作决定对象的一种行 为 n(4)对象的状态只能由自身的行为来改变 对象的特征 n(5)对象之间是通过消息相互通信的,当一 个对象要求另

21、一个对象执行某种操作时,就向 它发送一个消息。 n(6)一个对象的状态可以由多个其它对象的 状态构成,如果一个对象的状态由其它对象表 示,则称构成它的状态的那些对象是它的属性 。 对象的特征 n例如,一个名为张三的人,他的状态为:例如,一个名为张三的人,他的状态为: 性别:男;性别:男; 身高:身高:180cm180cm; 体重:体重:68kg68kg。 n他的操作是:他的操作是: 回答身高:回答身高:(how-tall);(how-tall); 回答体重:回答体重:(how-heavy);(how-heavy); n 其它对象向张三发送一条消息其它对象向张三发送一条消息how-tallhow

22、-tall,张三将执行他的操,张三将执行他的操 作作how-tallhow-tall,如果其它对象向张三发送一条消息,如果其它对象向张三发送一条消息whatwhats your s your namename,张三则不会采取任何行动,因为他不具有该操作,因而,张三则不会采取任何行动,因为他不具有该操作,因而 不理解这条消息。不理解这条消息。 对象的特征 状态 操作 消息 关于类 n类是一组具有相同数据结构和相同操作的对象 的集合;所有这些对象都是类的实例。一个类 的不同实例,必定具有: q(1)相同的操作(或行为)的集合; q(2)相同的信息结构或属性定义,但可以有不同 的属性值; q(3)不

23、同的对象标识。 关于类 n类建立了现实对象到程序对象的桥梁 q类是对一系列具有相同性质的现实对象的抽象,是 对现实对象共同特征的描述 q程序对象都是类的实例,同一类的实例对象具有 n相同数据结构,但有不同的值 n相同操作 n类中的数据结构叫属性 n类中的操作叫方法 类的实质 n类是表现对象结构共性和行为共性的一种定义类是表现对象结构共性和行为共性的一种定义 或模板或机制。类中至少包含了以下两方面的或模板或机制。类中至少包含了以下两方面的 描述:描述: q(1 1)本类所有实例的属性定义或结构的定义;)本类所有实例的属性定义或结构的定义; q(2 2)本类所有实例的操作)本类所有实例的操作( (

24、或行为或行为) )的定义。的定义。 类的实例 姓名 年龄 身高 体重 回答身高 回答体重 类:人类:人 对象:张三对象:张三对象:李四对象:李四对象:王五对象:王五 从现实对象到类 多边形对象多边形对象多边形类多边形类 属性属性 顶点 边的颜色 填充颜色 方法方法 绘制 擦除 移动 抽象为 属性 1 方法 1 属性 3 方法 2 抽象 1 n考察特定应用程序相关问题的某些方面的过程 抽象 2 n数据抽象是识别特定实体的属性和方法的过程 属性属性 方法方法 类 抽象 3 n抽象分为两类 q数据抽象 n识别与特定的应用程序相关的属性 q过程抽象 n将注意力集中在过程的参数和返回值,而不是实现 继承

25、 n如果存在类A和类B,并且: q(1)类A的所有属性和方法均包含在类B中 q(2)类B中可以有类A没有的属性或方法 n那么,类B继承类A,同时称类B为类A的子类 、类A为类B的父类。 继承 n利用继承的机制,可以将多个类之间的共性用 一个类来描述,以便其它有关类继承。也就是 说,可以重用类之间的共性。因此,继承性是 实现软件重用的核心思想。 继承性 姓名 年龄 身高 体重 回答身高 回答体重 类:人 类:教师 类:学生 所教课程 回答所教课程 年 级 回答几年级 关于继承 n继承重用现有类生成新类 n可重用性通过继承来实现 动物 昆虫哺乳动物爬行动物 人类非人类 继承的双方 n超类是有其他类

26、继承其行为的类 n继承其他类的类称为子类 动物动物 继承的特点 n使系统的修改或维护局部化。例如,当我们修 改人的属性或操作后,这种修改将自动被继承 到教师类和学生类中,在教师类和学生类中无 须作任何工作。 n可以有效地避免系统结构的冗余,有利于简化 系统描述。例如,由于人描述了教师类和学生 类的共性,使得教师类和学生类的描述大为简 化。而只须描述其个性,如教师所教课程或学 生的年级等。 封装性 n对象的封装性体现在两个方面: q(1)对象将状态和操作集中起来,成为一个整体 ; q(2)对象的状态只能由其自身的操作或行为来改 变。 n封装是一种信息隐藏,对象的封装性是实现信 息隐藏的一种机制。

27、 关于封装 n信息隐藏的过程 n有选择的数据隐藏 n防止意外的数据破坏 n更易于隔离和修复错误 封装的有选择地隐藏 n封装是允许有选择地隐藏类中的属性和方法 的过程 在类的外部不能访问 在类的外部可以访问 类 可重用性 n程序可以分解为可重用的对象 n现有类可以和附加功能一起使用 可重用性示例 猫科动物猫科动物 发出声音 进食/饮水 捕食猎物 喵喵叫 喝牛奶 捕食老鼠 吼叫 吃肉 捕食大型猎物 多态性 n多态性是指同一对象接收到不同消息采用不同 的行为方式;同一消息可以根据发送消息对象 的不同采用多种不同的行为方式。 n多态性是面向对象系统中的又一重要特性,有 利于简化系统结构,提高系统的适应

28、性。 多态性 n同样的函数在不同的类上有不同的行为 类 艺术家艺术家 舞蹈家舞蹈家诗人诗人雕刻家雕刻家 对各个子类实现的方法 将产生不同的结果 多态性示例 子类子类 术语的图形符号 对象名 用术语来建模 n还是问上述六个问题; n可以打乱顺序问,同时问; n顺着知道答案的问题问下去; n把答案用术语的图形记下来。 站在六个角度来看待事物 nA.这里面有什么东东? nB.每个东东看上去是什么样的? nC.每个东东能做点什么用? nD.这些东东都呆在什么地方? nE.这些东东之间有什么关系? nF.这些东东是怎么成事的? F A C E B D “我的一个朋友结婚了” nA.这里面有什么东东? 我

29、我的朋友我朋友的妻子 故事与“我”无关,去掉“我”,我的朋 友是小伙,他妻子是姑娘,于是得到两个 类: 他们怎么就成了? n他们已经拍拖两年了,如胶似漆,你情我愿, 不就成了。 n拍拖必须是一对恋人所为,于是出来: 他们是怎么拍起拖来的? n两年前,姑娘的舅妈介绍他俩认识,他俩一见 钟情,于是便拍起拖来了。 n舅妈是月老,可能撮合了好多对恋人,我朋友 他们只不过是其中一对,于是得到: 促成 1.* 11 他们都喜欢对方什么? n姑娘喜欢小伙年轻,健壮,实诚; n小伙喜欢姑娘年轻,漂亮,温柔。 n姑娘小伙都感谢月老的老到和热心肠。 发现共性. 他们都是普通人 n月老,小伙,姑娘有共同的属性“年纪”和 “性情”,虽

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论