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