面向对象的程序设计概述.ppt_第1页
面向对象的程序设计概述.ppt_第2页
面向对象的程序设计概述.ppt_第3页
面向对象的程序设计概述.ppt_第4页
面向对象的程序设计概述.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

湖南文理学院计算机学院,C+程序设计语言,孙叶枫,1,第一章,面向对象的程序设计概述,在面向过程的程序设计中,程序是处理数据的一系列过程。过程(或函数)定义为实现特定功能的一组指令。 其主要设计思想是功能分解并逐步求精。数据与程序过程分开存储,编程的主要技巧在于关注模块之间的调用关系及数据的变化。,1.1 什么是面向对象程序设计,1.1.1 面向过程程序设计概念,1、当数据量增大时,数据与处理这些数据的方法之间的分离使程序变得越来越难以理解。 2、相对于老问题的新方法都要带来额外的开销,程序的可重用性小。,面向过程程序设计的主要缺点,面向对象的程序设计的主要特征: 程序 对象 + 消息,1.1.2 面向对象程序设计概念,特点:1)程序由类的定义和类的使用组成 2)对程序的操作是通过向对象发送 消息来实现 3) 类由继承关系产生联系,说明:C+ 既是面向过程的程序设计语言, 也是面向对象的的程序设计语言,面向对象程序设计 OOP (Object-Oriented Programming)的基本特征: 主要特征:对象、类、封装、继承、多态性,1.2 对象与类,1、对象 ( object ),实体对象:一台计算机,抽象对象:一项计划,什么是对象: 用来描述客观事物的一个实 体,它是构成系统的一个基本单元。一个对象由一组属性和服务(行为)组成。,1.2.1 对象与类的概念,对象构成要素: 1.对象标识符(对象名) 2.属性 3.服务,属性: 是用来描述对象静态特征的 一个数据项。,服务: 是用来描述对象动态特征和行 为的一个操作。,标识符:是对象的名称,用来区别与 其他对象。,对象名,属性,服务,学号、姓名、专业、性别、 年龄、身份证号、电话等等,获取和修改学号、姓名、 专业、性别、年龄等等,( 表一 ),例题 1:考虑对象 “学生”,具体描述为:,学生,2. 区别 : 三者的区别,注意点: 1. 一体性 : 三者成为一体,例题 2:对象 “课程” 的有关抽象描述。,对象名,属性,服务,课程,课程名、编号、学时数、选课要求、任课教师等,获取并修改课程名、编号、学时数、选课要求、任课教师等,(表二 ),注意点: 1. 属性是对对象的静态描述. 2. 服务是对对象的动态描述. 外部是通过调用服务与对 象取得联系.,同一对象可以接收 不同信息,做出不同响应 相同的消息可传递给不同对象,可做出不年个响应 对象可以响应消息,也可以不响应,2、对象的交互,对象之间的联系称为对象的交互,消息:一个对象向另一个对象发出的请求 方法:定义一系列的计算步骤,消息的性质:,消息的分类:公有消息和私有消息,什么是类: 是具有相同属性和服务的集合, 它提供对对象的抽象描述,3、类 ( class )的确定与分类,类与对象的关系: 类 对象 抽象定义 实例 例题3: 模具 由模具压出的工件 学生 学生王强 模板 应用模板产生的文件 类型 变量, 如 C 语言中的 int 和 int x;,类的分类: 抽象类, 基类(父类), 派生类(子类), 等等,基 类: 运用抽象原则,舍弃对象的特殊性,提取对象的共同性,得到的一个对象集的类.,派生类: 在基类的基础上,再考虑在抽象过程中被舍弃的对象的特殊性,而产生的新类.,例题4:若考虑类“学生”,则类“大学生” 和“中学生”就是它的派生类。类 “学生”是它们的基类。,基类与派生类的关系,:,派生类具有基类的全部特征。 派生类有自己的特征,不完全等于基类。 它们有继承关系,派生类是基类 的子集。,分类的目的和意义,:,对现实世界的实体进行分类,便于应用OOP。 直观地,正确地,有层次地表达现实世界。,例如,基类“学生”和派生类“大学生” 的关系。,车 辆,客车,卡车,轿车,面包车,机 动 车,越野车,普通车,大客车,非机动车,图一:车辆类层次图,考虑运输工具这个实体,它包含了车辆,车辆又包含机动车和非机动车,机动车又包含轿车和卡车等等。如果建一基类“机动车”,则“轿车”和“卡车”就是“机动车”的派生类,而“车辆”可以是基类“机动车”的基类。即基类可以有基类,派生类可以有派生类。,例题5:,1.3 数据的抽象与封装,什么是封装,:,把对象的属性和服务结合成一个独立的单元,并尽可能荫蔽对象的内部细节。,仓库,属性,服务,价格表,物品, 帐单,电话, 等等,提供物品, 帐单等等,(图二),例6:,抽象,考虑一个仓库,外部只能通过管理员获取物品。,什么是抽象:,通过特定例子抽取共同性质后形成概念的过程,封装的特点:,一个清楚的边界。 所有对象的成分都在这个边界内。 2. 一个接口。 外部通过这个接口访问对象的内部成员。,需要更多的输入输出函数。,封装的优点:,1. 数据独立 (如每件事 物都对应于一对象) 2.具有隐藏性和安全性(如银行的帐户) 3.易于维护(由于数据独立,易于发现问题),封装的缺点:,1.4 继承性(inheritance),特殊类具有普通类的所有特性和服务 是类之间的一种关系 是OOP 的要点之一,什么是继承:,继承的特点:,设 A 为基类, B 为派生类。 1. 共享性: 派生类具有基类所有特征, 即:A B 2. 区别性: 派生类不等于基类,即 AB 3. 层次性: 表示了类之间的关系,例7:车辆的继承关系,车辆,非机动车,客车,卡车,轿车,机动车,例8:人类按职业划分的一种继承关系,人,学生,工人,教师,农民,中学生,大学生,研究生,讲师,教授,继承的优点:,1. 减少原代码, 即代码可重用。 2. 代码的相互独立性。 3. 易于维护。 4. 体现自然界之间 的关系。,例如:在学籍管理系统中,学生类(基类) 计算成绩的操作,中学生类(派生类) 计算成绩的操作,大学生类(派生类) 计算成绩的操作,1.5 多态性(polymorphism),什么是多态性:对不同的消息表现出不同的行为,又如:在绘图系统中使用的多态性。 函数重载和运算符重载表现了最简单的多态性。 函数重载: Void f(int,int,char); Void f(char,float); Void f(int,int); Void f(int,float); 运算符重载: 为运算符+ - * / 等赋以新的含义,以 实现类对象的运算。,1.6 程序开发过程,例1: /* /* ch1.1.cpp * /* # include void main( ) cout “I am a student.n”; ,1.7 最简单的程序,运行结果为: I am a student.,例 2: /* ch1.2.cpp * #include void main( ) int a,b,result; cout a b; result=3*a-2*b+1; cout “Result is ” resultendl; ,C+程序是由函数构成的,由一个主函数和若干个函数构成。 C+程序是函数驱动的。 例3: /*ch1.3.cpp* #include #include double max(doubl x, doubl y); void main( ) double a, b, c; cout ab; c=max(a,b);, 1.8 函 数,double max(do

温馨提示

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

评论

0/150

提交评论