第1章面向对象技术概述

合集下载

面向对象程序设计

面向对象程序设计
面向对象程序设计方法利用面向对象思 想进行软件系统的设计和实现。这种新的方 法是在利用面向对象思想的基础上,通过增 加软件的可扩充性和可重用性,来改善并提 高程序员的生产能力,并能控制软件的复杂 性和软件维护的开销。在使用面向对象程序 设计方法时,软件开发的分析和设计阶段能 更加紧密地与实施阶段相联系。
1.1 面向对象程序设计概述
•在程序的实施过程中,由于大型系统必须由 多人合作完成,各人或各小组完成程序中的 一个或几个模块,如何划分任务、估计和分 配资源、掌握每个程序员的进度等就构成了 进行大型系统设计时管理的复杂性,另外, 即使每个人或小组所设计的模块都无可挑剔, 但将这些模块整合在一起时未必不会出现问 题,因此如何权衡模块内聚度和模块间的耦 合度,也是编程人员必须面对的问题之一。
1.1 面向对象程序设计概述
简单的说,通过使用面向对象的方法可以把 一组看似相互之间毫无联系的对象有效地集成在 一起,这些对象都包含代表各自特征的数据以及 对数据的操作即对象的行为。通过面向对象方法, 可以把与该对象相关的数据和操作封装在一个相 对独立的实体中,该实体有自己的功能和特征, 它也可以采用某种机制与外界交互。
1.1 面向对象程序设计概述
面向对象设计方法追求的是现实问题空 间与软件系统解空间的近似和直接模拟。它 希望用户用最小的力气,最大限度地利用软 件系统进行求解。
在具体学习OOP之前,请先注意一下两 点:
记忆的特征或数据,这些特征或数据能反映对象的基本性质。 找出对象和类中存在的各种整体-部分结构和一般-特殊结构,并进一步确定这些结构组合而成的多重结构。
的处理这些系统状态以及中间状态、组织高 这种环境最主要的特征就是以对象作为程序的主要单位,它将数据及对这些数据的操作功能以及与其他对象的通信的能力都封装在了

01 第一章 面向对象概述

01 第一章 面向对象概述
更加直接的:对象=属性+行为
1.1面向对象基本概念
2 对象——具有属性 属性刻画了对象的静态特征
车型名称 厂商 级别
十代思域220turbo 东风本田 紧凑型车
能源类型
汽油
环保标准
国V
上市时间
最大功率 (kW)
最大扭矩 (N·m)
发动机
2016.04 130 220
1.5T 177马力 L4
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象的分析过程
用户 开发者
一般需求
管理者 用户知识
问题域建模
专业领域知识
现实世界经验
问题域陈述
对象模型 动态模型
功能模型
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象分析的一般过程
获取需求内容陈述
建立系统的对象模型结构 建立对象的动态模型
类的例子
信息工程系的 帧一一同学
学生类
经贸管理系的 贾三三同学
尝试抽象——试将下列图标分类
不同角度,分类结果不一定 根 据 问 题 需 要 进 行 分 类
1.1面向对象基本概念
3 类——与对象的关系
• 每一个对象都是某一 个类的实例
• 每一个类在某一时刻 有零个或更多的实例
• 类是静态的:其语义 和关系在执行前就已 经定义好了
1.4面向对象思想与软件工程模型
1 瀑布模型
瀑布模型将软件生 命周期划分为软件 计划、需求分析和 定义、软件设计、 软件实现、软件测 试、软件运行和维 护这6个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。

UML第1章 面向对象方法概论

UML第1章 面向对象方法概论

