一章程序设计基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发和维护也都很困难。
2.3 面向对象的程序设计
2.3.1 面向对象方法的特点
① 与人类习惯的思维方法一致 ② 稳定性好 ③ 可重用性好 ④ 易于开发大型软件产品 ⑤ 可维护性好
2.3 面向对象的程序设计
2.3.1 面向对象方法的特点
将数据及对数据的操作方法封装在一起,作为一 个相互依存、不可分离的整体——对象。
具有相同属性和行为的一组对象的集合 一个属于某类的对象称为该类的一个实例。
<例>钟表类的定义
class 属C性loc:k
{ int Hour, int Minute, int Second
p行ub为lic::
SevtToiimd eS(e),tTSimhoe(wiinnTttimNNeeeww()SH),; int NewM, void ShowTime();
管理人员
销售人员
销售经理
多继承、单继承
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
5. 多态性(polymorphism)
多态是指在一般类中定义的属性或行为,被特 殊类继承之后,可以具有不同的数据类型或表 现出不同的行为。这使得同一个属性或行为在 一般类及其各个特殊类中具有不同的语义。
2.1 程序设计方法与风格
方法:
面向过程的结构化程序设计方法 面向对象的程序设计方法
风格:
清晰第一、效率第二
源程序文档化 数据说明的方法 语句的结构 输入和输出方法
2.2 结构化程序设计
程序的目的:用于数学计算 主要工作:设计求解问题的过程
2.2 结构化程序设计
设计原则
2.2 结构化程序设计
缺点: 可重用性差、数据安全性差、难以开发大
型软件和图形界面的应用软件
把数据和处理数据的过程分离为相互独立的实体。 当数据结构改变时,所有相关的处理过程都要进行相
应的修改。 每一种相对于老问题的新方法都要带来额外的开销。 图形用户界面的应用程序,很难用过程来描述和实现,
类狗 莱丝; 莱丝.毛皮颜色=棕白色 莱丝.吠叫();
我们无法让狗这个类去吠叫,但是我们 可以让对象"莱丝"去吠叫,正如狗可以 吠叫,但没有具体的狗就无法吠叫。
方法(行为)
方法(Method)是一个类能做的事情,但方法并没 有去做这件事。
作为一条狗,莱丝是会吠叫的,因此“吠叫()”就是它的一个 方法。与此同时,它可能还会有其它方法,例如“坐下()”, 或者“吃()”。 对一个具体对象的方法进行调用并不影响其 它对象,正如所有的狗都会叫,但是你让一条狗叫不代表所 有的狗都叫。
4. 继承(inheritance)
继承对于软件复用有着重要意义,是面向对象技 术能够提高软件开发效率的重要原因之一。
定义:特殊类的对象拥有其一般类的全部属性与 服务,称作特殊类对一般类的继承。
例如:将轮船作为一个一般类,客轮便是一个特殊类。
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口,与外界发生关系。 对象与对象之间通过消息进行通讯。
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念 1. 对象(object) 是系统中用来描述客观事物的一个实体,它是
用来构成系统的一个基本单位。对象由一组属 性和一组行为构成。
行为:评职称 涨工资
类:讲师
属性:姓名
ቤተ መጻሕፍቲ ባይዱ年龄
性别
单位
抽象
职称
工资
操作:评职称 涨工资
class 讲师 胡哥; 胡哥.评职称(.....); 胡哥.调工资(.....);
消息
方法:评职称 {步骤 条件} 涨工资 {公式}
数据 结构 方法名
方法体
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
7. 在面向对象方法中,一个对象请求另一对象为其服务的方
式是通过发送______。
A. 调用语句
B. 命令
C. 口令
D. 消息
8. 在设计程序时,应采纳的原则之一是______。
A. 程序结构应有助于读者理解 B. 不限制goto语句的使用 C. 减少或取消注解行 D. 程序越短越好
9. 面向对象的设计方法与传统的的面向过程的方法有本质不同, 它的基本原理是______。

类(Class)定义了一件事物的抽象特点。通 常来说,类定义了事物的属性和它可以做到的 (它的行为)。
类可以为程序提供模版和结构。
一个类的方法和属性被称为“成员”。
类狗 { 私有成员: 体重
毛皮颜色 ......... 公有成员: 吠叫() ........... }
对象
对象(Object)是类的实例。
继承的目的:实现代码重用 派生的目的:当新的问题出现,原有程序无法
解决(或不能完全解决)时,需要对原有程序 进行改造。
继承与派生问题举例
交 通工具
汽车
小汽车
卡车
旅行车
工具车
轿车
面包车
继承与派生问题举例
动物
猴子


狮子

猎豹
继承与派生问题举例
几 何形状

矩形
继承与派生问题举例
雇员
兼职技术人员
4. 继承(inheritance)
保持已有类的特性而构造新类的过程称为继 承。
在已有类的基础上新增自己的特性而产生新 类的过程称为派生。
被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
4. 继承(inheritance)
类狗 莱丝,泰尔; 莱丝.吠叫(); 则泰尔是不会吠叫的,因为这里的吠叫只是对对象"莱丝"进 行的。
封装性
具备封装性(Encapsulation)的面向对象程序设计隐藏了某 一方法的具体执行步骤,取而代之的是通过消息传递机制传送 消息给它。
class MeiNu //美女类!
{封..../装.结*..一.是构...个.体通面狗过向莱限过丝制程;的只程有序特会定这类样的写:实*例/ 可以访问这一特 定 传piiirnnni类出vtttaYXT设的。吸吐tWWWe置:气气成;;; 音((///员莱莱///我我胸调丝丝,还就围(莱))而是不;;丝不说它,说了们5)了噢;通噢:常) :)利) 用接口实现消息的传入
2.3.2 面向对象方法的基本概念
3. 消息(message)
消息是系统向对象发出的服务请求,是对象之 间的通信机制。提供服务的对象负责消息协议 的格式和消息的接收,请求服务的对象提供输 入信息,获取应答消息内容。
在面向对象中,消息常常通过函数调用来实现。
<例> 实例: 状态:胡哥 29岁 男 计算机 讲师 680
例如:
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
5. 多态性(polymorphism) 多态:同一名称,不同的功能实现方式。 目的:达到行为标识统一,减少程序中标
识符的个数。 实现:重载函数和虚函数
总结
面向对象程序设计(英语:Object Oriented Programming,缩写:OOP),指一种程序 设计范型,同时也是一种程序开发的方法论。 它将对象作为程序的基本单元,将程序和数据 封装其中,以提高软件的重用性、灵活性和扩 展性。
private: int Hour,Minute,Second;
};
class Clock {
成员函数
public: void SetTime(int NewH, int NewM, int NewS); void ShowTime();
private:
int Hour, Minute, Second;
多态性(Polymorphism)指方法在不同的类 中调用可以实现的不同结果。
类狗 莱丝;
类鸡 鲁斯特;
莱丝.叫();
鸡啼
鲁斯特.叫();
犬吠
练习题
1. 下面描述中,符合结构化程序设计风格的是______。
A. 使用顺序、选择和重复(循环)三种基本控制结构表示 程序的控制逻辑
B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句
public:
main()
局部 对象
int weight;
{
int height;
Desk b;
int width;
·········
int lenth;
};
}
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念 2. 类(Class)和实例(Instance) (1)从结构到类 (2)什么是类
D. 维护更复杂
1.结构化程序设计的三种基本逻辑结构为顺序、选择和( ) 2.在面向对象方法中,信息隐蔽是通过对象的( )性来实现
的. 3.类是一个支持集成的抽象数据类型,而对象是类的( ) 4.在面向对象方法中,类之间共享属性和操作的机制称为
2. 下面概念中,不属于面向对象方法的是______。
A. 对象
B. 继承
C. 类
D. 过程调用
3. 结构化程序设计主要强调的是______。
A. 程序的规模
B. 程序的易读性
C. 程序的执行效率
D. 程序的可移植性
4. 对建立良好的程序设计风格,下面描述正确的是______。 A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念 1. 对象(object) 对象的基本特点
标识唯一性 分类性 多态性 封装性
2.3 面向对象的程序设计
2.3.2 面向对象方法的基本概念
1. 对象(object)
全局 对象
c对las象s 的De定sk义
Desk a;
{ 全局对象、局部对象、静·态···对···象· 、堆对象
};
成员数据
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); }
};
/*
当狗的吠叫被封装到类M中e,iN任u何jo人rd都an可; /以/n简ow单is地乔使丹用!:
*/
类狗 莱丝;
jordan.XW = 34;
莱丝.吠叫() ;
jordan.YW = 24;
jordan.TW = 34;
继承性与多态性
继承性(Inheritance)是指,在某种情况下, 一个类会有“子类”。
19
#include<iostream> class Clock {
......//类的声明略 } //......类的实现略 int main() { Clock myClock;
myClock.SetTime(8,30,30); myClock.ShowTime(); }
2.3 面向对象的程序设计
自顶向下、逐步求精。采用模块分解与功能抽象。 分而治之。
程序结构:
按功能划分为若干个基本模块,形成一个树状结构。 各模块间的关系尽可能简单,功能上相对独立;每一模
块内部均是由顺序、选择和循环三种基本结构组成。 其模块化实现的具体方法是使用子程序(函数)。
2.2 结构化程序设计
优点:
有效地将一个较复杂的程序系统设计任务分解成 许多易于控制和处理的子任务,便于开发和维护。
A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念 去思考
10.采用面向对象技术开发的应用系统的特点是______。
A. 重用性更强
B. 运行速度更快
C. 占用存储量小
5. 下面对对象概念描述错误的是______。
A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体 C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性
6. 算法一般都可以用哪几种控制结构组合而成______。 A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环
属性:用来描述对象静态特征的数据项。 行为:用来描述对象动态特征的操作序列。
<例> 有一个人名字叫胡哥,性别男,身高1.80m,体重 68kg,可以修电器,可以教计算机课,描述该对象 如下:
–对象的静态特征: •性别:男 •身高:1.80m •体重:68kg
–对象的动态特征: •回答身高 •回答体重 •回答性别 •修理电器 •教计算机课
相关文档
最新文档