程序设计与C程序设计初步.ppt_第1页
程序设计与C程序设计初步.ppt_第2页
程序设计与C程序设计初步.ppt_第3页
程序设计与C程序设计初步.ppt_第4页
程序设计与C程序设计初步.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计基础 主讲人:胡 青 第一章 程序设计与C+程序设计初步 1.1 计算机程序 1.1.1 算法 定义: 用来解决问题的有多个步骤组成的具体过程。 (p4 例1.1.1 求解最大公约数的欧几里德算法) 基本特征: 由一些能够执行的操作组成 可以具有多个输入和输出 算法对于任何输入都应该是可终止的 算法的主要操作对象是数据 1.1.2 实体 许多行为也可以用算法来表示。 例: 银行账户存款(输入、输出、步骤) 例:银行账户取款(输入、输出、步骤) 发现:存款、取款行为所用数据均包含账户当前余额, 存款与取款行为是密切相关的。 银行账户(包括账号、户名、密码、余额等状态) 可完成存款、取款行为 实体 第一章 程序设计与C+程序设计初步 通常一个实体应具有一个名字、一组表示该实体特征 的数据以及若干作用在这些数据上的行为。实体具有数据 表示了他的状态,而这些状态可有他的行为来改变。 从行为出发来把握事物。(C) 从实体出发把握事物 。(C+) 我们通过观察与分析事物表现出来的行为来探讨事物 的内在结构,掌握了事物的内在结构又可用来解释或预测 事物的行为。 在处理大型问题时,从实体比从行为出发更容易把握 问题的复杂性。 第一章 程序设计与C+程序设计初步 113 程序 有了实体,如何用计算机解决问题? 程序即是实体在计算机中的体现。 1、数据在计算机内部的表示(通过二进制编码表示) 2、程序在计算机内部的表示(无论何种计算机,各有一套基 本指令系统,其中每条指令都是由二进制编码表示。) 机器语言 汇编语言 (二进制编码表示) 宏汇编语言(引入宏) 机器语言 高级语言(与机器无关) 第一章 程序设计与C+程序设计初步 汇编程序 宏汇编程序 编译程序,解释程序 114 程序设计 程序设计是编写计算机程序的活动。 完成程序设计工作必须具备四方面的知识: 一是应用领域的知识;二是程序设计方法; 三是程序设计语言;四是程序设计环境与工具。 方法:自顶向下 自底向上 设计语言 实体 程序 设计环境与工具 (类库 函数库) 第一章 程序设计与C+程序设计初步 两者结合 12程序设计的演变 121 早期程序设计 语言有: FORTRAN (FORmula TRANslator)1954-1957 IBM公司开发 科学计算工程领域 COBOL(Common Business Oriented Language) 1959 商业事物处理 ALGOL(算法语言) Basic (无固定程序设计方法时期) 第一章 程序设计与C+程序设计初步 122结构化程序设计 主要技术: 自顶向下、逐步求精、采用单入口/单出口的控制结构 只用三种基本控制结构(顺序、选择、循环) Pascal (人名命名,17世纪法国数学家Blaise Pascal) 教育界、学术界 C (1972 贝尔实验室 DEC PDP11计算机上实现) 为描述和实现UNIX操作系统提供一种工作语言 七十年代末“传统C”、“经典C” 第一章 程序设计与C+程序设计初步 123面向对象程序设计 面向对象程序设计建立在结构化程序设计基础上, 最重要的改变是程序围绕被操作的数据来设计,而不是 围绕操作本身。从程序设计方法的角度看,面向对象是 一种新的程序设计范型,其基本思想是使用对象、类、 继承、封装、聚合、关联、消息、多态性等基本概念来 进行程序设计。 第一章 程序设计与C+程序设计初步 其基本思想是: 从现实世界中客观存在的事物出发来建立软件系统 强调直接以问题域(现实世界)中的事物为中心来 思考问题、认识问题,并根据这些事物的本质特征,把 它们抽象地表为系统中的对象,作为系统的基本构成单 位。这可以使系统直接映射问题域,保持问题域中事物 及其相互关系的本来面貌。 充分运用人类日常的思维方法 强调运用人类在日常的逻辑思维中经常采用的思想 方法与原则,例如抽象、分类、继承、聚合、封装、关 联等等。这使得软件开发者能更有效地思考问题,并以 其他人也能看得懂的方式把自己的认识表达出来。 第一章 程序设计与C+程序设计初步 对问题域的认识(人) 客观世界 (问题域) 计算机 自然语言 语 言 的 鸿 沟 编程语言 语言的过渡(人) 编程(人) 程序的理解 和执行(机器) 软件开发实际上是从问题空间向解空间映射的过程。 从认识论看面向对象语言的形成 第一章 程序设计与C+程序设计初步 计算机 机器语言 自然语言 客观世界 (问题域) 语言的鸿沟 语言的发展鸿沟变窄 面向对象的语言 非OO的高级语言 汇编语言 程序的指令、数据 、地址,都是由二 进制的“0”和 “1”构成的。离 机器最近,能够直 接地执行,然而没 有丝毫形象的意义 ,离人类的思维最 远。 以易理解的符号表 示指令、数据以及 寄存器、地址等物 理概念。稍稍适合 人类的形象思维, 但仍然相差很远。 因为抽象层次太低 ,仍需考虑大量的 机器细节。 高级语言隐蔽了机 器细节,使用有形 象意义的数据命名 和表达式,可以联 系到程序所描述的 具体事物。特别是 结构化编程语言更 便于体现客观事物 的结构和逻辑涵义 ,与人类的自然语 言更接近,但仍有 不少差距。 能比较直接地反映客观 世界的本来面目,并使 软件开发人员能够运用 人类认识事物所采用的 一般思维方法来进行软 件开发。 第一章 程序设计与C+程序设计初步 13 C+语言的程序结构 131C+语言程序的组成 一个程序是实体的属性及行为在计算机中的表示,C+ 中用类(CLASS)来描述实体。类描述的是一群实体的共 同结构,即这群实体都具有的属性和行为。 对象 单个实体 例银行帐户的共同结构在C+中用类来描述,张三帐户 、李四帐户则是属于此类的二个对象,它们的户名,当前 余额等属性值各不相同。 又如:学生档案(类) 张三档案、李四档案(对象) 第一章 程序设计与C+程序设计初步 C+语言中有个特殊的函数称为主函数,每一个程序 都从主函数开始执行,由主函数去激活一个对象的行为,通 过这个对象的行为,又去激活其他对象的行为,众多对象共 同协作,完成某一任务。 132 C+程序的基本结构 为显现程序的逻辑结构,段与段、句子与句子之间的空 格、制表符、空行起分隔作用,但C+中大小写严格区分。 / 为注释符号 C+程序=主函数,若干类 例: 一个完整的C+语言程序 第一章 程序设计与C+程序设计初步 #include using namespace std; class ACCOUNT float balance; public: ACCOUNT (float amount) balance=amount; void deposit (float amount) balance=balance+amount; 第一章 程序设计与C+程序设计初步 int withdraw (float amount) if(amountbalance) return 0; else balance=balance-amount; return 1; float get_balance( ) return balance; ; 第一章 程序设计与C+程序设计初步 main( ) ACCOUNT acc1(500); ACCOUNT acc2(1500); acc1.deposit(255.5); acc2.deposit(500); acc2.withdraw(700); acc1.withdraw(700); acc2.withdraw(350); cout“帐号1的余额还有”acc1.get_balance( )“元n”; cout“帐号2的余额还有”acc2.get_balance( )“元n”; return 1; 第一章 程序设计与C+程序设计初步 133C+语言程序的退化结构 1、仅有函数没有类退化相当于C语言编写 2、仅有类没有函数退化为C+程序库,供编写其 他程序时重用。 C+混合型面向对象语言,因为C+语言除了类 还可以包括游离于类之外的其它函数。Eiffel , Smalltalk 程序仅由类构成,称为纯面向对象语言。 第一章 程序设计与C+程序设计初步 14 C+语言程序的运行环境 不同的C+语言开发环境中,完成以上过程的具体操 作方式会有较大差异。 源代码目标代码 可执行代码 编译程序 链接程序 源代码目标代码 编译程序 库 第一章 程序设计与C+程序设计初步 15 面向对象程序设计过程 建模 模拟 实体概念 现象 类 对象 具体 抽象 参照系统面向对象程序 第一章 程序设计与C+程序设计初步 对象,类 属性,服务(操作) 封装 继承,一般-特殊结构, 聚合,整体-部分结构 消息 多态 面向对象的基本概念 对象标识就是对象的名字,有“ 外部标识”和“内部标识”之分 。 对象是现实世界中某 个实际存在的事物, 它可以是有形的(比 如一辆汽车),也可 以是无形的(比如一 项计划)。 对象是构成世界的一 个独立单位。它具有 自己的静态特征和动 态特征。 对象是系统中用 来描述客观事物 的一个实体,它 是构成系统的一 个基本单位。一 个对象由一组属 性和对这组属性 进行操作的一组 服务构成。 对象 属性 服务 对象标识 属性是用来描述对象静态特征的 一个数据项。 服务是用来描述对象动态特征 的一个操作序列。 对象,属性,服务,对象标识 抽象与分类:忽 略事物的非本质 特征,只注意那 些与当前目标有 关的本质特征, 从而找出事物的 共性,叫做抽象 ;把具有共同性 质的事物划分为 一类,得出一个 抽象的概念,叫 做分类。 类是具有相同属性和服务的一组对象的集合, 它为属于该类的全部对象提供了统一的抽象描 述,包括属性和服务两个主要部分。类的作用 是用来创建对象,对象是类的一个实例。 不同程度的抽象可得到不同层次的分类 较多地忽 略事物之 间的差别 得到较一 般的类 较多地注 意事物之 间的差别 得到较特 殊的类 运输工具 火车汽车 飞机 卡车轿车 轮船车辆 类,一般类,特殊类,抽象 特殊类 一般类的特征 一般类 特殊类的特征 只要有这些特征 必须有这些特征 对象实例集合 特征集合 理解一 般类与 特殊类 之间的 关系 如果类A具有类B的全部属性和全部服务,而且具有自己特有 的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。 换种说法,如果类A的全部对象都是类B的对象,而且类B中存 在不属于类A的对象,则A是B的特殊类,B是A的一般类。 以上两种定义是等价的 一般类和特殊类的定义 特殊类拥有其一般类的全部属性与服务,称作特殊类 对一般类的继承。 继承意味着自动地拥有,或曰隐含地复制 继承简化了 人们对事物 的认识和描 述,非常有 益于软件复 用,是OO技 术提高软件 开发效率的 重要原因之 一。 公司人员 姓名 身份证号码 股东 股份 职员 工资 例: 由继承机 制保证 由一组具有继承 关系的类所组成 的结构称作一般 -特殊结构。它 是一个以类为结 点,以继承关系 为边的连通的有 向图。 继承关系的语义:“is a kind of” 继承 允许一个特殊类具有一个以上一般类的继承模式称作多继承。 多继承特殊类 的内部情况 在职研究生 姓名 学号 班级 专业 职称 专业 在职单位 来自“人员”类 来自“研究生”类 来自“教职工”类 本类中显示定义 人员 姓名 教职工 职称 专业 研究生 学号 班级 专业 在职研究生 在职单位 例: 多继承 把对象的属性和服务结合成一个独立的系统单位, 并尽可能隐蔽对象的内部细节。 售报亭售报亭 属 性 服 务 报刊A 报刊B 钱箱 报刊零售 款货清点 顾 客 封装的作用: 使对象能够集中而完整地描述并对应一个具体的事物。 体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据 ,避免了外部错误对它的“交插感染”。 对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应” 。 封装 消息是向对象发出的服务请求。 目前在大部分面向对象的编程语言中,消息其实就是函 数(或过程)调用。 在语法上,一条消息应包括 消息名、入口参数和返回参数; 在语义上,一条消息应包括 发送者、接收者和其它需传送的信息。 但是,函数调用只是实现消息的方式之一,上述理解只适 合于顺序系统 消息 一个(较复杂的)对象由其他若干(较简单的)对象作为其构成 部分,称作聚合。 聚合刻画了现实事物之间的构成关系 两种方式:(前一种方式又称包含) 部 分 对 象 部 分 对 象 整体对象 嵌套对象 整 体 对 象部 分 对 象 部 分 对 象 整 体 对 象 对象指针或对象标识 描述紧密、 固定的关系 ,例如汽车 与发动机 描述松散、 灵活的关系 ,例如公司 与法律顾问 聚合 由一组具有聚合 关系的类所形成 的结构称作整体 -部分结构。 聚合关系又称整体-部分关系,它是对象实例之间的一种关系。 这种关系的语义是“has a”或“is a part of” 例: 汽 车 发动机 14,6 0,10,1 车 轮 公 司 0,m 0,m 法律顾问 整体部分关系 多态是指同一个命名可具有不同的语义。OO方法中,常指在 一般

温馨提示

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

最新文档

评论

0/150

提交评论