第1章面向对象概述


(3)确定关联
两个或多个对象之间相互作用、相互依赖的关系 就是关联。
在需求陈述中使用的描述性动词或动词词组,通 常表示关联关系:
• 大多数关联可通过直接提取需求中的动词词组得出
• 分析需求陈述,与用户及领域专家讨论,还能发现 一些隐含的关联
确定关联的过程:
需求说明 选取相关动词 暂定关联 过滤不必要关联 关联
UML基础 与Rose建模实用教程
清华大学出版社
面向对象概述 本章首先介绍了面向对象的基本概念,并 与面向过程进行对比,然后具体到面向对 象的基本特征和实际的方法论技术,最后 对为什么使用UML建模进行简要介绍。
面向对象=对象+类+继承+通信
两种程序设计方法
程序设计的两次飞跃
结构化程序设计
(1)标识和确定类
标识出来自问题域的相关对象类,这些对象类包 括物理实体和概念的描述。 确定类的过程:
需求说明 选取相关名词 暂定类 过滤不符合类 类
查找问题陈述中的所有名词,将产生如下的暂定 类:软件、图书管理信息系统、图书管理员、借 阅者、老师、学生、帐号、图书信息、书刊名、 书刊的ISBN/ISSN号等。
自底向上也称为从特殊类发现一般类。
? 公司职员 姓名 身分证号码 …… …… 股东 股份 …… …… 职员 工资 …… ……
股东 姓名 身分证号码 股份 …… ……
职员 姓名 身分证号码 工资 …… ……
(2)自顶向下:将现有的类细化为更具体的类。具 体化常常可以从应用域中明显看出来。 自顶向下也称为从一般类发现特殊类。
提供构造系统的模板。 记录决策。
建模的原则 (1)仅当需要时,才为业务或软件系统构建模型。
(2)按照实际情况或按我们需要的样式,对业务或软 件系统进行建模。
(3)依据解决方案,来构造需要的模型。
(4)最好用一组相对独立的模型,从不同的侧面,描 述重要的业务或软件系统。
用什么工具建模? 面向对象的建模语言—统一建模语言UML Booch (Grady Booch) OOSE(Jim Rumbaugh)
1.1.4 消息和事件
消息(Message)是指描述事件发生的信息,是对象 间相互联系和作用的方式。
一个消息由三部分组成:
• 1. 接受消息的. 方法需要的参数
• aStudent.setName("陈浩然");
事件通常是指一种由系统预先定义而由用户或系统 发出的动作。事件作用于对象,对象识别事件并作 出相应反应。
• 程序=数据结构+算法
面向对象程序设计
• 程序 = 对象 + 消息
两种软件工程方法
传统软件工程
• 软件分析 → 概要设计 → 详细设计 → 面向过 程的编码 → 测试
面向对象软件工程
• 软件分析与对象抽取 → 对象详细设计 → 面向 对象的编码 → 测试
1.1 面向对象的基本概念
1.1.1 对象 对象(Object)是面向对象(Object-Oriented,OO) 系统的基本构造块,是一些相关的变量和方法的软件 集。 客观世界里的任何实体都可以被称为对象。 对象可以是具体的、有形的物,也可以是无形的 事物或概念。 对象是问题域或实现域中某些事物的一个抽象。 对象是一个封装数据属性和操作行为的实体。
1.1.2 面向对象与面向过程的区别 面向对象:以对象为基础,以事件或消息来驱动对 象执行处理的程序设计技术。是自下而上的程序设 计方法,其特点是:从问题的一部分着手,一点一 点地构建出整个程序。在设计中以数据为中心,使 用类作为表现数据的工具。
1.1.3 对象与类的确定
对象(Object)是由状态(Attribute)和行为 (Behavior)构成的,是包含客观事物特征的抽象实体, 封装了状态和行为。 • 对象=数据+数据操作
常见的软件开发模式有4种类型: • 第一类:需求完全确定。如瀑布模型。
• 第二类:只提供基本需求的迭代式开发模型。 如喷泉模型。
• 第三类:以体系结构为基础或基于构件的开发 模型。如基于构件的开发模型。 • 第四类:轻量级开发模型。如XP。
1. 面向对象设计的准则
① 模块化:对象就是模块。
② 抽象 ③ 信息隐藏:通过对象的封装来实现。 ④ 低耦合 耦合:不同对象之间相互关联的紧密程度。
⑤ 高内聚
高内聚:一个对象类中应昼多地汇集逻辑上相关 的计算资源。如果一个模块只负责一件事件,就 说明这个模块有很高的内聚度。
2. 面向对象设计的实用规则
设计结果清晰易懂,结构的深度适当,类小,消 息中参数少,设计的变动少。
1.4 面向对象建模 什么是模型?
模型就是现实的简单化。
这些模型是用图形符号对现实世界中某个事物的模 仿或仿真。
为什么要建模?
建模是为了能够更好地理解正在开发的系统。 • 建模的目标 : 便于展现系统。
•
• •
允许指定系统的结构或行为。
多态性
1. 抽象
抽象忽略了事件中与当前目标无关的非本质特征, 强调与当前事物相关的特征,并将事物正确的归 类,得出事物的抽象模型,并且为对象的重用提 供了保障。
2. 封装
封装是面向对象方法的一个重要原则。 封装有两个含义:
① 结合性:将对象的全部状态和行为结合在一起, 形成不可分割的整体。其私有属性只能由对象 的行为来修改和读取。 ② 信息隐蔽性:尽可能隐蔽对象的内部细节,与 外界的接口只能通过外部接口来实现。
对象通过对外提供的方法在系统中发挥自己的作用, 当系统中的其它对象请求这个对象执行某个方法时, 就向该对象发送一个消息,对象响应这个请求,完 成指定的操作。程序的执行取决于事件发生的顺序, 由顺序产生的消息来驱动程序的执行。
1.2 面向对象的基本特征
面向对象的基本特征:
①
②
抽象
封装
③
④
继承
void brake() { … } void speedUp() {…}; void slowDown() { … } }
的对象的原型
类的定义需要包含以下要素:
• 定义该类对象的数据结构(属性的名称和类 型)。
• 对象所要执行的操作,即类的对象要被调用执 行哪些操作以及进行这些操作时对象还要执行 哪些操作,如数据库操作等。
一个对象的实例图解
1.1.2 面向对象与面向过程的区别 结构化程序设计:其思想是把大的程序分解为具有 层次结构的若干个模块,每个模块再分解为下一层 模块,如此自顶向下,逐步细分,从而把复杂的大 模块分解为许多功能单一的小模块。其特征是以函 数/功能为中心,自上而下,先确定程序的流程怎 么走,函数间的调用关系和依赖关系是什么。
封装的信息屏蔽作用反映了事物的相对独立性, 我们可以只关心它对外所提供的接口,即能够提 供什么样的服务,而不用去关注其内部的细节问 题。
3. 继承 继承性是面向对象程序设计语言不同于其他语言的 最主要特点。 继承是指子类可以自动拥有父类的全部属性与操作 的机制。 继承意味着“自动地拥有”,即在特殊类中不必重 新对已经在一般类中所定义过的属性和行为进行定 义,而是特殊类自动地、隐含地拥有其一般类的属 性和行为。 继承对类的重用性,提供了一种明确表述共性的方 法。即一个特殊类既有自己定义的属性和行为,又 有继承下来的属性和行为。
继承的描述
单重继承和多重继承的描述
4. 多态性
定义:同一操作作用于不同的对象,可以有不 同的解释,产生不同的执行结果。
1.3 面向对象方法论
1.3.1 面向对象分析
目的:认知客观世界的系统并对系统进行建模。 构造分析模型的用途:明确问题域的需求、为用户 和开发人员提供明确需求、为用户和开发人员提供 一个协商的基础,并作为后继的设计和实现的框架。 需求分析的结果应以文档形式存在。(软件需求规 格说明书)
使用下列标准删除不必要和不正确的关联:
• 如果某个类被删除,则与它有关的关联也应该删去, 或用其他对象重新表达这个关联。
• 与问题无关的或应在实现阶段考虑的关联。
• 关联应该描述问题域的静态结构,而不应该描述一 个瞬时事件。
• 应该删除那些可以用其他关联定义的冗余关联。
(4)确定属性
属性是个体对象的性质,通常利用修饰性的名词 词组来表示。
3. 建立对象的动态模型 准备脚本确定事件准备事件跟踪表构造状态 图 4. 建立系统的功能模型
1.3.2 面向对象设计
面向对象设计是把分析阶段得到的需求转变成符 合成本和质量要求的、抽象的系统实现方案的过 程。 面向对象设计分为:
• • 系统设计:用于确定实现系统的策略和目标 系统的高层结构。 对象设计:用于确定问题解空间中的类、关 联、接口形式及实现操作的算法。
class People { private String name; public String getName() { return name; } public void setName(String strName) { name = strName; } }
确定一个类的步骤:确定系统的范围->在系统范围 内寻找对象->将对象抽象成为一个类,进而确定类 的数据和操作。
公司职员 姓名 身分证号码 …… ……
股东 股份 …… …… ? 职员 工资 …… ……
公司职员 姓名 身分证号码 股份 工资 …… ? ……
(5)完善对象模型
对象建模不可能一次就能保证模型是完全正确的, 软件开发的整个过程就是一个不断完善的过程。
模型的不同组成部分多半在不同阶段完成,如果 发现模型的缺陷,就可以返回到前期阶段去修改, 有些细化工作是在动态模型和功能模型完成之后 才开始进行的。
(2)准备数据字典
合集下载

