C语言与面向对象程序的设计说明

上传人:xmg****18 文档编号:117162070 上传时间:2019-11-18 格式:PPT 页数:47 大小:1.57MB
返回 下载 相关 举报
C语言与面向对象程序的设计说明_第1页
第1页 / 共47页
C语言与面向对象程序的设计说明_第2页
第2页 / 共47页
C语言与面向对象程序的设计说明_第3页
第3页 / 共47页
C语言与面向对象程序的设计说明_第4页
第4页 / 共47页
C语言与面向对象程序的设计说明_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《C语言与面向对象程序的设计说明》由会员分享,可在线阅读,更多相关《C语言与面向对象程序的设计说明(47页珍藏版)》请在金锄头文库上搜索。

1、C+语言 与 面向对象程序设计 贵州大学计算机科学系 课程安排课程安排 上课:上课:第第 1 181 18周周 星期三(单),五星期三(单),五 主讲教师:张永军主讲教师:张永军 上机:上机:第第 3 183 18周周 星期四星期四 ( (晚晚) ) 指导教师:张永军指导教师:张永军 课程(综合)设计课程(综合)设计根据课程安排)根据课程安排) 教学目标教学目标 s s 了解面向对象方法的基本概念了解面向对象方法的基本概念 s s 了解面向对象程序设计方法的基本思想和特了解面向对象程序设计方法的基本思想和特 点点 s s 能够利用面向对象技术,使用能够利用面向对象技术,使用 C+C+语言工具语

2、言工具 进行面向对象编程进行面向对象编程 C+语言与面向对象的设计 第1章 面向对象程序设计概论 1. 1 程序设计技术的发展 1.1.1 面向机器的语言 机器语言是硬件逻辑设计逻辑设计 所实现实现 的机器指令的集合, 也就是由硬件所能实现实现 的语义语义 序列集合。其表现现形式为为能被 机器直接接收的二进进制代码码序列。 汇编语言是机器语语言的直接符号映射。它用人类类能够够 理解的助记记符号来表示机器指令、寄存器、存储储器地址等物 理概念,以提高程序的可读读性。 早期的计算机应用以问题求解为主要目标, 算法的设计和实现是程序设计活动的焦点。注重追 求算法的效率,并不特别注意算法与数据结构的依

3、 赖关系,算法和数据处于相对独立的状态。 1.1.2 面向问题的语言 FORTRAN语言 引入了程序设计语言中程序控制 结构、符号命名机制等一些最重要的基本概念。例如:命 名子程序、变量作为存储单元的抽象以及数组的概念等。 随着编译技术的突破产生的高级语言用接近人 类习惯的自然语言或数学语言表达问题、编制程序。 高级语言通过引入一些抽象概念,屏蔽机器底层 的差异,使它独立于机器,不但有效地提高了程序设计 的效率,也带来了程序的可移植性。 由于算法总是以过程(子程序)的形式 出现,面向问题的程序也叫做过程化程序 设计。 模块化程序设计 FORTRAN语言还引入了独立编译的模块和 可重用子程序库的

4、概念,这种技术后来被称为模 块化程序设计。 模块化的思想是将应用程序划分若干个 规模适度的模块,每个模块独立命名、独立 编译,最后通过连接程序形成可招待的应用 程序。 模块化程序设计带来了以下一些重要概念: 模块内信息隐藏,一个模块中的变量可以与 其它模块中的变量同名而不至于产生混淆; 模块间通过全局环境共享数据; 模块间通过外部变量、公共变量实 现通信。 模块化程序设计倡导的这些概念被证明是程序组织和 管理有效的基本手段,在以后程序设计技术发展的各个阶段 得以延续和发展。 1.1.3 面向数据结构的程序设计 研究证明,仅用顺序,分支,循环三种 基本控制结构即能构造出任何单入口、单出口 的程序

5、块。 这些研究结果与模块化的概念相结合, 形成了采用自顶向下、逐步求精的设计步骤和 单入口单出口基本控制结构的结构化程序设计 方法。 Pascal语言和C语言都是结构化程序 设计语言。同时它们也是过程化程序设计 语言。 Pascal语言用过程来组织程序。 C语言用函数来组织程序。 过程(Procedure)和函数(Function)是子程序 (Subroutine)的两种具体形式。过程没有返回值。 函数函数有且只有一个返回值。 结构化程序设计的研究中有一个重要的结论, 表示为公式:程序=算法+数据结构,强调算法对数 据结构的依赖性,体现了一种数据结构为中心的观 念。 大多数结构化语言都具有定义

