面向对象程序设计基本概念.ppt

上传人:za****8 文档编号:15661272 上传时间:2020-08-28 格式:PPT 页数:33 大小:320.34KB
收藏 版权申诉 举报 下载
面向对象程序设计基本概念.ppt_第1页
第1页 / 共33页
面向对象程序设计基本概念.ppt_第2页
第2页 / 共33页
面向对象程序设计基本概念.ppt_第3页
第3页 / 共33页
资源描述:

《面向对象程序设计基本概念.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计基本概念.ppt(33页珍藏版)》请在装配图网上搜索。

1、第1章 面向对象程序设计基本概念,面向对象语言和方法 类、对象和消息 面向对象程序设计特点 面向对象程序的结构,Data Structures,/ 结构中仅有数据成员 #include #include using namespace std; struct movies_t string title; int year; mine, yours; void printmovie(movies_t movie) cout yours.year; cout My favorite movie is:n ; printmovie(mine); cout And yours is:n ; print

2、movie(yours); return 0; ,/ 结构中既有数据成员,又有成员函数 #include #include using namespace std; struct movies_t string title; int year; void printmovie() cout yours.year; cout My favorite movie is:n ; mine.printmovie(); cout And yours is:n ; yours.printmovie(); return 0; ,1.1 面向对象语言和方法(1/7),六十年代末期Simula 67(面向对象语

3、言的鼻祖) 包含了类和继承的概念 类描述特性相同或相近的一组对象的结构和行为 继承将多个类组织成层次结构,实现数据和操作的共享,1.1 面向对象语言和方法(2/7),七十年代末八十年代初Smalltalk(第一个真正的集成开发环境) 包含类和继承,更严格的信息隐藏 带有一个巨大的、标准类库 第一个使用MVC(Model-View-Controller)模式开发交互式应用软件,1.1 面向对象语言和方法(3/7),1.1 面向对象语言和方法(4/7),Smalltalk使面向对象方法为人们注目 面向对象语言被分为两大阵营 纯粹的面向对象语言:Smalltalk、Eiffel、Java 混合型面向

4、对象语言:C+和CLOS 基于对象的语言:Ada支持数据抽象类型(包)、函数和运算符重载、多态性,但不支持继承,1.1 面向对象语言和方法(5/7),结构化程序设计 软件的结构化分析、设计方法 工程化的概念的方法 但无法很好地支持越来越复杂、庞大的系统需求 面向对象方法 直接将问题的求解映射到问题本身上 有目的地将系统分解为模块 将问题分解为一系列的实体(对象) 方便设计,可维护性、可扩充性好,1.1 面向对象语言和方法(6/7),简单的例子图书馆管理系统 包含reader(读者)对象、librarian(图书管理员)对象、bookshelf(书架)对象等 所有的操作由各对象协作完成 借书 r

5、eader对象向librarian对象提出借书请求 librarian对象向bookshelf对象提出查书和取书请求 然后逐步响应,逐步返回,共同完成借书操作,1.1 面向对象语言和方法(7/7),面向对象方法的一些特性 程序设计的重点在数据而不是函数 程序由对象组成 对象之间通过相互协作来完成功能 大多数对象的定义以数据为中心 函数与相关的数据紧密结合 数据可以被隐藏 很容易扩充新的数据和函数,1.2 类、对象和消息(1/10),面向对象程序设计的一般步骤 分析实际问题,分辨并抽取其中的类和对象 设计相应的类,并根据这些类创建各种对象 协调这些对象完成程序功能(消息),1.2 类、对象和消息

6、(2/10),万物皆对象 每个学生、每个班级、每个学校、每个国家、每棵树、每本书、每部汽车具体的实体 “张三”、“李四”都是对象,但“人”不是 “人”不是具体的实体,是类,是抽象概念 类是某些对象共同特征的表示 类是创建对象的模板,对象是类的实例,1.2 类、对象和消息(3/10),如何区分类和对象以“人”和“张三”为例 “人”描述了所有人(包括“张三” )都具有的属性和行为,如有姓名、身高、体重,有鼻子、眼睛、四肢,能交流、能思维等等 类(“人”)描述的概念是抽象的 “人”的姓名是什么? “人”的身高是什么? 对象(“张三”)是具体的 “张三”的姓名是“张三” “张三”的身高是185CM,1

7、.2 类、对象和消息(4/10),类和对象的例子 教室1310教室 国家中国 学校东华大学 ,例子:读者类Reader,class Reader public: Reader(); /构造函数 int registration(char *name);/注册 int borrowBook(int bookNo);/借书 int returnBook(int bookNo);/还书 private: char *name;/姓名 char *certifNo;/借书证号 ;,struct Reader int registration(char *name);/注册 int borrowBook