第1章 Java语言概述

第1章 Java语言概述

第1章Java语言概述本章知识目标:❑了解面向对象程序设计的特性。

❑掌握Java应用程序和Applet程序的调试过程。

❑了解Java的开发与运行环境。

❑了解Java语言的特点。

Java语言从1995年问世至今,得到众多厂商的支持,成为软件开发的主流技术。

Java 是面向对象的程序设计语言,拥有跨平台、多线程等众多特性,在网络计算中得到广泛应用。

1.1 面向对象程序设计的特性早期的编程语言如Fortran、C等都是面向过程的语言,面向过程编程的一个明显特点是数据与程序是分开的。

但随着计算机软件的发展,程序越做越大,软件维护也日益困难。

面向对象编程贴近于人类思维方式,面向对象的软件开发将事物均看作对象,对象有两个特征:状态与行为,对象可以通过自身的行为来改变自己的状态。

最新的程序设计语言一般为面向对象的语言,面向对象程序设计具有如下四大特性。

1.封装性(Encapsulation)面向对象的第一个原则是把数据和对该数据的操作都封装在一个类中,类的概念和现实世界中的“事物种类”是一致的。

例如,电视机就是一个类,每台电视机都有尺寸、品牌、频道等属性。

我们可用on/off开关来开启电视,通过更改频道让电视机播放不同的节目。