1.3
面向对象开发的概念
面向对象开发是现实世界中以抽象为基础的 软件思维的一种崭新方式。面向对象开发的本质 是应用领域概念的鉴别和组织,而不是它们在一 种程序设计语言中的最终表示。
1.3.1
面向对象方法学
• • • •
分析 系统设计 对象设计 实现
1.3.2 • 对象模型 • 动态模型 • 功能模型
• 所谓“描述”是指用一种语言把人们对问题域 中事物的认识、对问题及其解决方法的认识描 述出来。最终的描述必须使用一种能够被机器 读得懂的语言,即编程语言。
1.2.2 • • • • • • 标识 分类 多态性 继承 封装 抽象
对象的特性
1.2.3
软件工程学的作用
• 软件工程学从认识事物方面看,它在分析阶段 提供了一些对问题域的分析认识方法。从描述 事物方面看,它在分析和设计阶段提供了一些 从问题域逐步过渡到编程语言的描述手段 。 • 传统的软件工程方法(图1-1)与面向对象的 软件工程方法(图1-2)比较
问题域 需求分析 总体设计和详细设计 编程和测试 软件维护
图1-1
问题域 自然语言 面向对象的编程语言 OOA OOD OOP OOT 计算机
图1-2
• 传统的软件工程方法: 1)需求分析 2)总体设计和详细设计 3)编程和测试 4)软件维护
• 面向对象的软件工程方法 1)面向对象的分析 2)面向对象设计 3)面向对象的编程 4)面向对象的测试 5)面向对象的软件维护
• 面向对象方法的主要优点是 : (1)与人类习惯的思维方法一致 (2)稳定性好 (3)可重用性好
(4)可维护性好 (5)面向对象的软件稳定性比较好 (6)面向对象的软件容易修改 (7)面向对象的软件容易理解 (8)易于测试和调试

第1章 面向对象的方法学

第1章 面向对象的方法学
为了在程序中使用cin/cout,必须在程序中包含iostream库
的相关头文件
#include<iostream>
计算机科学与工程学院
西安理工大学
C++流类库简介
iostream类同时从istream(输入流)类和ostream(输出 流)类派生而来,允许双向输入/输出。输入由重载的操作 符>>完成,输出由重载的操作符<<来完成。 cin>>变量名; cout<<变量名或常量;
对象
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。 对象是我们认识世界的基本单元,可以是人,也可以是物,还可以是一 件事。 术语“对象”既可以是指一个具体的对象,也可以泛指一般的对象。
实例
实例是一个类所描述的一个具体的对象。
例如,通过“大学生”类定义一个具体的对象学生王明就是大学生类的 一个实例,就是一个对象。 类和对象之间的关系是抽象和具体的关系。
面向对象分析
分析是问题抽象(即做什么)。 结构化方法采用面向过程的方法对问题进行分解 面向对象分析是指在深入、全面理解问题本质需求的基础上,准确地抽象出 系统必须做什么。
面向对象设计
分析是提取和整理用户需求,建立问题精确模型的过程,即做什么。设计是 问题求解 (即怎么做),是对分析阶段所建立的模型进行精雕细凿,并逐渐扩 充的一个过程。
[例9-5] 简单输出实例1。
[例9-6] 简单输出实例2。
计算机科学与工程学院
西安理工大学
基本输入流
流输入可以用流读取运算符——即重载的>>(右移位运算
符)来完成。 注意:
输入运算符>>也支持级联输入。在默认情况下,运算符>>跳过空格,读 入后面与变量类型相应的值。因此给一组变量输入值时,用空格或换行 将输入的数值间隔开,例如:

UML基础与Rose建模实用教程课后习题及答案(无第四章)

UML基础与Rose建模实用教程课后习题及答案(无第四章)

UML基础与Rose建模实用教程课后习题及答案第1章面向对象概述1. 填空题(1)软件对象可以这样定义:所谓软件对象,是一种将状态和行为有机结合起来形成的软件构造模型,它可以用来描述现实世界中的一个对象。

(2)类是具有相同属性和操作的一组对象的组合,即抽象模型中的“类”描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。

(3)面向对象程序的基本特征是抽象、封装、继承和多态。

2. 选择题(1)可以认为对象是ABC。

(A)某种可被人感知的事物(B)思维、感觉或动作所能作用的物质(C)思维、感觉或动作所能作用的精神体(D)不能被思维、感觉或动作作用的精神体(2)类的定义要包含以下的要素ABD。

(A)类的属性(B)类所要执行的操作(C)类的编号(D)属性的类型(3)面向对象程序的基本特征不包括B。

