面向对象程序设计课件_第1页
面向对象程序设计课件_第2页
面向对象程序设计课件_第3页
面向对象程序设计课件_第4页
面向对象程序设计课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

为什么要学习本课程面向对象是当前程序设计的重要思想VC++是Win32应用程序的主要开发工具本课程既承前(C语言)又启后(.NET技术)为什么要学习本课程1本课程的学习目标

掌握面向对象程序设计的基本思想和方法掌握C++的基本语法和特性使用VC++6.0设计程序解决简单的问题本课程的学习目标2本课程的内容安排

课时安排:3节/周15周内容:见教材目录重难点:类和对象、继承和派生多态性和虚函数实验安排:4节/周8周本课程的内容安排课时安排:3节/周15周3本课程的参考书面向对象的理论与C++实践,王燕,清华大学出版社C++面向对象程序设计,谭浩强,中国铁道出版社其他相关的纸本及电子书籍(图书馆借阅或网上下载)本课程的参考书4本课程的考评方法

平时作业+上课表现:约20%

上机实验+作品设计:约30%

期末考试:约50%本课程的考评方法5教材编者的话

你的程序设计能力与你投入到计算机上的时间成正比。要想学好程序设计,就得多读程序,多编程序,多调试程序。教材编者的话6第一章绪论第一章绪论7主要内容面向对象方法的起源和发展结构化程序设计与面向对象程序设计面向对象的基本概念及其系统的特性面向对象的系统开发方法面向对象程序设计举例主要内容面向对象方法的起源和发展81.1面向对象方法的起源机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1面向对象方法的起源机器语言汇编语言高级语言面向过程面91.1面向对象方法的起源60年代末“软件危机”软件工程70年代结构化程序设计80年代面向对象程序设计1.1面向对象方法的起源60年代末“软件危机”70年代8010面向对象的方法是以对象作为最基本元素的一种分析问题和解决问题的方法。结构化方法处理问题是以过程为中心的,面向对象方法是以对象为中心的。面向对象的方法能更自然、更直接地反映现实世界的问题空间,能更好地适应复杂大系统不断发展与变化的要求。1.1面向对象方法的起源面向对象的方法是以对象作为最基本元素的一种分析问题和解决问题11面向对象语言可以分为两大类:纯粹的面向对象语言和混合型的面向对象语言。纯粹的面向对象语言中,几乎所有的语言成分都是“对象”,这类语言强调开发快速原型的能力。混合型的面向对象语言,是在传统的过程化语言中加入了各种面向对象的语言机制,它所强调的是运行效率。1.2面向对象语言的发展面向对象语言可以分为两大类:纯粹的面向对象语言和混合型的面向12LISP家族LISP是50年代开发出来的一种人工智能语言。70年代以来,在其基础上开发了很多LISP家族的面向对象语言。SimulaSimula语言是60年代开发出来的,在Simula中引入了几个面向对象程序设计语言中最重要的概念和特性,即数据抽象、类和继承性机制。SmalltalkSmalltalk起源于Simula语言,是第一个真正的面向对象程序设计语言,它体现了纯粹的OOP设计思想,是最纯的OOP语言。1.2面向对象语言的发展LISP家族1.2面向对象语言的发展13C家族70年代出现了C语言,并很快得到广泛的应用。80年代,在C的基础上进行扩充,出现了C++,它增加了对象机制,是一种混合型的面向对象程序设计语言。C++以其高效的执行效率赢得了广大程序设计员的青睐,使面向对象的程序设计语言得到重视和广泛应用。在2000年,Microsoft在自己的.NET框架计划中,以C语言为样本,沿用了C++的函数库,研发了C#语言,它是一种面向对象、面向网络、面向组件的语言。1.2面向对象语言的发展C家族1.2面向对象语言的发展142结构化程序设计与面向对象程序设计结构化程序设计

自顶向下、逐步细化、模块化设计、结构化编码

不足之处:数据与过程分离(1)编程时需要时刻考虑数据的格式;可重用性差(2)数据和程序要始终相容;易出错程序=数据结构+算法+程序设计语言+语言环境2结构化程序设计与面向对象程序设计结构化程序设计不足之处:152结构化程序设计与面向对象程序设计面向对象程序设计

代码重用、代码维护、代码共享、代码精减程序=对象1+对象2+…+对象n对象=数据结构+算法+程序设计语言+语言环境