对象是类的一个实例化结果,对象具有类所描述的所有属性以及方法。

对象是个性化的,在程序设计语言中,每个对象都有自己的存储空间来存储自己的各个属性值,有些属性本身又可能由别的对象构成。

每个对象都属于某个类。

面向对象程序设计就是设计好相关的类,类中有属性和方法。

在统一建模语言UML中使用如图1-1所示的符号来描述对象和类的结构,其中,属性用来描述对象的状态,而方法则用来描述对象的行为。

2.继承性(Inheritance)继承是在类、子类以及对象之间自动地共享属性和方法的机制。

类的上层可以有父类,下层可以有子类,形成一种层次结构,如图1-2所示。

一个类将直接继承其父类的属性和方法,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和方法。

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基础及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第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

面向对象技术与UML

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

面向对象程序设计概述

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

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

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

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

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

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

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

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

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

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

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

《C++面向对象程序设计(第2版)》第1章 绪论


1.2 面向对象思想与机制(续3)
“类”是相似物体的高度抽象,或者说,类是相似对象的 特征抽象。 简单来说,一个类都包含若干“成员”,这些成员代表了 同类对象的“特征”:
人 树 电脑 有姓名、年龄、身高、体重,思想 有高度、宽度、命名 有品牌、显示器、主板、CPU 遇到突发事件时有回应 适度浇水可以生长,扒 掉树皮就会死亡 加电就会运行,点击就 有反应
每个类的特征数量虽然有多有少,但都可以分为静态部分 和动态部分。前者称为物理特征,或属性,或数据,后者 称为行为特征,或动作,或方法。 归结起来,一个类是由数据成员和方法成员构成的。
1.2 面向对象思想与机制(续4) 2. 类与对象
一个对象是个体存在,
一个类是相同对象的共性。
一个对象不仅具有特征,而 且每一个特征都可以赋予具 体值。 在该名字前加上“这个”、 “那个”等限定词后则构成 对象。
面向对象程序设计
西南交通大学信息科学与技术学院
主讲教师:廖革元
课程说明 参考教材 :
C++面向对句程序设计 清华大学出版社 李晋江
考核要求: 考勤+作业+期末考试
从C到C++
关键是思 想观念的 转变
C程序员
?
C++程序员
你的处境 这是又一项准备——思想准备。 1. 你的庆幸: 你所写的全部C代码均可在所有支持 C++C 的编译器 越是资深的 程序员,就 中使用。 越难以跨越感情和习惯性 思维模式的鸿沟。 2. 你的不幸: 你所知道全部C语言知识和面向对象毫无关系,你 C语言学的越扎实,越习惯面向过程编程,越难转 请记住这句名言: 向面向对象。
1.2 面向对象思想与机制(续1) 1.人类认识世界和发展世界的过程

