C面向对象程序设计.ppt

C面向对象程序设计.ppt

ID:50741502

大小:142.00 KB

页数:103页

时间:2020-03-13

C面向对象程序设计.ppt_第1页
C面向对象程序设计.ppt_第2页
C面向对象程序设计.ppt_第3页
C面向对象程序设计.ppt_第4页
C面向对象程序设计.ppt_第5页
资源描述:

《C面向对象程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VisualC++面向对象编程语言第三章C++面向对象程序设计第三章C++面向对象程序设计3.1面向对象程序设计概述3.1.1传统的结构化程序设计3.1.2面向对象程序设计方法及特征3.2C++类3.2.1类的定义与实现3.2.2构造函数和析构函数3.2.3this指针3.2.4静态成员3.2.5友元3.3类的继承3.3.1基类和派生类3.3.2基类和派生类的构造函数3.3.3多重继承3.3.4虚基类3.4多态性和虚函数3.4.1用基类指针指向派生类对象3.4.2虚函数3.4.3抽象类和纯虚函数3.5重载3.5.1函数重载3.

2、5.2运算符重载3.6C++模板3.6.1函数模板3.6.2类模板3.7MicrosoftVisualC++的语法扩充3.7.1VisualC++自定义数据类型3.7.2VisualC++运行库3.7.3运行时类型识别3.7.4编程规范结构化程序设计:将系统分解为若干模块(即函数);缺点:维护困难,特别是数据结构的修改;3.1.1传统的结构化程序设计3.1.2面向对象程序设计方法及特征对象=数据+作用于这些数据上的操作;类是具有相同数据结构和相同操作功能的对象的集合,对象是类的实例;对象与类的关系类似于鞋和生产鞋的模具;面向对

3、象程序设计把一个复杂的问题分解为多个能完成独立功能的对象,分开独立设计,再将其整合完成复杂问题;其理想目标是希望编写程序就像搭积木;面向过程和面向对象的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7

4、、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这

5、样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改

6、动只是局部的。在类的定义中,数据称为成员变量,函数称为方法;成员变量按访问控制权限分为公有和私有;定义的格式:class<类名> { private:<私有数据成员和成员函数的声明> public:<私有数据成员和成员函数的声明> protected:<保护数据成员和成员函数的声明> }3.2.1类的定义与实现private属性的成员只允许被本类的成员函数访问和调用;protected属性的成员允许被本类的成员函数和派生类的成员函数访问和调用;例:Time类的定义classTime { private:inthour;intm

7、inute;intsecond; public: voidsetTime(int,int,int); voidshowTime(); }为什么需要这两个函数???对于成员函数来讲,成员变量就像全局变量;类的定义和一般函数定义类似,但必须在成员函数名前加类名和作用域限定符(::)Time类的实现(定义)voidTime::setTime(inth,intm,ints) { hour=(h>=0&&h<24)?h:0; minute=(m>=0&&m<60)?m:0; second=(s>=0&&s<60)?s:0; } void

8、Time::showTime() {cout<<对象名>;例:Timet1,today; Time*pt1=&t1;比较inti;成

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。