2结构化程序设计与面向对象程序设计面向对象程序设计程序=对163.1面向对象的基本概念对象(object)是系统用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象是由属性和服务构成的。属性用来表示对象的状态,服务用来描述对象的行为操作。对象具有如下特性:具有唯一标识名具有一个状态、具有一组服务对象的成员仍可以是对象模块独立性、动态连接性、易维护性3.1面向对象的基本概念对象(object)173.1面向对象的基本概念类(class)类是对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体。每个类要有一个名字标识,用以表示一组对象的共同特征。类中的每个对象都是该类的实例。类提供了完整的解决特定问题的能力,它描述了数据结构(对象属性)、算法(服务、方法)和外部接口(消息协议)。交通工具汽车火车公共汽车小轿车快速列车特快列车动车组3.1面向对象的基本概念类(class)交通汽车火车公共汽183.1面向对象的基本概念消息(message)消息是面向对象系统中实现对象间的通信和请求任务的操作,是要求某个对象执行其中某个功能操作的规格说明。发送消息的对象称为发送者,接受消息的对象称为接收者。对象间的联系只能通过消息来进行。对象在接收到消息时才被激活。消息一般有三部分:接受对象名、调用操作名、参数。消息可分为公有消息和私有消息。消息具有三个性质:(1)同一对象可接收不同形式的多个消息,产生不同响应;(2)相同形式的消息可以送给不同对象,所做出的响应可以截然不同;(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可对消息不予理会。3.1面向对象的基本概念消息(message)(1)同一193.1面向对象的基本概念方法(method)方法就是对象所能执行的操作。方法包括界面和方法体两部分。界面就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。消息和方法的关系:对象根据接收到的消息,调用相应的方法;有了方法,对象才能响应相应的消息。只要方法界面保持不变,改动方法体不会影响方法的调用。在C++语言中方法是通过函数来实现的,称为成员函数。3.1面向对象的基本概念方法(method)203.2面向对象系统的特性抽象性(abstract)面向对象鼓励程序员以抽象的观点看待程序,即程序是由一组对象组成的。人们认识事物的两种方法:从特殊到一般的归纳法和从一般到特殊的演绎法。将一组对象的共同特征抽象出来,从而形成“类”的概念。对于一个具体的类,它有许多具体的个体,我们称这些个体叫做“对象”。

3.2面向对象系统的特性抽象性(abstract)213.2面向对象系统的特性封装性(encapsulation)所谓数据封装就是指一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体即对象。封装给数据提供了与外界联系的标准接口,只有通过这些接口,使用规范的方式,才能访问这些数据。数据封装使程序员设计程序时可以专注于自己的对象,同时切断了不同模块间数据的非法使用,减少了出错的可能性。3.2面向对象系统的特性封装性(encapsulation223.2面向对象系统的特性继承性(inheritance)是指建立新的对象类型时,能够从已有的对象类型获得原对象的特点和功能。继承的作用:一方面可以减少代码冗余,另一方面可以通过协调性来减少相互之间的接口和界面。从继承源上划分继承可分为单一继承和多重继承。从继承内容上继承可分为取代继承、包含继承、受限继承、特化继承。父类子类3.2面向对象系统的特性继承性(inheritance)父233.2面向对象系统的特性多态性(polymorphism)是指不同的对象接收到相同的消息时产生多种完全不同的行为的现象。C++支持两种多态性:编译时的多态性和运行时的多态性。编译时的多态性通过重载函数实现,而运行时的多态性通过虚函数实现。3.2面向对象系统的特性多态性(polymorphism)244面向对象的系统开发方法系统调查和需求分析对系统要实现的功能及用户对系统开发的需求进行调查研究。面向对象分析(OOA)在繁杂的问题域中抽象地识别出对象及其行为、结构、属性、方法等。面向对象设计(OOD)对分析的结果作进一步的抽象、归类、整理,最终以规范的形式描述对象和类。面向对象程序设计(OOP)用面向对象的程序设计语言将上一步整理的对象和类的描述映射为应用程序软件。4面向对象的系统开发方法系统调查和需求分析255面向对象程序设计举例

【例1.1】使用面向对象程序设计方法,编写一个对堆栈进行处理的程序,包括压栈和弹栈操作。源程序:stack.cpp1234512345stack1:stack2:NULLNULL5面向对象程序设计举例【例1.1】使用面向对象程26编辑链接编译执行程序代码的录入,生成源程序*.cpp语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exeC++程序的调试与运行编辑链接编译执行程序代码的录入,语法分析查错,翻译生成目标程27C++程序的书写格式比较自由,一般一行写一条语句。对于短语句也可一行写多个,中间用“;”分隔。对于长语句也可将一条语句分写在多行上,分行原则是不能将一个单词分开,也不要将双撇号引用的一个字符串分开。为了程序书写得清晰,提高程序的可读性,一般采用缩进格式。即同一层次语句要对齐,不同层次语句要缩进若干个字符。如循环体中的语句和选择体中的语句要缩进对齐。

花括号的书写方法较多,常用的是每个花括号占一行,并与使用花括号的语句对齐,花括号内的语句采用缩格书写的方式;另有一种形式是花括号与所括内容占一行。C++程序的书写格式C++程序的书写格式比较自由,一般一行写一条语句。对于短语句28习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式main(){……………….………………

…………..…………..

……………….

………………………….……………….………………..}main(){

inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}cout<<sum<<endl;}优秀程序员的素质之一:

使用TAB缩进

{}对齐有足够的注释有合适的空行1格式特点习惯用小写字母,大小写敏感main()main()优秀程292结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C++程序由语句组成用“;”作为语句终止符注释//为注释不产生编译代码2结构特点函数与主函数30VisualC++6.0IDEIDE——IntegratedDevelopmentEnvironment面向对象程序设计课件31工件区窗口(workspace)编辑窗口输出窗口(output)编译链接执行工件区窗口(workspace)编辑窗口输出窗口(outpu32本章结束本章结束33为什么要学习本课程面向对象是当前程序设计的重要思想VC++是Win32应用程序的主要开发工具本课程既承前(C语言)又启后(.NET技术)为什么要学习本课程34本课程的学习目标

掌握面向对象程序设计的基本思想和方法掌握C++的基本语法和特性使用VC++6.0设计程序解决简单的问题本课程的学习目标35本课程的内容安排

课时安排:3节/周15周内容:见教材目录重难点:类和对象、继承和派生多态性和虚函数实验安排:4节/周8周本课程的内容安排课时安排:3节/周15周36本课程的参考书面向对象的理论与C++实践,王燕,清华大学出版社C++面向对象程序设计,谭浩强,中国铁道出版社其他相关的纸本及电子书籍(图书馆借阅或网上下载)本课程的参考书37本课程的考评方法

平时作业+上课表现:约20%

上机实验+作品设计:约30%

期末考试:约50%本课程的考评方法38教材编者的话

你的程序设计能力与你投入到计算机上的时间成正比。要想学好程序设计,就得多读程序,多编程序,多调试程序。教材编者的话39第一章绪论第一章绪论40主要内容面向对象方法的起源和发展结构化程序设计与面向对象程序设计面向对象的基本概念及其系统的特性面向对象的系统开发方法面向对象程序设计举例主要内容面向对象方法的起源和发展411.1面向对象方法的起源机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1面向对象方法的起源机器语言汇编语言高级语言面向过程面421.1面向对象方法的起源60年代末“软件危机”软件工程70年代结构化程序设计80年代面向对象程序设计1.1面向对象方法的起源60年代末“软件危机”70年代8043面向对象的方法是以对象作为最基本元素的一种分析问题和解决问题的方法。结构化方法处理问题是以过程为中心的,面向对象方法是以对象为中心的。面向对象的方法能更自然、更直接地反映现实世界的问题空间,能更好地适应复杂大系统不断发展与变化的要求。1.1面向对象方法的起源面向对象的方法是以对象作为最基本元素的一种分析问题和解决问题44面向对象语言可以分为两大类:纯粹的面向对象语言和混合型的面向对象语言。纯粹的面向对象语言中,几乎所有的语言成分都是“对象”,这类语言强调开发快速原型的能力。混合型的面向对象语言,是在传统的过程化语言中加入了各种面向对象的语言机制,它所强调的是运行效率。1.2面向对象语言的发展面向对象语言可以分为两大类:纯粹的面向对象语言和混合型的面向45LISP家族LISP是50年代开发出来的一种人工智能语言。70年代以来,在其基础上开发了很多LISP家族的面向对象语言。SimulaSimula语言是60年代开发出来的,在Simula中引入了几个面向对象程序设计语言中最重要的概念和特性,即数据抽象、类和继承性机制。SmalltalkSmalltalk起源于Simula语言,是第一个真正的面向对象程序设计语言,它体现了纯粹的OOP设计思想,是最纯的OOP语言。1.2面向对象语言的发展LISP家族1.2面向对象语言的发展46C家族70年代出现了C语言,并很快得到广泛的应用。80年代,在C的基础上进行扩充,出现了C++,它增加了对象机制,是一种混合型的面向对象程序设计语言。C++以其高效的执行效率赢得了广大程序设计员的青睐,使面向对象的程序设计语言得到重视和广泛应用。在2000年,Microsoft在自己的.NET框架计划中,以C语言为样本,沿用了C++的函数库,研发了C#语言,它是一种面向对象、面向网络、面向组件的语言。1.2面向对象语言的发展C家族1.2面向对象语言的发展472结构化程序设计与面向对象程序设计结构化程序设计

自顶向下、逐步细化、模块化设计、结构化编码

不足之处:数据与过程分离(1)编程时需要时刻考虑数据的格式;可重用性差(2)数据和程序要始终相容;易出错程序=数据结构+算法+程序设计语言+语言环境2结构化程序设计与面向对象程序设计结构化程序设计不足之处:482结构化程序设计与面向对象程序设计面向对象程序设计

代码重用、代码维护、代码共享、代码精减程序=对象1+对象2+…+对象n对象=数据结构+算法+程序设计语言+语言环境

2结构化程序设计与面向对象程序设计面向对象程序设计程序=对493.1面向对象的基本概念对象(object)是系统用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象是由属性和服务构成的。属性用来表示对象的状态,服务用来描述对象的行为操作。对象具有如下特性:具有唯一标识名具有一个状态、具有一组服务对象的成员仍可以是对象模块独立性、动态连接性、易维护性3.1面向对象的基本概念对象(object)503.1面向对象的基本概念类(class)类是对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体。每个类要有一个名字标识,用以表示一组对象的共同特征。类中的每个对象都是该类的实例。类提供了完整的解决特定问题的能力,它描述了数据结构(对象属性)、算法(服务、方法)和外部接口(消息协议)。交通工具汽车火车公共汽车小轿车快速列车特快列车动车组3.1面向对象的基本概念类(class)交通汽车火车公共汽513.1面向对象的基本概念消息(message)消息是面向对象系统中实现对象间的通信和请求任务的操作,是要求某个对象执行其中某个功能操作的规格说明。发送消息的对象称为发送者,接受消息的对象称为接收者。对象间的联系只能通过消息来进行。对象在接收到消息时才被激活。消息一般有三部分:接受对象名、调用操作名、参数。消息可分为公有消息和私有消息。消息具有三个性质:(1)同一对象可接收不同形式的多个消息,产生不同响应;(2)相同形式的消息可以送给不同对象,所做出的响应可以截然不同;(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可对消息不予理会。3.1面向对象的基本概念消息(message)(1)同一523.1面向对象的基本概念方法(method)方法就是对象所能执行的操作。方法包括界面和方法体两部分。界面就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。消息和方法的关系:对象根据接收到的消息,调用相应的方法;有了方法,对象才能响应相应的消息。只要方法界面保持不变,改动方法体不会影响方法的调用。在C++语言中方法是通过函数来实现的,称为成员函数。3.1面向对象的基本概念方法(method)533.2面向对象系统的特性抽象性(abstract)面向对象鼓励程序员以抽象的观点看待程序,即程序是由一组对象组成的。人们认识事物的两种方法:从特殊到一般的归纳法和从一般到特殊的演绎法。将一组对象的共同特征抽象出来,从而形成“类”的概念。对于一个具体的类,它有许多具体的个体,我们称这些个体叫做“对象”。

3.2面向对象系统的特性抽象性(abstract)543.2面向对象系统的特性封装性(encapsulation)所谓数据封装就是指一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体即对象。封装给数据提供了与外界联系的标准接口,只有通过这些接口,使用规范的方式,才能访问这些数据。数据封装使程序员设计程序时可以专注于自己的对象,同时切断了不同模块间数据的非法使用,减少了出错的可能性。3.2面向对象系统的特性封装性(encapsulation553.2面向对象系统的特性继承性(inheritance)是指建立新的对象类型时,能够从已有的对象类型获得原对象的特点和功能。继承的作用:一方面可以减少代码冗余,另一方面可以通过协调性来减少相互之间的接口和界面。从继承源上划分继承可分为单一继承和多重继承。从继承内容上继承可分为取代继承、包含继承、受限继承、特化继承。父类子类3.2面向对象系统的特性继承性(inheritance)父563.2面向对象系统的特性多态性(polymorphism)是指不同的对象接收到相同的消息时产生多种完全不同的行为的现象。C++支持两种多态性:编译时的多态性和运行时的多态性。编译时的多态性通过重载函数实现,而运行时的多态性通过虚函数实现。3.2面向对象系统的特性多态性(polymorphism)574面向对象的系统开发方法系统调查和需求分析对系统要实现的功能及用户对系统开发的需求进行调查研究。面向对象分析(OOA)在繁杂的问题域中抽象地识别出对象及其行为、结构、属性、方法等。面向对象设计(OOD)对分析的结果作进一步的抽象、归类、整理,最终以规范的形式描述对象和类。面向对象程序设计(OOP)用面向对象的程序设计语言将上一步整理的对象和类的描述映射为应用程序软件。4面向对象的系统开发方法系统调查和需求分析585面向对象程序设计举例

【例1.1】使用面向对象程序设计方法,编写一个对堆栈进行处理的程序,包括压栈和弹栈操作。源程序:stack.cpp1234512345stack1:stack2:NULLNULL5面向对象程序设计举例【例1.1】使用面向对象程59编辑链接编译执行程序代码的录入,生成源程序*.cpp语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exeC++程序的调试与运行编辑链接编译执行程序代码的录入,语法分析查错,翻译生成目标程60C++程序的书写格式比较自由,一般一行写一条语句

温馨提示

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

评论

0/150

提交评论