chap1-课件

上传人:第*** 文档编号:53710154 上传时间:2018-09-04 格式:PPT 页数:54 大小:399KB
返回 下载 相关 举报
chap1-课件_第1页
第1页 / 共54页
chap1-课件_第2页
第2页 / 共54页
chap1-课件_第3页
第3页 / 共54页
chap1-课件_第4页
第4页 / 共54页
chap1-课件_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《chap1-课件》由会员分享,可在线阅读,更多相关《chap1-课件(54页珍藏版)》请在金锄头文库上搜索。

1、第 1 /54页,第1章 程序设计导论,兰州大学信息学院,计算机软件技术基础 Technology Fundamentals of Computer Software,第 2 /54页,学习目标与要求,重点 1)理解两种主要的程序设计方法 2)掌握VC集成环境下C+程序开发的基本流程 难点 1)面向对象程序设计方法及基本概念 2)VC集成开发环境,第 3 /54页,本章要点,本章将从介绍程序设计语言的发展史开始,阐述程序设计的两种主要方法结构化程序设计方法和面向对象程序设计方法,并介绍几种常用的软件集成开发环境,最后简要介绍网络程序设计的有关概念。,结构化程序设计 面向对象程序设计 程序设计环

2、境 网络程序设计语言简介,第 4 /54页,1.1 结构化程序设计,程序设计思想与计算机语言的发展 程序的构成计算机语言的发展1. 机器语言2. 汇编语言3. 高级语言,算法的集合 数据的集合,结构化程序设计语言 函数式程序设计语言 逻辑式程序设计语言 面向对象程序设计语言,第 5 /54页,机器语言 面向机器的语言,指令和数据都是0、1序列。可以被计算机硬件直接识别,不需要翻译,因此执行速度快,执行效率高。不直观,编程工作量大,易出错,程序难读,不具有通用性,对编程人员要求高。 汇编语言用一些简单的助记符来描述指令(如加法指令用“ADD”,数字用10进制或16进制来表示),因此又叫作“符号语

3、言”。一般情况下,汇编语言的指令和机器语言的指令是一一对应的。 高级语言 为普通用户设计,接近自然语言,与机器无关,具有可移植性 易学、易用、易维护。 用变量名代替存储单元地址,机器分配地址和管理存储空间。 不能被计算机硬件直接识别,需要翻译成机器可执行的目标代码后方可执行。,第 6 /54页, IBM-PC的机器语言程序如下:1011 0000 0000 0111 : 把7放入累加器A中0010 1100 0000 1000 : 8与累加器A中的值相加,结果放A1111 0100 : 停机 汇编程序(符号化了的机器语言)如下:ORG 00H : 设置程序起始地址MOV A,7 : 把7放入累

4、加器A中ADD A,8 : 8与累加器A中的值相加,结果仍放入A中HALT : 停机 高级语言程序(C语言)如下:A=7+8 : 7与8相加的结果放入变量A中printf(“%d“,A) : 在显示器上输出变量A的值return : 结束程序,第 7 /54页,结构化程序设计方法 1. 结构化程序设计的基本概念 自顶向下、逐步求精 模块化 语句结构化 用程序流程图表示的三种程序结构 :,(a) 顺序结构 (b) 选择结构 (c)循环结构,第 8 /54页,2. 结构化程序设计的基本过程 针对具体问题建立相应的数学模型设计相应的算法编程实现算法测试与调试 【例1.1.1】编程实现求一元二次方程a

5、x2+bx+c=0的根第一步:首先要确定求解的数学模型: 第二步:根据数学模型设计算法是关键的一步自然语言方式 算法的描述 伪代码方式 程序流程图方式 第三步:根据算法按某种计算机语言编写出相应的程序第四步:测试程序,程序设计的一般过程,第 9 /54页,用伪代码描述的算法示例,begininput number to a,b,c;s=b*b-4*a*c;if (s=0)p=-b/(2*a);q=sqrt(s)/(2*a);x1=p+q;x2=p-q;print(x1,x2);elseprint(“error”);endif; end,第 10 /54页,常用的流程图符号用流程图描述的算法示例

6、,(a) 端点符 (b) 处理 (c) 判断 (d) 预定义处理 (e) 连接符,第 11 /54页,结构化程序设计和一般的程序设计过程主要不同点在于算法的设计自顶向下、逐步求精的分析过程 自底向上、逐步实现的综合过程 分析过程是指通过对需要解决的问题的详细分析,不断地将其进行分解,每分解一次都是对问题的进一步细化 实现过程与之相反,它从底层模块开始,每个模块都由顺序、选择、循环三种结构实现,底层模块同时也成为实现上层模块的基础 例:判断某数是否是素数的模块分解图,结构化程序设计的基本过程,第 12 /54页,1.2 面向对象程序设计,结构化设计存在的问题 基于功能的设计方法 结构化程序设计方

7、法是基于功能的,功能是易变的,因而程序具有不稳定性、易变性,难以适应系统中的变动,往往功能的变化就意味着重新设计 数据与处理数据的行为或方法(函数)相分离 结构化程序设计只是封装了各个功能模块,而每个功能模块可以随意修改客体的属性,因此一旦某个客体属性的表达方式发生了变化,或某个行为发生了变化,就有可能影响整个系统 可重用性差 结构化程序设计方法的可重用单位是模块 ,这样的重用粒度显得非常不够,第 13 /54页,面向对象设计方法的形成与发展1. 面向对象程序设计始于面向对象程序设计语言的出现,它产生的直接原因是为了提高程序的抽象程度,以控制软件的复杂性 2. 面向对象程序设计的许多原始思想都

