《面向对象程序设计》课件第1章绪论.pptx
《《面向对象程序设计》课件第1章绪论.pptx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课件第1章绪论.pptx(31页珍藏版)》请在文库网上搜索。
1、参考书参考书参考书参考书 新标准新标准C+C+程序设计程序设计 郭炜郭炜 高等教育出版社高等教育出版社 THE C+PROGRAMMING LANGUAGETHE C+PROGRAMMING LANGUAGE (Special Edition)(Special Edition)Bjarne Stroustrup Bjarne Stroustrup 高等教育出版社高等教育出版社 课时安排课时安排课时安排课时安排 授课:授课:授课:授课:3232学时学时学时学时 上机上机上机上机:16161616学时学时学时学时 教材、参考书与课时安排本门课程的学习内容u 第1章 绪论(2学时)u 第2章 C+语
2、言对C语言的扩充(4学时)u 第3章 类和对象(6学时)u 第4章 友元(2学时)u 第5章 继承与派生(6学时)u 第6章 多态性和虚函数(6学时)u 第7章 C+语言的输入输出流库(2学时)u 第8章 异常处理(2学时)第第第第1 1章章章章 绪绪绪绪 论论论论 1.11.1 面向对象方法的起源面向对象方法的起源 1.21.2 从面向过程从面向过程 转向面向对象转向面向对象 1.31.3 面向对象的基本概念面向对象的基本概念1.41.4 面向对象系统的特性面向对象系统的特性1.51.5 面向对象程序设计举例面向对象程序设计举例机机机机器器器器语语语语言言言言汇汇汇汇编编编编语语语语言言言言
3、高高高高级级级级语语语语言言言言面向过程面向过程面向过程面向过程面向对象面向对象面向对象面向对象CPU指令系统,由指令系统,由0、1序列构成的指令码组成序列构成的指令码组成如:如:10000000 加加 10010000 减减用助记符号描述的指令系统用助记符号描述的指令系统如如 ADD A,B面向机器的语言面向机器的语言1.1 1.1 面向对象方法的起源面向对象方法的起源机机机机器器器器语语语语言言言言汇汇汇汇编编编编语语语语言言言言高高高高级级级级语语语语言言言言面向过程面向过程面向过程面向过程面向对象面向对象面向对象面向对象程序设计是数据被加工的过程程序设计是数据被加工的过程客观世界可以分
4、类,对象是类的实例客观世界可以分类,对象是类的实例对象是数据和方法的封装对象是数据和方法的封装对象间通过发送和接受消息发生联系对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象程序设计关键是定义类,并由类派生对象1.1 1.1 面向对象方法的起源面向对象方法的起源1 1、5050年代的程序都是用指令代码或汇编语言编写的年代的程序都是用指令代码或汇编语言编写的,60,60年代高级语言的出现大大简化了程序设计,缩短了软件开年代高级语言的出现大大简化了程序设计,缩短了软件开发周期。发周期。2 2、自、自6060年代末到年代末到7070年代初,出现了大型软件系统,如操年代初,出现了大
5、型软件系统,如操作系统、数据库,这给程序设计带来了新的问题。可靠性作系统、数据库,这给程序设计带来了新的问题。可靠性差,错误多,且不易维护和修改差,错误多,且不易维护和修改-软件危机软件危机软件危机软件危机。3 3、为了克服为了克服60年代出现的软件危机,年代出现的软件危机,1968年北约组织年北约组织提出提出“软件工程软件工程”的概念。对程序设计语言的认识从强调的概念。对程序设计语言的认识从强调表达能力为重点转向以结构化和简明性为重点,将程序从表达能力为重点转向以结构化和简明性为重点,将程序从语句序列转向相互作用的模块集合。语句序列转向相互作用的模块集合。1969年,年,E.W.Dijkst
6、ra首先提出了首先提出了结构化程序设计结构化程序设计的概念。的概念。4 4、经过几年的探索和实践,结构化程序设计的应用确实、经过几年的探索和实践,结构化程序设计的应用确实取得了成效,用该方法编写出来的程序不仅结构良好,且取得了成效,用该方法编写出来的程序不仅结构良好,且显著地减少软件的复杂性,提高软件的可靠性、可测试性显著地减少软件的复杂性,提高软件的可靠性、可测试性和可维护性。和可维护性。5 5、进入、进入8080年代,由于一系列高技术的研究,如计算机辅年代,由于一系列高技术的研究,如计算机辅助制造助制造CAMCAM和知识工程等领域的研究都迫切要求大型的软件和知识工程等领域的研究都迫切要求大
7、型的软件系统作为支撑。他们所用的数据类型也超出了常规的结构系统作为支撑。他们所用的数据类型也超出了常规的结构化数据类型的范畴,提出对图像、声音、规则等化数据类型的范畴,提出对图像、声音、规则等非结构化非结构化数据数据的管理。迫切要求软件模块具有更强的的管理。迫切要求软件模块具有更强的独立自治性独立自治性,以便于大型软件的管理、维护和重用。由于结构化语言的以便于大型软件的管理、维护和重用。由于结构化语言的数据类型较为简单,所以不能胜任对非结构化数据的定义数据类型较为简单,所以不能胜任对非结构化数据的定义与管理,采用过程调用机制使模块的独立性较差。与管理,采用过程调用机制使模块的独立性较差。6 6
8、、自、自8080年代以来,出现了年代以来,出现了面向对象面向对象程序设计流派,研制程序设计流派,研制出了多种面向对象程序设计语言(简称为出了多种面向对象程序设计语言(简称为OOPLOOPLOOPLOOPL:Object Object Oriented Programming LanguageOriented Programming Language),如),如AdaAda、SmalltalkSmalltalk、C+C+和当前使用在和当前使用在InternetInternet上的平台无关语言上的平台无关语言JavaJava等。等。7 7、由于、由于OOPLOOPL的的对象对象、类类具有高度的抽象
9、性,所以它能很具有高度的抽象性,所以它能很好地表达任何复杂的数据类型,也允许程序员灵活地定义自好地表达任何复杂的数据类型,也允许程序员灵活地定义自己所需要的数据类型。类本身具有很完整的己所需要的数据类型。类本身具有很完整的封装性封装性,满足模,满足模块独立自治的需求。再加上块独立自治的需求。再加上继承性继承性和和多态性多态性,增强了,增强了模块的可重用性,提高了软件的可靠性,缩短了模块的可重用性,提高了软件的可靠性,缩短了软件的开发周期。软件的开发周期。1.2 1.2 从从 面向过程面向过程 转向转向 面向对象面向对象 建立一个软件开发的全新的思维方式建立一个软件开发的全新的思维方式数据输入数
10、据输入数据输出数据输出函数或过程函数或过程特点特点:数据和过程相分离数据和过程相分离函数或过程函数或过程1.因为数据与过程分开,因此数据很容易在其作用域之因为数据与过程分开,因此数据很容易在其作用域之外被修改。这表明对数据的访问是不受控制且不可预知。外被修改。这表明对数据的访问是不受控制且不可预知。void A(String s);/pass by valuevoid B(String&s);/pass by referancevoid C(String*s);/pass by pointer2.因为数据与过程分开,因此编写过程时必须要考虑所因为数据与过程分开,因此编写过程时必须要考虑所要处理
11、的数据格式。这表明代码的可重用性不好。要处理的数据格式。这表明代码的可重用性不好。abs(i)/an int expression ifabs(x)/a floating-point expression x3.因为不能设置数据的可访问权限,增加了大型程序因为不能设置数据的可访问权限,增加了大型程序的复杂性。因此测试和调试更加困难。的复杂性。因此测试和调试更加困难。特点特点:数据和过程相分离数据和过程相分离例例例例1.2 1.2 从从 面向过程面向过程 转向转向 面向对象面向对象 面向对象程序设计将数据面向对象程序设计将数据及其操作放在一起,作为一及其操作放在一起,作为一个相互依存、不可分割的
12、整个相互依存、不可分割的整体体 对象对象。采用采用数据抽象数据抽象和和数据隐藏数据隐藏技术,将对象及其操作抽象技术,将对象及其操作抽象成一种新的数据类型成一种新的数据类型 类类。数据数据数据数据1 1 数据数据数据数据2 2 数据数据数据数据3 3 操作操作操作操作1 1 操作操作操作操作2 2 操作操作操作操作3 3 属性属性方法方法1.3 1.3 面向对象的基本概念面向对象的基本概念 数据数据数据数据1 1 数据数据数据数据2 2 数据数据数据数据3 3 操作操作操作操作1 1 操作操作操作操作2 2 操作操作操作操作3 3 属属性性方方法法1.类类(class)类类实质就是一种用户自定实
13、质就是一种用户自定义的数据类型。义的数据类型。可以把类想像成一种可以把类想像成一种高级高级的数据类型。的数据类型。structclass1.3 1.3 面向对象的基本概念面向对象的基本概念1.类类(class)数据成员数据成员成员函数成员函数 class Stack private:struct Node int data;Node*next;*top;public:Stack()top=NULL;bool push(int i);bool pop(int&i);例例1.3 1.3 面向对象的基本概念面向对象的基本概念2.对象对象(object)In oop,the term object h
14、as a very specific meaning:It is a self-contained entity encapsulating data and operations on the data.1.3 1.3 面向对象的基本概念面向对象的基本概念2.对象对象(object)对象是类的一个对象是类的一个对象是类的一个对象是类的一个实例实例实例实例。对象与类的关系如同变量与数据类型之间的关系。对象与类的关系如同变量与数据类型之间的关系。对象与类的关系如同变量与数据类型之间的关系。对象与类的关系如同变量与数据类型之间的关系。对象具有唯一标识名,可以区别于其他对象。对象具有唯一标识名,可以
15、区别于其他对象。对象具有唯一标识名,可以区别于其他对象。对象具有唯一标识名,可以区别于其他对象。对象具有一个对象具有一个对象具有一个对象具有一个状态状态状态状态,由其属性值集合所表征。,由其属性值集合所表征。,由其属性值集合所表征。,由其属性值集合所表征。对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的 一种一种一种一种行为行为行为行为。对象具有对象具有对象具有对象具有模块独立性模块独立性模块独立性模块独立性。对象具有对象具有对象具有对象具有动态连接性动态连接性动态连
16、接性动态连接性。Stack st1;/定义对象定义对象st1 Stack st2;/定义对象定义对象st2例例 对象是类的一个对象是类的一个对象是类的一个对象是类的一个实例实例实例实例。对象与类的关系如同数据类型与变量之间的关系。对象与类的关系如同数据类型与变量之间的关系。对象与类的关系如同数据类型与变量之间的关系。对象与类的关系如同数据类型与变量之间的关系。对象具有唯一标识名,可以区别于其他对象。对象具有唯一标识名,可以区别于其他对象。对象具有唯一标识名,可以区别于其他对象。对象具有唯一标识名,可以区别于其他对象。对象具有一个对象具有一个对象具有一个对象具有一个状态状态状态状态,由其属性值集
17、合所表征。,由其属性值集合所表征。,由其属性值集合所表征。,由其属性值集合所表征。对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的对象有一组操作方法即服务,每个操作决定对象的 一种一种一种一种行为行为行为行为。对象具有对象具有对象具有对象具有模块独立性模块独立性模块独立性模块独立性。对象具有对象具有对象具有对象具有动态连接性动态连接性动态连接性动态连接性。1.3 1.3 面向对象的基本概念面向对象的基本概念2.对象对象(object)从逻辑上看,一个对象是独立存在的模块。模从逻辑上看,一个对象是独立存在的模块。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向对象程序设计课件第1章 绪论 面向 对象 程序设计 课件