(A)封装(B)多样性(C)抽象(D)继承(4)下列关于类与对象的关系的说法不正确的是A。

(A)有些对象是不能被抽象成类的(B)类给出了属于该类的全部对象的抽象定义(C)类是对象集合的再抽象(D)类用来在内存中开辟一个数据区,并存储新对象的属性3. 简答题(1)什么是对象?试着列举三个现实中的例子。

对象是某种可被人感知的事物,也可是思维\感觉或动作所能作用的物质或精神体,例如桌子.椅子.汽车等。

(2)什么是抽象?抽象是对现实世界信息的简化。

能够通过抽象将需要的事物进行简化、将事物特征进行概括、将抽象模型组织为层次结构、使软件重用得以保证。

(3)什么是封装?它有哪些好处?封装就是把对象的状态和行为绑在一起的机制,使对象形成一个独立的整体,并且尽可能地隐藏对象的内部细节。

封装有两个含义;一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体。

对象的私有属性只能够由对象的行为来修改和读取。

二是尽可能隐蔽对象的内部细节,与外界的联系只能够通过外部接口来实现。

通过公共访问控制器来限制对象的私有属性,使用封装具有以下好处:避免对封装数据的未授权访问、帮助保护数据的完整性、当类的私有方法必须修改时,限制了在整个应用程序内的影响。

面向对象技术与UML

面向对象技术与UML

继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。

面向对象程序设计概述

面向对象程序设计概述

1.什么是结构化程序设计方法?这种方法有哪些优点和缺点?【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。

结构化程序设计的思路是:自顶向下、逐步求精。

程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。

结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。

虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。

因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。

2.面向对象程序设计有哪些重要特点?【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。