8、来之于Simula语言,并在Smalltalk语言的完善和标准化过程中得到更多的扩展3. 面向对象程序设计(OOP)为程序员提供了一种更加抽象和易于理解的新的计算模型,不能期望OOP能解决更多的问题,或者减少运算的复杂度。但OOP却能用一种更容易被人们所理解和接受的方式去描述和解决现实问题。 4.面向对象程序设计方法虽然比结构化方法能更自然地表现现实世界,但它并不能解决所有问题,它本身存在固有的局限性,第 14 /54页,面向对象的主要概念 1抽象(Abstract) 抽象是指忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个

9、抽象的概念。 抽象包括过程抽象和数据抽象两个部分。 2封装(Encapsulation) 封装是指将现实世界中某个客体的属性与行为集成在一个逻辑单元内部的机制 3对象(Object) 面向对象程序设计中的对象是现实世界中的客体在应用程序中的具体体现,其中封装了客体的属性信息和行为方式,并用数据表示属性,用方法表示行为方式。 对象一般来说具有5个基本特征:自治性、封闭性、交互性 、被动性 、暂存性,第 15 /54页,4类(Class) 类(Class),是面向对象程序设计中的一个静态概念,它是对客观世界中一组具有共同属性的事物的抽象,类提供的是对象实例化的模板。 类之间主要存在3种关系:关联、

10、聚合和泛化。 关联是指两个类或多个类之间的一种广泛的关系,只要几个类的对象之间具有某种(属性上的)依赖关系,就称这几个类之间的关系为关联。 聚合是将多个类聚集在一起的意思,它反映的是类之间的整体部分关系。 泛化描述了两个类之间的“一般特殊”关系。 5继承(Inheritance) 继承是类之间的一种常见关系泛化关系(即一般特殊的关系)的反映,它体现了类与类之间不同的抽象级别 。 根据继承与被继承的关系,可分为子类和基类,基类也称为父类,第 16 /54页,6消息(Message) 消息是一个对象要求另一个对象实施某项操作的请求 消息传递是对象之间相互联系的唯一途径 7多态(Polymorphi

11、sm) 多态性指在属于同一个基类的相关的不同类的对象,对相同消息作出不同响应的能力 8重载(Overloading) 重载是指某一论域中的元素在不同的情况下可以有不同的解释,即自然语言中的一词多义,public class A public virtual void Func() public class B public override void Func() /下面是Main()函数中的执行代码 B b=new B(); A a=new A(); a.Func(); /此处调用的是B中Func()的实现,第 17 /54页,常见的面向对象程序设计语言 一个语言要称为面向对象语言必须支持几

12、个主要面向对象的概念 根据支持程度的不同,通常把面向对象语言分成两类:基于对象的语言、面向对象的语言 目前比较知名且具有代表性的面向对象程序设计语言主要有以下几种 : Simula67 支持单继承、一定含义上的多态和部分动态联编 Smalltalk 支持单继承、多态和动态联编 Eiffel 支持多继承、多态和动态联编 C+ 支持多继承、多态和部分动态联编 Java 提供了类机制,以及有效的接口模型。支持单继承、多态和动态联编,第 18 /54页,struct linkstrain linkstrain *next;long number;char name5; ; void creatlink

13、(linkstrain * ,class linkstrain public:linkstrain *next;long number;char name5; ; void creatlink(linkstrain * ,class linkstrain public:linkstrain *next;void creatlink(linkstrain * ,class linkstrain public:linkstrain *next;void creatlink(linkstrain * 错) ,第 19 /54页,C+中面向对象设计的有关概念 1 类和对象 在C+中声明一个“类”类型和

14、声明一个结构体类型相似,其语法形式如下:class 类名 private:私有的数据和成员函数;public:公有的数据和成员函数;protected:保护的数据和成员函数;,第 20 /54页,例如,下面是一个time类的简单定义:class Timeprivate:int hour;int minute;int second; / 私有数据public:Time();Time(int,int,int); / 构造函数void setTime(int, int, int);void printStandard(); /公有成员函数protected:int getHour(void);int

15、 getMinute(void);int getSecond(void); / 保护的成员函数;,第 21 /54页,private、public和protected称为成员访问说明符 public成员数据或函数可以在程序访问Time类对象的地方进行访问 private成员数据或函数仅仅能由类的成员函数访问 protected成员数据或函数可以被子类的成员函数访问,但不能被子类的对象访问 例如,定义两个Time类的对象:Time t1,t2 ;可以访问对象t1、t2中的setTime成员函数,如t1.setTime(9,35,45),但不能访问t1、t2中的私有和保护的数据或函数,如t1.ho

16、ur、t2.second都是错误的,第 22 /54页,2 构造函数和析构函数 构造函数是具有和类相同名称的一种特殊的成员函数。 这种函数与其它成员函数不同,不需要别的对象发消息来激活它,而是在创建对象时自动执行。 一些初始化成员数据的工作就经常由构造函数来完成 构造函数可以重载,以提供实现类对象的不同方法。 如前面的Time类,有一个不带参数的缺省构造函数和一个带参数的构造函数,可以如下定义:Time()hour=0;minute=0;second=0;Time(int a,int b,int c)hour=a;minute=b;second=c; 定义两个Time类型的对象并赋初值: Time t1; /对象t1在定义时调用了构造函数Time() Time t2(8,10,25); /对象t2在定义时调用了构造函数Time(8,10,25),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号