6、新的数据类型的 功能,如C语言中枚举(enum) 、结构(struct)类型等 。这有利于比较准确地描述待求解问题中的实体, 并保证数据的一致性。 数据库技术和数据库管理语言也体现了程序设 计以数据结构为中心的鲜明特色。 以数据结构为中心的蔽端: 整个程序中许多重要的过程和函数的实现依 赖于一个或几个关键数据结构,如果关键数据结构 中的一个或几个数据有所改变,则会波及到整个系 统,许多过程和函数必须重写。这是不利于程序的 维护和扩展的。 1.1.4 面向对象的程序设计 面向对象的程序设计方法继承了结构化、过程化、模块化等 方法的所有积极成分,创造性地引入了“对象”这一构建程序的 基本构件。 对

7、象是由数据结构和对 数据结构的操作或运算封装 而成的一个整体。 封装使得算法和数据结构的关系由算法对数 据结构单方面的依赖变成了相互依存的关系。 在面向对象的软件系统中,一个个不同类型的对象相互作 用,自底向上构建起整个程序系统。 它以 “对象= 数据结构+算法, 程序=对象+对象+对象” 取代了“程序=数据结构+算法”的传统程序设计模 式。因而引起了一场程序设计观念的革命。 面向对象方法采用数据抽象与隐 藏、层次结构体系,动态绑定等概念 和措施,提供一种模拟人类认知方式 的软件系统建模方法,带来了系统的 安全性、可扩充性、代码重用、易维 护等人们期待的特性。 OOPL的来源与发展 OOPL(

8、Object Oriented Programming Language 面向对象程序设计语言) 20世纪60年代, 由挪威计算中心Ole Dahl和Krysten Nygaard.主持开发的Simula 67 被公认为是面向对象语言 的先驱。 20世纪70年代,由美国国防部资助开发的Ada语言, 以它对抽象数据类型的支持,而在面向对象语言发展中占有 重要地位。 Simula 67 和Ada被看作是OOPL的两个直 接的“祖先”,一个引入“模拟”,一个引入“抽象” 。 20世纪70年代到80年代, 美国Xerox公司,Palo Alto 研究中心(PARC)的Alan Kay, Adale G

9、oldberg和Dan Ingans等人主持开发的Smalltalk语言正式使用了“面向对象” 这个术语。它的问世标志着面向对象程序设计方法的正式形 成。 1981年推出的Smalltalk-80是Smalltalk语言最完善的 版本。它是第一个能够实际应用的纯的面向对象语言。在 Smalltalk_80中类和对象不仅仅是语言成分,而且是交互式 程序设计环境的组成部分。 80年代中期,Simular 67、Smalltalk_80等语言的影响仅仅局限 在学术界。面向对象语言对计算平台的特殊要求使这些语言难于被软件 开发商和程序员接受。 贝尔实验室的Bjarne Stroustrup 及其研究小

10、组在当时 最受欢迎的C语言基础上开发的C+语言,引入了对面向 对象概念的支持。 C+语言以其与C语言兼容、高运行效率等优良特性 ,使面向对象程序设计技术受到软件工业界的广泛关注,使 之进入一个全面发展的时期。尽管C+只能算作一种混合式 面向对象语言。但是正是由于大量C程序员通过C+的帮助 才迅速掌握了面向对象的概念和方法,全面促进了面向对象 技术的应用,从而使C+成为最有影响的面向对象语言,甚 至许多人把C+当作面向对象的代名词。 面向对象技术的流行进一步促进了面向对象语言的繁荣。90年 代涌现出了一大批实用的面向对象语言,如Object Pascal、 Eiffel、Java等等。 Java

11、语言是由Sun Microsystem公司推出的一种纯面向对象 语言。Java从C+语言中继承了大量的语言成分,抛弃了C+语言中冗 余的和容易引起问题的功能,它将面向对象、平台无关性、稳定性、安 全性等集于一身,提供了一个良好的程序设计环境,因而成为适合于分 布式计算的程序设计语言。 Java语言于90年代中期的迅速流行与它定位于当时迅速发展的 Internet的WWW应用开发有关。展示了面向对象技术与分布式计算结 合的重大前景。 后面向对象时代的计算机语言 程序设计语言: C+, Java 脚本语言: Java Script , VBScript 标记语言: SGML, HTML, XML