8、(int bookNo);/借书 int returnBook(int bookNo);/还书 char *name;/姓名 char *certifNo;/借书证号 ;,1.2 类、对象和消息(5/10),格式说明 类的定义以关键字class开头 class后面是类名(Reader) 类名后面花括号扩起来的部分是类体 类的定义以分号结尾,1.2 类、对象和消息(6/10),内容说明 类的定义可以包含数据和函数 关键字public后面定义了类的公有成员 类Reader有四个公有成员函数:Reader、registration(注册)、borrowBook(借书)和returnBook(还书)

9、关键字private后面定义的是类的私有成员 类Reader包含两个私有数据成员,姓名(name)和借书证号(certifNo) 数据成员和成员函数都可以是私有的或公有的,1.2 类、对象和消息(7/10),类是一种新的自定义类型,可以用该类型来声明变量、指针、数组等 对象各自拥有自己的数据空间,互不干扰 Reader zhang;/声明Reader类的对象zhang Reader reader1000;/声明Reader类的数组 Reader *rptr = /声明Reader类型的引用,1.2 类、对象和消息(8/10),对象可以响应消息 对象zhang可以响应registration(注

10、册)、borrowBook(借书)和returnBook(还书)三种消息 要对象zhang借书可以向对象zhang发borrowBook消息 对象zhang则通过执行成员borrowBook来响应消息,1.2 类、对象和消息(9/10),C+将“向对象发消息”处理成“调用对象的某个成员函数” 调用对象zhang的成员函数borrowBook zhang.borrowBook(12); rptborrowBook(12); ref.borrowBook(12);,1.2 类、对象和消息(10/10),消息机制的特性 同一对象可以接收不同的消息,并有不同的响应。如对象zhang可接收注册、借书、还

11、书三种消息 给不同对象发送同一消息会产生不同的效果。 对消息的响应不是必须的。对象可以响应消息,也可以忽略某些消息 对象之间是平等的,每个对象都可以向其它对象发消息,让其为自己服务,1.3 面向对象程序设计特点(1/5),抽象和封装 抽象提取和表现事物的核心特性,不描述背景细节 类的定义是对实体的抽象和描述(定义类Reader时,要描述哪些特性?) 封装把数据及与数据相关的操作组织在一个单独的程序单元(对象)中 结构清晰,对象之间的独立性好,接口关系简单,可扩充性和可维护性好,1.3 面向对象程序设计特点(2/5),数据隐藏和访问机制 对象对内部数据提供了不同级别的保护 对象私有的代码和数据不

12、能被外界直接访问 外界只能通过公有成员函数和对象交互 有效地保护数据,提高程序的可维护性,1.3 面向对象程序设计特点(3/5),继承 继承允许从现有的类(基类)建立新类(派生类) 派生类继承了基类的属性和行为 派生类可以修改和扩充这些属性和行为 派生类可以增加新的数据成员和函数成员 派生类对象被认为是基类的对象方便统一管理 提高软件开发的效率和软件质量,1.3 面向对象程序设计特点(4/5),多态性 程序设计中很多类可以通过继承的关系构成树形结构 多态性使程序员可以通过统一的接口操纵这些类的对象 对于同一条函数调用语句不同的对象会执行不同的操作,多态性示例,1.3 面向对象程序设计特点(5/

13、5),面向对象技术的优点 易于建模 易于维护 可扩展性好 代码重用,1.4 面向对象程序的结构,面向对象程序设计的任务 设计类 以类为模板创建不同的对象 协调这些对象共同工作 面向对象程序仍然需要一个入口:main函数,例子1:编写一个雇员类Employee并测试它(1/3),#include #include using namespace std; class Employee public: Employee(string n) /构造函数 name = n; ,例子1:编写一个雇员类Employee并测试它(2/3),void setSalary(double s) salary =

14、s; void printSalary() coutMy salary is $salary!endl; void whoAreYou() coutendlMy name is name.n; private: string name; double salary; ;,例子1:编写一个雇员类Employee并测试它(3/3),int main() /声明类Employee的对象a和b Employee a(Zhang Shan), b(Li Si); a.setSalary(123.4); /给对象a发消息setSalary b.setSalary(156.7); /给对象b发消息setSa

15、lary a.whoAreYou(); /给对象a发消息whoAreYou a.printSalary(); /给对象a发消息printSalary b.whoAreYou(); /给对象b发消息whoAreYou b.printSalary(); /给对象b发消息printSalary return 0; ,程序执行结果:,My name is Zhang Shan. My salary is $123.4! My name is Li Si. My salary is $156.7!,学习目的检测,了解面向对象程序设计方法相对于结构化程序设计方法的优点 了解面向对象语言的特点 掌握类、对象和消息在面向对象程序设计中的作用 了解面向对象程序设计的结构,作业,编写一个名为Person的类,表示人的名字和地址。使用string来保存每个元素。为Person类提供一个接受两个string参数的构造函数,并提供返回名字和地址的函数。指明Person的哪个成员应声明为public,哪个成员应声明为private。解释你的选择。编写一个驱动程序来测试Person类。 编写正方形类Square,类中有数据成员边长(double)、接受一个double参数的构造函数,并提供返回边长、周长和面积的函数。 uva465、446、389、355、343、378,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!