第2章C语言程序设计基础与算法 (1).ppt_第1页
第2章C语言程序设计基础与算法 (1).ppt_第2页
第2章C语言程序设计基础与算法 (1).ppt_第3页
第2章C语言程序设计基础与算法 (1).ppt_第4页
第2章C语言程序设计基础与算法 (1).ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 程序设计基础与算法,主要内容,2.1 程序设计方法与风格 2.2 结构化程序设计 2.3 面向对象的程序设计,2.1 程序设计方法与风格,程序:是具有特定功能的可执行的指令的集合。,2.1.1 程序与程序设计方法,程序设计方法:,定义:是指在设计程序过程中所采取的系统的研究观点和方法。,两个阶段:结构化程序设计阶段和面向对象的程序设计阶段。,2.1.2 程序设计风格,定义:是指编写程序时所表现出的特点、习惯和逻辑思路。,主导的程序设计风格:“清晰第一,效率第二”,2.2 结构化程序设计,2.2.1 结构化程序设计的原则,自顶向下,逐步求精,模块化,限制使用goto语句。P59,2.2.

2、2 结构化程序的基本结构与特点,1966年Bobra等提出了三种基本结构:顺序、选择和循环结构,可以构造任何复杂程序。,1.顺序结构:按照语句的自然顺序,逐条语句执行程序。,2.选择结构:根据给定条件是否成立,决定执行哪一个分支的语句序列 。包括简单选择和多分支选择结构。,3.循环结构:根据给定的条件,判断是否重复执行某一相同的程序段。,面向对象的语言,出发点: 更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。 特点: 是高级语言。 将客观事物看作具有属性和行为的对象。 通过抽象找出同一类对象的共同属性和行为,形成类。 通过类的继承与多态实现代码重用,优点: 使程序能够比较直接地反

3、问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。,面向对象的语言,程序设计方法的发展历程 面向过程的程序设计方法,程序的目的:用于数学计算 主要工作:设计求解问题的过程 优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 缺点:对于庞大、复杂的程序难以开发和维护,程序设计方法的发展历程 面向对象的方法,将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体对象。 对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口,与外界发生关系。 对象与对象之间通过消息进行通讯。,程序设计方法的发展历程 面

4、向对象的方法,优点: 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。 通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。,面向对象的基本概念 对象,一般意义上的对象: 是现实世界中一个实际存在的事物。 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。,对象有如下特性: :有一个名字以区别于其它对象 :有一个状态用来描述它的某些特征 :有一组操作,每个操作决定了对象的一种功能或行为,是构成世界的一个独立单位,具有: 静态特征:可以用某种数据来描述 动态特征:对象所表现的行为或具有的功能, 有一个人名字叫胡哥,性别男,身高1.8

5、0m,体重68kg,可以修电器,可以教计算机课,描述该对象如下: 对象的静态特征: 性别:男 身高:1.80m 体重:68kg 对象的动态特征: 回答身高 回答体重 回答性别 修理电器 教计算机课,面向对象的基本概念 对象,面向对象方法中的对象: 是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。 属性:用来描述对象静态特征的数据项。 行为:用来描述对象动态特征的操作序列。,面向对象的基本概念 类,分类人类通常的思维方法 分类所依据的原则抽象 忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为

6、一类,得出一个抽象的概念。 例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念。,面向对象的基本概念 类,面向对象方法中的类 具有相同属性和行为的一组对象的集合 为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。 类与对象的关系:犹如模具与铸件之间的关系,一个属于某类的对象称为该类的一个实例。,抽象,抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有的功能。 抽象的实现:通过

7、类的声明。,抽象实例钟表,数据抽象: 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; ;,类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。 利用类可以实现数据的封装、隐藏、继承与派生。,c+中的类,类 和 对 象

8、,类的声明形式,类是一种用户自定义类型,声明形式:P67-68,class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 ,类 和 对 象,类的成员,class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second; ;,成员数据,成员函数,类 和 对 象,void Clock : SetTime(int NewH, int NewM, int NewS) Hour=Ne

9、wH; Minute=NewM; Second=NewS; void Clock : ShowTime() printf(“%d:%d:%d”,Hour,Minute,Second); ,19,类 和 对 象,时间类的实现部分,具体给出了函数功能的实现。,作用域运算符:用来标识某个成员函数是属于哪个类的。,类 和 对 象,成员函数,在类中说明原形,可以在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体。,成员数据,与一般的变量声明相同,但需要将它放在类的声明体中。,对象,类的对象是该类的某一特定实体,即类类型的变量。 声明形式: 类名 对象名; 例: Clock m

10、yClock;,类 和 对 象,类中成员的访问方式,类中成员互访 直接使用成员名 类外访问 使用“对象名.成员名”方式访问 public 属性的成员,类 和 对 象,类的应用举例,#include class Clock ./类的声明略 /.类的实现略 int main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); ,类 和 对 象,面向对象的基本概念 封装,将抽象出的数据成员、代码成员相结合,将它们视为一个整体。 目的是曾强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来

11、使用类的成员。 实现封装:类声明中的 ,面向对象的基本概念 继承与派生,继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。 定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。 例如:将轮船作为一个一般类,客轮便是一个特殊类。,保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。,继承与派生问题举例,继承与派生问题举例,继承与派生问题举例,单继承 :一个类只允许有一个父类。 多重继承 :一个类允许有多个父类。功能更强,使用更方便。,继

12、承与派生的目的,继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。,面向对象的基本概念 多态性,多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。 例如: 数的加法-实数的加法 -复数的加法,多态:同一名称,不同的功能实现方式。 目的:达到行为标识统一,减少程序中标识符的个数。 实现:重载函数和虚函数,总结,面向对象程序设计(英语:Object Oriented Programming,缩写:OOP),指一种程序设计范型

13、,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。,类,类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。 类可以为程序提供模版和结构。 一个类的方法和属性被称为“成员”。,类狗 私有成员: 体重 毛皮颜色 . 公有成员: 吠叫() . ,对象,对象(Object)是类的实例。 类狗 莱丝; 莱丝.毛皮颜色=棕白色 莱丝.吠叫();,我们无法让狗这个类去吠叫,但是我们可以让对象莱丝去吠叫,正如狗可以吠叫,但没有具体的狗就无法吠叫。,方法(行为),方法(Method)是一个类能做的

14、事情,但方法并没有去做这件事。 作为一条狗,莱丝是会吠叫的,因此“吠叫()”就是它的一个方法。与此同时,它可能还会有其它方法,例如“坐下()”,或者“吃()”。 对一个具体对象的方法进行调用并不影响其它对象,正如所有的狗都会叫,但是你让一条狗叫不代表所有的狗都叫。 类狗 莱丝,泰尔; 莱丝.吠叫(); 则泰尔是不会吠叫的,因为这里的吠叫只是对对象莱丝进行的。,继承性与多态性,继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。 多态性(Polymorphism)指方法在不同的类中调用可以实现的不同结果。,类狗 莱丝; 类鸡 鲁斯特; 莱丝.叫(); 鲁斯特.叫();,鸡啼 犬吠,消息,消息是系统向对象发出的服务请求,是对象之间的通信机制。提供服务的对象负责消息协议的格式和

温馨提示

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

评论

0/150

提交评论