Download presentation
Presentation is loading. Please wait.
1
第 2 章 程序设计基础
2
知识类型:理论 学时: 2 学时 分值:约 4 分
3
2.1 程序设计方法与风格 方法: 面向过程的结构化程序设计方法 面向对象的程序设计方法 风格: 清晰第一、效率第二 源程序文档化 数据说明的方法 语句的结构 输入和输出方法
4
2.2 结构化程序设计 程序的目的:用于数学计算 主要工作:设计求解问题的过程
5
2.2 结构化程序设计 设计原则 自顶向下、逐步求精。采用模块分解与功能抽象。 分而治之。 程序结构: 按功能划分为若干个基本模块,形成一个树状结构。 各模块间的关系尽可能简单,功能上相对独立;每一模 块内部均是由顺序、选择和循环三种基本结构组成。 其模块化实现的具体方法是使用子程序(函数)。
6
优点: 有效地将一个较复杂的程序系统设计任务分解成 许多易于控制和处理的子任务,便于开发和维护。 2.2 结构化程序设计
7
缺点: 可重用性差、数据安全性差、难以开发大 型软件和图形界面的应用软件 把数据和处理数据的过程分离为相互独立的实体。 当数据结构改变时,所有相关的处理过程都要进行相 应的修改。 每一种相对于老问题的新方法都要带来额外的开销。 图形用户界面的应用程序,很难用过程来描述和实现, 开发和维护也都很困难。 2.2 结构化程序设计
8
与人类习惯的思维方法一致 稳定性好 可重用性好 易于开发大型软件产品 可维护性好 2.3 面向对象的程序设计 2.3.1 面向对象方法的特点
9
将数据及对数据的操作方法封装在一起,作为一 个相互依存、不可分离的整体 —— 对象。 对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口,与外界发生关系。 对象与对象之间通过消息进行通讯。 2.3 面向对象的程序设计 2.3.1 面向对象方法的特点
10
1. 对象( object) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 是系统中用来描述客观事物的一个实体,它是 用来构成系统的一个基本单位。对象由一组属 性和一组行为构成。 属性:用来描述对象静态特征的数据项。 行为:用来描述对象动态特征的操作序列。
11
<例><例> 有一个人名字叫胡哥,性别男,身高 1.80m ,体重 68kg ,可以修电器,可以教计算机课,描述该对象 如下: – 对象的静态特征: 性别:男 身高: 1.80m 体重: 68kg – 对象的动态特征: 回答身高 回答体重 回答性别 修理电器 教计算机课
12
1. 对象( object) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 对象的基本特点 标识唯一性 分类性 多态性 封装性
13
1. 对象( object) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 对象的定义 全局对象、局部对象、静态对象、堆对象 class Desk { public: int weight; int height; int width; int lenth; };}; Desk a; ········ main() { Desk b; ········· } 全局 对象 局部 对象
14
2. 类 (Class) 和实例 (Instance) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 (1) 从结构到类 (2) 什么是类 具有相同属性和行为的一组对象的集合 一个属于某类的对象称为该类的一个实例。
15
钟表类的定义 属性: int Hour, int Minute, int Second 行为: SetTime(), ShowTime() class Clock { public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; };};
16
class Clock { public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second; }; 成员数据 成员函数
17
void Clock :: SetTime(int NewH, int NewM, int NewS) { Hour=NewH; Minute=NewM; Second=NewS; } void Clock :: ShowTime() { printf(“%d:%d:%d”,Hour,Minute,Second); } 19
18
#include class Clock {......// 类的声明略 } //...... 类的实现略 int main() { Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); }
19
3. 消息 (message) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 消息是系统向对象发出的服务请求,是对象之 间的通信机制。提供服务的对象负责消息协议 的格式和消息的接收,请求服务的对象提供输 入信息,获取应答消息内容。 在面向对象中,消息常常通过函数调用来实现。
20
<例><例> 状态:胡哥 29 岁 男 计算机 讲师 680 实例: 行为:评职称 涨工资 抽象 属性:姓名 年龄 性别 单位 职称 工资 类:讲师 操作:评职称 涨工资 数据 结构 方法名 方法:评职称 { 步骤 条件 } 涨工资 { 公式 } 方法体 class 讲师 胡哥 ; 胡哥. 评职称(..... ) ; 胡哥. 调工资(..... ) ; 消息
21
4. 继承 (inheritance) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 继承对于软件复用有着重要意义,是面向对象技 术能够提高软件开发效率的重要原因之一。 定义:特殊类的对象拥有其一般类的全部属性与 服务,称作特殊类对一般类的继承。 例如:将轮船作为一个一般类,客轮便是一个特殊类。
22
保持已有类的特性而构造新类的过程称为继 承。 在已有类的基础上新增自己的特性而产生新 类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 4. 继承 (inheritance) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念
23
继承的目的:实现代码重用 派生的目的:当新的问题出现,原有程序无法 解决(或不能完全解决)时,需要对原有程序 进行改造。 4. 继承 (inheritance) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念
24
继承与派生问题举例
27
多继承、单继承
28
5. 多态性 (polymorphism) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念 多态是指在一般类中定义的属性或行为,被特 殊类继承之后,可以具有不同的数据类型或表 现出不同的行为。这使得同一个属性或行为在 一般类及其各个特殊类中具有不同的语义。 例如:
29
多态:同一名称,不同的功能实现方式。 目的:达到行为标识统一,减少程序中标 识符的个数。 实现:重载函数和虚函数 5. 多态性 (polymorphism) 2.3 面向对象的程序设计 2.3.2 面向对象方法的基本概念
30
总结 基本单元 面向对象程序设计(英语: Object Oriented Programming ,缩写: OOP ),指一种程序 设计范型,同时也是一种程序开发的方法论。 它将对象作为程序的基本单元,将程序和数据 封装其中,以提高软件的重用性、灵活性和扩 展性。
31
类 类( Class )定义了一件事物的抽象特点。通 常来说,类定义了事物的属性和它可以做到的 (它的行为)。 类可以为程序提供模版和结构。 一个类的方法和属性被称为 “ 成员 ” 。 类狗 { 私有成员 : 体重 毛皮颜色......... 公有成员 : 吠叫 ()........... }
32
对象 对象( Object )是类的实例。 类狗 莱丝; 莱丝. 毛皮颜色 = 棕白色 莱丝. 吠叫 () ; 我们无法让狗这个类去吠叫,但是我们 可以让对象 " 莱丝 " 去吠叫,正如狗可以 吠叫,但没有具体的狗就无法吠叫。
33
方法 ( 行为 ) 方法( Method )是一个类能做的事情,但方法并没 有去做这件事。 作为一条狗,莱丝是会吠叫的,因此 “ 吠叫 ()” 就是它的一个 方法。与此同时,它可能还会有其它方法,例如 “ 坐下 ()” , 或者 “ 吃 ()” 。 对一个具体对象的方法进行调用并不影响其它 对象,正如所有的狗都会叫,但是你让一条狗叫不代表所有 的狗都叫。 类狗 莱丝,泰尔; 莱丝. 吠叫 () ; 则泰尔是不会吠叫的,因为这里的吠叫只是对对象 " 莱丝 " 进 行的。
34
封装性 具备封装性( Encapsulation )的面向对象程序设计隐藏了某 一方法的具体执行步骤,取而代之的是通过消息传递机制传送 消息给它。 /* 一个面向过程的程序会这样写: */ 结构体狗 莱丝 ; 设置音调 ( 莱丝, 5) ; 吸气 ( 莱丝 ) ; 吐气 ( 莱丝 ) ; /* 当狗的吠叫被封装到类中,任何人都可以简单地使用: */ 类狗 莱丝; 莱丝. 吠叫 () ; 实例 成员 封装是通过限制只有特定类的实例可以访问这一特 定类的成员,而它们通常利用接口实现消息的传入 传出。 class MeiNu // 美女类! {............ private: int XW; // 胸围 int YW; // 我就不说了噢 :) int TW; // 我还是不说了噢 :)) }; MeiNu jordan; //now is 乔丹 ! jordan.XW = 34; jordan.YW = 24; jordan.TW = 34;
35
继承性与多态性 继承性( Inheritance )是指,在某种情况下, 一个类会有 “ 子类 ” 。 多态性( Polymorphism )指方法在不同的类 中调用可以实现的不同结果。 类狗 莱丝; 类鸡 鲁斯特; 莱丝. 叫 () ; 鲁斯特. 叫 () ; 鸡啼 犬吠
36
练习题 1. 下面描述中,符合结构化程序设计风格的是 ______ 。 A. 使用顺序、选择和重复(循环)三种基本控制结构表示 程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用 goto 语句 2. 下面概念中,不属于面向对象方法的是 ______ 。 A. 对象 B. 继承 C. 类 D. 过程调用 3. 结构化程序设计主要强调的是 ______ 。 A. 程序的规模 B. 程序的易读性 C. 程序的执行效率 D. 程序的可移植性 4. 对建立良好的程序设计风格,下面描述正确的是 ______ 。 A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无
37
5. 下面对对象概念描述错误的是 ______ 。 A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体 C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性 6. 算法一般都可以用哪几种控制结构组合而成 ______ 。 A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环 7. 在面向对象方法中,一个对象请求另一对象为其服务的方 式是通过发送 ______ 。 A. 调用语句 B. 命令 C. 口令 D. 消息
38
8. 在设计程序时,应采纳的原则之一是 ______ 。 A. 程序结构应有助于读者理解 B. 不限制 goto 语句的使用 C. 减少或取消注解行 D. 程序越短越好 9. 面向对象的设计方法与传统的的面向过程的方法有本质不同, 它的基本原理是 ______ 。 A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念 去思考 10 .采用面向对象技术开发的应用系统的特点是 ______ 。 A . 重用性更强 B . 运行速度更快 C . 占用存储量小 D . 维护更复杂
39
1 .结构化程序设计的三种基本逻辑结构为顺序、选择和( ) 2 .在面向对象方法中,信息隐蔽是通过对象的( )性来实现 的. 3 .类是一个支持集成的抽象数据类型,而对象是类的( ) 4 .在面向对象方法中,类之间共享属性和操作的机制称为 ( ) 。 5. 面向对象的程序设计方法中涉及的对象是系统中用来描述客 观事物的一个( )。 6. 一个类可以从直接或间接的祖先中继承所有属性和方法。采 用这个方法提高了软件的( ) 7. 面向对象的模型中,最基本的概念是对象和 ( )。 8. 结构化程序设计是一种面向 ( ) 的设计方法.
40
9. 对象的基本特点包括标识唯一性、分类性、 多态性、( ) 和模块独立性 10. 在面向对象分析和设计中, 通常把对象所进行的操作称为 ( ) 11. 使用已经存在的类定义作为基础建立新的类定义, 这样的技术 称为 ( ) 12. 继承使得相似的对象可以共享代码和数据结构, 从而大大减 少了程序中的冗余信息, 提高软件的 ( ) 13. 对象和类的关系可以表示为 ( )和( )的关系 14. 结构化程序设计的原则中, “ 先考虑总体,后考虑细节;先考 虑全局目标,后考虑局部目标 ” 称为 ( ) 。 15. 在消息传递中,对象根据所接受的消息而做出动作,同样的 消息被不同的对象接受时可导致完全不同的行动,该现象称 为 ( ) 。
41
1. (06.4 月 ) 下列选项中不属于结构化程序设计方法的是 A) 自顶向下 B) 逐步求精 C) 模块化 D) 可复用 2. (06.4 月 ) 在面向对象方法中,【 】描述的是具有相似属性 与操作的一组对象。 3. (05.4 月 ) 在面向对象方法中,类的实例称为 【 】. 4. (09.3 月 ) 符合结构化原则的三种基本控制结构是:选择结构、 循环结构和【 】。 5. (08.4 月 ) 结构化程序设计的基本原则不包括: A. 多态性 B. 自顶向下 C. 模块化 D. 逐步求精 有关等级考试题
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.