它主要具有如下重要特点:(1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。

(2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。

(3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。

第1章面向对象程序设计概述3(4)面向对象的程序设计通过类的继承与派生机制以及多态性特性,提高了软件代码的可重用性,因而大大缩减了软件开发的相关费用及软件开发周期,并有效地提高了软件产品的质量。

面向对象程序设计 1_面向对象方法概述

面向对象程序设计 1_面向对象方法概述

(1) 重用性 传统软件生产中缺乏大粒度、可重用的构件。基 本处于手工作业阶段。 (2) 复杂性 传统程序中数据与其操作是相分离的,开发大程 序时,常因数据的一个的小小变动而导致意想不到的 错误,甚至整个程序的崩溃。以致出现过所谓的“软 件危机”。 (3) 可维护性 传统程序中数据与操作相分离的结构不利于程序 的维护。
1.1
什么是面向过程程序设计方法 本节主要内容
1.1.1 面向过程程序设计方法概述 1.1.2 面向过程程序设计方法的局限性
1.1.1 面向过程程序设计方法概述
面向过程程序设计方法是流行很广泛的程序设计 方法。如C、PASCAL、FORTRAN、Ada等语言都是采用面 向过程程序设计方法。 在面向过程程序设计中,程序设计者不仅要考虑程 序要“做什么”,还要解决“怎么做”的问题。 首先要明确程序的功能,程序设计的重点是如何设 计算法和实现算法。 在面向过程程序设计中,普遍采用结构化程序设计 方法,即所有的程序由顺序、分支和循环三种基本结构 组成。
3.传统的程序设计难以适应各种新环境
当前,并行处理、分布式、网络和多机系统等,已 经或将是程序运行的主流方式和主流环境。 传统的程序设计技术很难适应这些新环境。 综上所述,传统的面向过程的结构化程序设计不能 够满足计算机技术的迅猛发展的需要,软件开发迫切需 要一种新的程序设计方法的支持。
1.2
什么是面向对象程序设计方法 本节主要内容
例1.1 利用面向过程程序设计方法计算圆和三角 形的面积。设圆的半径为r,圆周率取3.14,则圆面积 的计算公式为cs=3.14*r*r;设三角形的高为h,底为w, 则三角形面积的计算公式为ts=0.5*h*w。
用面向过程程序设计方法编写一个计算面积的C语言程序。 #include<stdio.h> double circle(double r){ return 3.14*r*r; } //定义函数circle double triangle(double h,double w) //定义函数triangle { return 0.5*h*w; } int main() //定义主函数main { double r,h,w,cs,ts; printf(“Input r,h,w:”); //调用函数,输出字符串 scanf("%lf%lf%lf",&r,&h,&w); //调用函数scanf,输入圆的半径和三角形高和底的值 cs= circle(r); //调用函数circle ts= triangle(h,w); //调用函数triangle printf("The area of circle is:%f\n",cs);//调用函数输出圆的面积 printf("The area of triangle is:%f\n",ts); //调用函数输出三角形的面积 return 0;}

OOP_1面向对象编程

OOP_1面向对象编程

18
制药厂
电话号码 厂址 产品目录 产品配方 原料库存 查询产品价格 产品生产方法 计算产品生产成本
19
制药厂
电话号码 厂址 产品目录 产品配方 原料库存 查询产品价格 产品生产方法 计算产品生产成本 查询原料库存
封装的优点?
能够保护隐私 隐藏类的实现细节 方便加入控制语句 可重用性
20
字符串类string
公共接口: 创建string 销毁string 合并string 计算string长度
27
消息传递与方法调用
• 一个公司有人事部、财 务部、和销售部。 • 每个部门有自己的数据 和处理数据的方法 人事档案 财务报表 销售数据 • 每个部门的数据不对外 公开 • 部门之间通过发送消息 获取对方的数据
实现: 在C++中,通过调用对象的函数成员(方法 )来请求服务,这种调用称为向该对象发送了 一个消息。
方法调用 int main() { string s1=“Hello” int n=s1.length(); return 0; }
1.4 继承与多态
• 继承——提供类复合的实现机制,有助于 实现代码的重用。继承是面向对象程序设 计的关键。 • 多态——提供类对象接口与其具体实现相 分离的手段.多态是面向对象程序设计的 补充。
9
什么是类(class)? 是对现实生活中具有相同属性和行为实 体的抽象描述,是一个抽象的数据类型。 手机类
学生类
10
类的C++描述
class<class name> { <body of class> };
class car { string brand//品牌 string color;//颜色 float price;//价格

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案第1章面向对象软件开发概述1.简述面向过程问题求解和面向对象问题求解的异同。

试列举出面向对象和面向过程的编程语言各两种。

请问:面向过程问题解,以具体内容的解题过程为研究和同时实现的主体,其思维特点更吻合于计算机;面向对象的问题解,则就是以d对象‖为主体,d对象‖就是现实世界的实体或概念在计算机逻辑中的抽象化则表示,更吻合于人的思维特点。

面向过程的编程语言:c,pascal,foratn。

面向对象的编程语言:c++,java,c#。

2.详述对象、类和实体及它们之间的相互关系。

尝试从日常碰触至的人或物中抽象化出来对象的概念。

答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。

类是同种对象的集合与抽象。

类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。

如果类是抽象的概念,如d电视机‖,那么对象就是某一个具体的电视机,如d我家那台电视机‖。

3.对象存有哪些属性?什么就是状态?什么就是犯罪行为?二者之间有何关系?建有对象d学生‖,精义这个对象设计状态与犯罪行为。

答:对象都具有状态和行为。

对象的状态又称作对象的静态属性,主要指对象内部所涵盖的各种信息,也就是变量。

每个对象个体都具备自己专有的内部变量,这些变量的值标明了对象所处的状态。

行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。

学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。

4.对象间存有哪三种关系?对象d班级‖与对象d学生‖就是什么关系?对象d学生‖与对象d大学生‖就是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。

对象d班级‖与对象d学生‖是包含关系。

对象d学生‖与对象d大学生‖是继承关系。

uml 基础教程 第一章--uml与面向对象

uml 基础教程 第一章--uml与面向对象
第一章 UML与面向对象
2020/6/13
基础内容:类和对象的关系 重点掌握:面向对象的四个特征 一般了解:面向对象项目的设计
2020/6/13
1.1 面向对象开发
1.1.1 理解面向对象
一、对象
• 面向对象认为客观世界是由各种各样的对象组成, 每个对象都有自己的数据和操作,对象和对象之间 是通过对象暴露在外的接口进行调用的,不同对象 之间的相互作用和联系构成了各种系统。
2020/6/13
•面向对象概念中,这种关系叫继承。每个Appliance 的子类都继承了Appliance的特征。同时,要重点注 意下,每个子类都增加了自己的属性和操作。 •因此,继承是一种连接类与类之间的层次模型,是 指特殊类的对象拥有其一般类的属性和行为。特殊 类中不必重新对已经在一般类中所定义的属性和行 为进行定义。特殊类自动地、隐含地拥有其一般类 的属性和行为。
0/6/13
• 在设计阶段,要考虑的是定义软件系统中技术细 节的类(如处理用户接口、数据库、通信和并行性 等问题的类),把分析阶段的结果扩展成技术解决 方案。
• 构造阶段,把设计阶段的类转换成某种面向对象 程序设计语言的的代码(工具可以完成)。
• 测试阶段,系统通常需要经过单元测试、集成测 试、系统测试和验收测试。不同的测试小组使用不 同的UML图作为测试依据:单元测试使用类图和类 规格说明;集成测试使用构件图和协作图;系统测 试使用用例图来验证系统的行为;验收测试由用户 进行,以验证系统测试的结果是否满足在分析阶段 确定的需求。
2020/6/13
1.2 UML简介
1.2.1 对系统建模的必要性
UML具体有哪些作用:
• (1)对于软件系统用户,软件的开发模型向他们 描述了软件开发者对于软件系统需求的理解。

第01章 面向对象技术概述

第01章 面向对象技术概述

Ada Lovelace是英国著名诗人 拜伦的女儿,世界上第一个程序 员。Ada语言以她的名字命名
20
面向对象技术发展-4

里程碑4:C++ (1982, 贝尔实验室)
• 第一个被工业界广泛接 受的支持面向对象能力 的语言,创造者Bjarne Stroustrup(本贾尼· 斯 特劳斯特卢普) • 动机是给C添加一些 Simula特性,以完成当 时刚刚出现的大规模复 杂任务 • 商业化
1.2.3 面向对象技术 VS 结构化
31
1.2.3 面向对象 VS 结构化-1

扬弃,不是否定
订单 订单项 PK 订单项ID
PK 订单ID 下单日期 税金 运费 总价
购买数量 价格 FK1 订单ID
顾客
顾客 帐号、数额 取款功能
提款机
1: 请办理提款(帐号,金额)
32
面向对象 VS 结构化-2
预言历史的最佳方式是创造历史 -- Alan Kay
19
面向对象技术发展-3

里程碑3:ADT, Ada 83, 基于对象(19771983)
• 编程理论界在结构化运 动中提出ADT思想,以 N. Wirth和Liskov为代 表 • 美国防部军用开发语言 评选,Ada被指定为强 制性军用编程语言,实 际上已经进入“基于对 象”阶段
1
1.2 面向对象技术
1.2.1 基本概念 1.2.2 面向对象技术发展 1.2.3 面向对象技术 VS 结构化
7
1.2.1 面向对象领域的基本概念

OO技术领域存在一些基本术语和概念,需 要掌握和理解。
8
对象和实例

对象(Object)
• 它是系统用来描述客观事物的一个实体,是构 成系统的一个基本单位。 • 对象包括:属性和方法 • 对象之间通过消息进行通信。

面向对象技术概述

面向对象技术概述


常用软件开发方法

面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。

消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。


面向对象分析


对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。

第一章面向对象的分析和设计-

第一章面向对象的分析和设计-

案例学习策略
迭代开发的策略 多次迭代,第一次迭代用于一些核心功能 例子
POS Monopoly 游戏系统
感谢聆
模式。 统一建模语言(UML)已经成为被用户广泛接受的描述软件设计蓝
图的语言。 UML是用来传递设计理念的可视化语言。本书的重点讲述开发者
如何真正地应用常用地UML元素而不是讲述UML的特征。
本章目标
目标和范围 OOA/D 的定义 OOA/D 的一个简单例子 UML和可视化敏捷建模 历史
敏捷开发
敏捷开发方法 通常应用时间定量的迭代和进化式开发 使用自适应计划 提倡增量交付 并包含其他提倡(快速和灵活的响应变更)的价值 和实践
敏捷方法具备进化式精化的计划、需求和设计的短时 间定量迭代是这些方法所共有的基本实践.除此之外, 它们还倡导反映简易、轻量、沟通、自组织团队等更 多敏捷的实践和原则
现有代码进行可视化,使其易于理解。2)代码生成(前向工程)。
UML作为编程语言
用UML完成软件系统可执行规格说明。
UML
应用UML的三种透视图 概念透视图
用图来描述现实世界或关注领域中的事物
规格说明(软件)透视图
用图来描述软件的抽象物或具有规格说明和接口的构件,但是 并不约定特定实现
原型.与之相反,其输出是最终系统的产品子集
迭代项目中的变更
迭代开发抱以接受变更和改写的态度,并以此 为真正本质的驱动力—而不是企图全面和正确 地规格化、冻结需求集(瀑布模型)
UP-平衡需求和稳定性(VS反应式的特性蔓延)
迭代开发的优点
减少项目失败可能性,提高生产率、降低缺陷 率
在早期缓解高风险 早期可见的进展 早期反馈、用户参与和调整,会产生更接近涉
细化

面向对象方法概论

面向对象方法概论

习题第1章面向对象方法概论1、与传统开发方法相比,面向对象方法有什么优点?2、查阅资料,进一步讨论UML与面向对象方法的关系。

3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。

考虑如果使用面向对象方法,在哪些方面可能会获益。

5、面向对象方法的一个主要原则是抽象。

思考一下在工作和学习中你经常在什么场合下运用抽象原则。

第2章什么是面向对象分析1、简述OOA模型及OOA过程。

2、为什么要进行OOA?3、简述问题域与系统责任间的关系。

4、OOA是如何应对需求变化性的?5、为什么把用类图构建的模型称为基本模型?6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。

第3章建立需求模型——用况图1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它们之间的区别又在哪?2、论述用况图在面向对象方法中的地位。

3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。

5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定时取款。

针对上述要求,请建立用况图,并描述各个用况。

6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积分奖励功能。

请建立用况图,并描述各个用况。

第4章建立类图1、论述类与对象之间的关系以及关联与链之间的关系。

这四者之间还有什么联系吗?2、在什么情况下使用组合关系进行建模?3、总结继承关系的用途。

4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。

在二者间可以使用组合关系吗?请解释原因。

5、举例说明类继承结构中的重载与多态。

6、面包是由面包片组成的。

面包与面包片之间的关系是聚合还是组合?7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。

面向对象方法概论

面向对象方法概论

习题第1章面向对象方法概论1、与传统开发方法相比,面向对象方法有什么优点?2、查阅资料,进一步讨论UML与面向对象方法的关系。

3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。

考虑如果使用面向对象方法,在哪些方面可能会获益。

5、面向对象方法的一个主要原则是抽象。

思考一下在工作和学习中你经常在什么场合下运用抽象原则。

第2章什么是面向对象分析1、简述OOA模型及OOA过程。

2、为什么要进行OOA?3、简述问题域与系统责任间的关系。

4、OOA是如何应对需求变化性的?5、为什么把用类图构建的模型称为基本模型?6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。

第3章建立需求模型——用况图1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它们之间的区别又在哪?2、论述用况图在面向对象方法中的地位。

3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。

5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定时取款。

针对上述要求,请建立用况图,并描述各个用况。

6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积分奖励功能。

请建立用况图,并描述各个用况。

第4章建立类图1、论述类与对象之间的关系以及关联与链之间的关系。

这四者之间还有什么联系吗?2、在什么情况下使用组合关系进行建模?3、总结继承关系的用途。

4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。

在二者间可以使用组合关系吗?请解释原因。

5、举例说明类继承结构中的重载与多态。

6、面包是由面包片组成的。

面包与面包片之间的关系是聚合还是组合?7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提高软件的可维护性,使软件的部分对整体的影 响减少。隐蔽内部细节,降低软件复杂性
1.5 面向对象技术
一、结构化开发方法(Structured Developing Method)
是一种面向数据流的开发方法,它的基本原则是功能 的分解与抽象。
结构化方法总的指导思想是自顶向下、逐步求精。
包括: SA——结构化分析方法; SD——结构化设计方法;
1.3 软件的固有复杂性
软件设计面临的困难要多
软件固有的复杂性
与一些传统的工程领域不同,软件设计没有完
整的理论作指导,软件开发过程具有巨大的自 由性
1.4 控制软件复杂性的基本方法
1. 分解 2. 抽象
抽取系统中的基本特性而忽略非基本特性, 从而理解和控制复杂的系统
3. 模块化 4. 信息隐蔽(封装)
1.6 面向对象分析(OOA)
面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分 析,确定系统“作什么”,并建立系统的模型 OOA的基本任务
运用面向对象的方法,对问题域和系统责任进行 分析和理解,找出描述它们的类和对象,定义 其属性和操作,及其结构、静态联系和动态联 系。
4、建立类(对象)间的关系
用“对象-关系模型”描述了系统的静态结构。 (1) 一般/特殊结构 (2) 整体/部分结构 (3) 实例连接 (4) 消息连接
5、建立对象-行为模型
描述了系统的动态行为。指明系统如何响应外部 的事件或激励。 建模步骤:
1. 评估所有的用例,以完全理解系统中交互的序列。
2. 标识驱动交互序列的事件,理解这些事件如何和特定
1946年,世界上第一台电子计算机在美国 研制成功。 50年代,软件诞生。 60年代中期到70年代中期,“软件危机” 出现。 1968年,“软件工程” 概念的提出。
1.1.1 软件危机
软件危机主要表现: ① 开发周期拖后按年计 ② 成本超出可多达一个数量级 ③ 开发生产效率低 ④ 软件质量难以保证,甚至不能使用 ⑤ 系统复杂性远超出人脑直接控制的程度
美国丹佛新国际机场
1996年的亚特兰大奥运会中,IBM赞助的
Info96网络
1.1.1 软件危机
6个投入使用,2个被取消。 软件开发时间超时50%。 大型系统中,3/4的系统有运行问题 说明软件问题的重要性、复杂性、困难性 和长期性
提高个人的能力
解决问题的两个途径
提高组织的能力
第1章 面向对象技术概述
1.1 1.2 1.3 1.4 1.5 1.6 1.7 软件危机及软件工程 对软件开发的基本认识 软件的固有复杂性 控制软件复杂性的基本方法 面向对象技术 面向对象分析(OOA) 面向对象设计(OOD)
1.1 软件危机及软件工程
1.1.1 软件危机 1.1.2 软件工程
1.1.1 软件危机
的对象相关联。 3. 为每个用例创建事件轨迹。 4. 为系统建造状态图。 5. 复审对象--行为模型,以验证准确性和一致性。
1.7 面向对象设计(OOD)
面向对象设计的一般步骤如下: 1. 系统设计 • 将子系统分配到处理器 • 选择实现数据管理、界面支持和任务 管理的设计策略 • 为系统设计合适的控制机制 • 复审并考虑权衡(折衷)
OOA面临的问题
1、问题域和系统责任问题 问题域(problem domain) — 被开发系统的应 用领域。 系统责任(system responsibilities) — 所开发 的系统应具备的职能。 2、交流问题(各类人员之间的要求) 3、需求的不断变化(用户、竞争因素、经费、 技术因素)
基于UML的面向对象分析
三、软件的分类
1、按照软件功能划分
系统软件 — 如操作系统、设备驱动程序等。 支撑软件(实用软件) — 协助用户开发的工具软件,如 编辑程序、程序库、图形软件包等。 应用软件 — 如工程与科学计算软件、CAD/CAM软件、CAI 软件、信息管理系统等。 2、按照软件工作方式划分 实时处理软件 交互式软件 批处理软件 3、按照软件服务对象的范围划分 项目软件 — 由客户委托开发的软件。 产品软件 — 由软件开发机构开发,提供给市场的。
3、定义类的结构和层次
类的结构有:
一般—特殊 (generalization - specialization)结构 整体—部分(whole-part)结构

构成类图的元素所表达的模型信息,分为三个 层次:
对象层—给出系统中所有反映问题域和系统责任的对象 特征层—给出类的内部特征,即类的属性和操作。 关系层—给出各类之间的关系,包括继承、组装、一 般—特殊 、整体—部分、属性的静态依赖关系,操 作的动态依赖关系。
1.1.1 软件危机
合理分配开发力量
实现的三种途径
改进方法 借助软件工具
三条途径构成软件工程的三大要素:方法、 工具和过程
1.1.2 软件工程
软件工程就是包含方法、工具和过程三个要素的 软件开发方法,实质就是在软件开发过程中引入 过程化的方法 软件工程方法为软件工程提供如何做的技术。系 统分析如何做、系统设计如何做、编码如何做。 主要的侧重点在于改进技术手段 软件工程的工具为软件工程的方法提供支撑环境 软件工程的过程是把软件工程的方法和工具结合 起来,并且整合其他的必要资源,组织起来进行 软件开发 软件工程的目的就是要在规定的时间、规定的开 发费用内开发出满足用户需求的软件系统
1、获取用户基本需求 用户与开发者之间进行充分交流,常用 User case来收集和描述用户的需求。即先 标识使用该系统的不同的行为者(actor)。 行为者所提出的每个使用场景(或功能) 称为一个用例,所有的用例则构成完整的 系统需求。
2、标识类和对象



标识类与对象是一致的。在确定系统的用例后, 可标识类及类的属性和操作。 从问题域或用例描述入手,发现对象。
函数 和过程 数据
对象 对象 对象 对象
SP——结构化程序设计方法。
1.5 面向对象技术
二、面向对象方法 基本思想:对问题进行自然分割,以更接近人 类思维的方式建立问题域模型,从而使设计出 的软件尽可能直接地描述现实世界,具有更好 的可维护性,能适应用户需求的变化
对象 对象
函数 和过程
对象
数据
对象
1.2 对软件开发的基本认识
一、软件(Software):软件是“程序以及开发使用维护程 序所需的所有文档”,由应用程序,系统程序,面向用户的 文档,及面向开发者的文档四部分构成。
二、软件的特点 1、软件是一种逻辑实体,不是具体的物理实体。 2、软件产品的生产主要是研制。 3、软件具有“复杂性”,其开发和运行常受到计算机系统 的限制。 4、软件成本昂贵,其开发方式目前尚未完全摆脱手工生产 方式。 5、软件不存在磨损和老化问题,但存在退化问题。
2. 对象设计 • 在过程级别设计每个操作,即设计每 个操作的实现细节 • 定义内部类 • 为类属性设计内部数据结构 3. 消息设计 使用对象间的协作和对象--关系模型,设 计消息模型 4. 复审 复审设计模型并在需要时迭代。
典型的面向对象方法
Coad & Yourdon 方法 OMT方法 Booch方法 OOSE方法
1.3 软件的固有复杂性
复杂性的原因
① 软件的复杂性和计算机体系结构有关 ② 软件开发是人的智力活动,软件系统从本质
上来说是由许多相互联系的概念组成 ③ 软件系统中各元素之间的相互作用关系具有 不确定性 ④ 软件系统面临不断变化的压力和需要满足不 同用户的工作方式和习惯的压力 ⑤ 规模较大的软件系统的生命周期一般都超过 相应硬件系统的生命周期
对象形式:外部实体 、事物、发生的事件、角色、组织 单位、场所、构造物等
确定最终对象
确定原则:需要保留的信息,需要的服务,具有多个属 性,具有述中或通过对类的理解而标识出属性。
定义操作
操作定义了对象的行为并以某种方式修改对象的属性。 操作分为:对数据的操作,计算操作,控制操作。
相关文档
最新文档