学习uml很简单---1.UML概述


UML 语言包含的三方面内容
• UML 基本图素:它是构成 UML 模型图的基本元素。 例如类、对象、包、接口、组件等。 • UML 模型图:它由 UML 基本图素按照 UML 建模规 则构成。例如用例图、类图、对象图等。 • UML 建模规则: UML 模型图必须按特定的规则有机 地组合而成 , 从而构成一个有机的、完整的 UML 模 型图( well-formed UML diagram )。
单一继承与多重继承
• 如果一个子类只有唯一一个父类,这个继承称为单一 继承。 • 如果一个子类有一个以上的父类,这种继承称为多重 继承。
消息
• 消息 (message) 传递是对象间通信的手段,一个对 象通过向另一个对象发送消息来请求其服务。 • 一个消息通常包括接收对象名、调用的操作名和适当 的参数(如果有必要的话)。 • 消息只告诉接收对象需要完成什么操作,但并不指示 接收者怎样完成操作。消息完全由接收者解释,接收 者独立决定采用什么方法完成所需的操作。
UML 在建模中的作用
• 使用 UML 可以对现实问题和需要开发的系统进行可 视化描述,这样可以帮助用户和项目组成员理解系 统,方便相互之间的交流。 • 使用 UML 可以描述一个系统的结构和行为。 • 不同的 UML 模型图可以作为项目不同阶段的软件开 发文档。 • 使用 UML 可以方便地进行交流和沟通,减少了不同 建模系统之间转换的成本。
UML 发展历史
Rational 三剑客
• Grady Booch 提出的 Booch 方法——面向对象设 计 (Object-Oriented Design) 方面 • Ivar Jacobson 提出的面向对象软件工程 (ObjectOriented Software Engineering) • James Rumbaugh 提出的对象模型技术 (ObjectModeling Technique, OMT)—— 面向对象分析 (Object-Oriented Analysis, OOA) 方面

面向对象程序设计 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;}
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档