12、样式语言: CSS, XSL 建模语言: UML 1. 2 面向对象的基本概念 1.2.1 面向对对象的目标标 建立一个既能在计算机系统中自然 地表示客观世界的问题、又能够超越程 序复杂性障碍的程序设计模型。 面向对象方法通过对客观世界和问题世界的直接模拟 ,建立较为准确、自然的程序设计模型,从而获得信息 处理的更高性能。 计算机世界 (程序空间) 主观世界 (问题空间) 客观世界 (真实空间) 图 1.1 客观世界、主观世界和计算机世界 从计算机软件设计的角度, 引入类和对象的概念,将客观世 界和主观世界中的实体和问题直 接映射到计算机世界的程序空间 。这就是面向对象方法的基本出 发点。 分

13、类:从大量相似的实体中归纳、抽象出相 同特征,为辨识新的个体形成参照模式。 对象和类的概念是面向对象技术中最重要 的概念。对象和类分别对应认识论中实体和 对实体的分类。 实体:客观世界或问题世界中可直接或间接 观察的个体。 物理实体:一本书,一辆汽车 观念实体:一笔帐,2008北京奥运会 抽象是对具体事物简化描述的过程,它强调了系统的某些主要特性面而忽略了其它特性。 一个分类至少应抽象出两个方面的特征,一是数 据特征,一是行为特征。 比如人类,有年龄、性别、身高、体重,健康状 态、所属工作单位等特征,这些特征可以用一些具体的 数值来描述,属于数据特征。数据特征又称属性或状 态,是区分不同个体的

14、依据。 人类还有行为特征,如吃饭、走路、学习、成长 等。行为特征是同一个类的所有个体共有的。 1.2.2 面向对对象语语言中的类类和对对象 在面向对对象语语言中通常以下面描述的方式来定义类义类 : 类类定义义: 类类名1 私有数据: 数据类类型1: 属性数据1; 数据类类型2: 属性数据2; 数据类类型3: 属性数据3; 公有方法: 方法(行为为)1; 方法(行为为)2; ; 类是一个形体定 义,它对一个数据特 性和方法特性的封装 体进行说明。类定义 中包含两类成员:数 据成员和方法成员。 类的定义为该类的对 象提供了创建的模式 。 根据已定义义的类类,可以按下述方式创创建对对象 : 类类名1

15、:对对象名1,对对象名2; 类类名2:对对象名3; 对象是类的实例。 对象是按照类提供的 模板进行的实体定义,它 将为对象在内存中分配实 际的存储空间。在程序中 对象间相互通信和作用, 共同完成程序功能。 类与对象的关系就是数 据类型和该类型变量的关系 。如: int x. y; float f1, f2; clock t1, t2; Complex c1, c2, c3; 数据类型是不同形式的信息在内存中分配方式的基 本约定,是构造程序的基础。 每种程序设计语言中都定义了自己的基本数据类型集合 和利用基本数据类型定义的扩展数据类型。 常量、变量甚至函数都有自己的数据类型。 C语言等结构化程序

16、设计语言还为用户提供了自定义数 据类型的手段。 从抽象数据类型的观点看类和对象 一个数据类型的定义包括一个值集和一个作用于该值 集的操作集。 如C语言中的int型(整型), 其值集为A= n| nN, -32768n+32767 , 其操作集是加、减、乘、整除、取模等等。 面向对象语言中的类是一种新的用户自定义数据类型 “类”类型。 类的所有数据成员形成类类型的值集,类的所有方法 成员形成类类型的操作集。 以这个观点来看,对象就是“类类型”的一个实例,通 常以变量的形式出现。 如果定义了一个类名为book的类,则创建book类的对 象b1, b2的语法形式: book b1, b2; 和声明基本数据类型变量的语法形式: int a, b; double x; 完全一样。可以像使用整型变量a、b,双精度型变量x一样使 用book型变量b1、b2。 类类型能像内部数据类型一样工作。区别在于程 序员定义的类是为了描述具体问题,模拟问题空间中的 对象。实际上,程序员通过增添自己所需要的新类对程 序设计语言本身进

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

当前位置:首页 > 大杂烩/其它

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