《面向对象程序设计概论.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计概论.ppt(33页珍藏版)》请在优知文库上搜索。
1、面向对象的程序设计面向对象的程序设计抽象:对某种目的而言,强调重抽象:对某种目的而言,强调重要的部分,忽略不重要的部分。要的部分,忽略不重要的部分。引言引言抽象是具有针对性的。抽象是具有针对性的。功能抽象医院信息系统医院信息系统临床诊疗临床诊疗药品管理药品管理经济管理经济管理统计分析统计分析药品库房管理药品库房管理门急诊药房管理门急诊药房管理门急诊挂号系统门急诊挂号系统门急诊划价收费门急诊划价收费医疗统计系统医疗统计系统病案管理系统病案管理系统院长查询与分析院长查询与分析医生工作医生工作站站护士工作站护士工作站医学影像系统医学影像系统住院药房管理住院药房管理设备管理系统设备管理系统姓名、性别、
2、所选号码姓名、性别、所选号码体重、血型、既往病史体重、血型、既往病史两类抽象两类抽象以功能为中心的抽象:面向过程以功能为中心的抽象:面向过程以对象为中心的抽象:面向对象以对象为中心的抽象:面向对象void main( )fun1( ); fun2( );void fun1( )/挂号挂号void fun2( )/打印号码打印号码对象抽象挂号对象挂号对象医生对象医生对象病人对象病人对象挂号结果对象挂号结果对象挂号申请挂号申请病人挂号结果病人挂号结果医生信息医生信息面向过程与面向对象程序设计面向过程与面向对象程序设计面向过程程序设计面向对象程序设计参数参数 f1()() 返回值返回值过程过程1参数
3、参数 f2()() 返回值返回值过程过程2参数参数 f3()() 返回值返回值过程过程3数据数据1数据数据2数据数据3数据数据4数据数据5消息消息1MF2对象对象1MF4MF3MF2MF1对象对象2MF4MF3MF1消息消息2消息传递消息传递机制机制1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续1)面向过程的方法面向过程的方法: 结构化程序设计思想为使用面向过程的方法结构化程序设计思想为使用面向过程的方法解决复杂问题提供了有力的手段。解决复杂问题提供了有力的手段。 结构化程序设计思路结构化程序设计思路:自顶向下划分模块,直自顶向下划分模块,直到最底层的每个模块都是完成单
4、一独立的功能为到最底层的每个模块都是完成单一独立的功能为止止;将这些函数模块装配起来即实现编程的任务。将这些函数模块装配起来即实现编程的任务。 数据和处理数据的方法是分开完成的。数据和处理数据的方法是分开完成的。1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续2)面向对象的方法面向对象的方法: (1)将数据及对数据的操作方法放在一起将数据及对数据的操作方法放在一起,作为作为对象对象; (2)对同类型对象抽象出其共性对同类型对象抽象出其共性,形成类形成类; (3)类中数据用本类的方法进行处理类中数据用本类的方法进行处理; (4)类通过一个简单的外部接口与外界发生关类通过一个
5、简单的外部接口与外界发生关系系,对象与对象之间通过消息进行通信。对象与对象之间通过消息进行通信。面向过程的编程语言:面向过程的编程语言:C面向对象的编程语言:面向对象的编程语言:C+、Java、C#程序设计就像搭积木程序设计就像搭积木第一章 面向对象程序设计概论1.1 面向对象程序设计面向对象程序设计OOP(Object-Oriented Programming)的相关概念的相关概念1.2 C+对对OOP方法的支持方法的支持1.3C+对对C语言的改进语言的改进1.4C+程序的编辑、编译和运行程序的编辑、编译和运行1.5C+程序结构的特点程序结构的特点1.6 Visual C+程序运行步骤程序运
6、行步骤小结小结1.1 面向对象程序设计的相关概念面向对象程序设计的相关概念一、抽象与对象一、抽象与对象二、类二、类三、封装三、封装四、继承四、继承五、多态五、多态1、抽象、抽象抽象是指对具体问题(对象)进行概括,抽抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。出一类对象的公共性质并加以描述的过程。抽象代表着一个对象的抽象代表着一个对象的本质特征本质特征,这个特征,这个特征将该对象与所有其他种类的对象区别开来;将该对象与所有其他种类的对象区别开来;先注意问题的本质及描述,其次是实现过程或先注意问题的本质及描述,其次是实现过程或细节。细节。数据抽象:描述某类对象的数据
7、抽象:描述某类对象的属性或状态属性或状态。代码抽象:描述某类对象的共有的代码抽象:描述某类对象的共有的行为行为特征或具有特征或具有的功能。的功能。一、抽象与对象一、抽象与对象2、对象、对象对象是现实世界中实际存在的一个事物,对象是现实世界中实际存在的一个事物,如:一本书、一台电脑如:一本书、一台电脑对象是面向对象程序设计的核心概念,从对象是面向对象程序设计的核心概念,从现实事物中抽象出来,对象具有:现实事物中抽象出来,对象具有:(1) 属性属性: 静态特征静态特征 - 用数据表示用数据表示(2) 行为行为: 动态特征动态特征 - 用程序代码表示用程序代码表示 二、类1、什么是类、什么是类 类是
8、面向对象程序设计封装的类是面向对象程序设计封装的基本单元基本单元,是,是创建对创建对象的样板象的样板,它包含着对所创建对象的,它包含着对所创建对象的状态状态描述和描述和方法方法的的定义。类的完整描述包含了定义。类的完整描述包含了外部接口外部接口和和内部算法内部算法以及以及数数据结构据结构的形式;的形式; 类类由由struct类型类型引申而来,并将引申而来,并将数据和处理数据的数据和处理数据的函数函数捆绑在一起。捆绑在一起。 2、类是对象的抽象及描述、类是对象的抽象及描述 类中包含生成对象的具体方法类中包含生成对象的具体方法,由一个类所创建的,由一个类所创建的对象称为该类的实例,一个类的所有对象
9、具有相同的数对象称为该类的实例,一个类的所有对象具有相同的数据类型;据类型; 3、类是抽象数据类型的实现、类是抽象数据类型的实现 类是所有对象的类是所有对象的共同的行为共同的行为和和不同的状态不同的状态的集合体;的集合体;例例1-1 结构体引申为类结构体引申为类struct Complex /结构体结构体 double real,imag; ;class Complex /类类 private: double real, imag; /数据成员数据成员 public: void Set(double r,double i) /成员函数成员函数 real=r; imag=i; ;void mai
10、n() Complex a,b; /a、b是是Complex类的实例变量类的实例变量 a.Set(4.0,6.0); /调用成员函数来实现消息发送调用成员函数来实现消息发送 b.Set(4.0,6.0); /同一消息可发向多个对象同一消息可发向多个对象三、封装三、封装数据封装:数据封装:将数据和处理数据的方法包装成一个整体,将数据和处理数据的方法包装成一个整体,并并将具体实现细节的数据信息和操作方法在结构上隐藏将具体实现细节的数据信息和操作方法在结构上隐藏起来;起来;信息隐藏:信息隐藏:将一个模块的细节部分对用户隐藏起来,将一个模块的细节部分对用户隐藏起来,用户只能通过一个用户只能通过一个受保
11、护的接口受保护的接口来访问某个模块,而不来访问某个模块,而不能直接访问一个模块内部的细节;能直接访问一个模块内部的细节;一个对象具有状态、行为和标识。一个对象具有状态、行为和标识。对象是一个对象是一个状态状态和和操作(或方法)操作(或方法)的的封装体封装体;我的电路被我的电路被封装封装在机壳内了!在机壳内了!使用电话请按键!使用电话请按键!公有成员人人小学生小学生 中学生中学生 大学生大学生研究生研究生工人工人学生学生教师教师农民农民四、继承四、继承 继承将客观世界中一般和特殊的关系模型继承将客观世界中一般和特殊的关系模型化为层次结构,提供了创建新类的一种方法,化为层次结构,提供了创建新类的一
12、种方法,它的本质特征是行为共享;它的本质特征是行为共享;助教助教 讲师讲师 教授教授研究生研究生对象实例:对象实例: 研究生研究生 王王 平平人人身份证号码:字符串(身份证号码:字符串(18位)位)姓姓 名:字符串(名:字符串(20位)位)学生学生学校名称:字符串(学校名称:字符串(30位)位)学学 号:字符串(号:字符串(12位)位)研究生研究生专专 业:字符串(业:字符串(30位)位)入学年月日:结构类型入学年月日:结构类型Date作为作为“人人”身份证码:身份证码:420153199517042520姓姓 名:王名:王 平平作为作为“学生学生”学校名称:中南民族大学学校名称:中南民族大学
13、学学 号:号:090701022作为作为“研究生研究生”专专 业:自动控制业:自动控制入学年月日:入学年月日:1/9/2009四、继承(续四、继承(续1) 继承可继承可增强代码的可重用性增强代码的可重用性,代码的重用,代码的重用是利用继承基类的属性和方法来实现的。是利用继承基类的属性和方法来实现的。 继承某一基类的派生类可继承某一基类的派生类可自动继承基类的自动继承基类的全部属性和方法全部属性和方法。 增加派生类时,即修改和扩充程序时也增加派生类时,即修改和扩充程序时也不不必修改原有程序代码必修改原有程序代码,只需增加一些新的程序,只需增加一些新的程序代码。代码。四、继承(续四、继承(续2)
14、发出同样的消息,被不同类型的对象接收发出同样的消息,被不同类型的对象接收,导致完全不同的行为。,导致完全不同的行为。例:调用函数求两个整型量或两个双精度型量例:调用函数求两个整型量或两个双精度型量的最大值。的最大值。 int max(int ,int); double max(double,double);五、多态五、多态1.2C+对面向对象程序设计方法的支持对面向对象程序设计方法的支持C+支持数据封装(数据抽象)支持数据封装(数据抽象) C+中,中,类是支持数据封装的工具,对象类是支持数据封装的工具,对象则是数据封装的实现;则是数据封装的实现; C+中包含有私有、公有和保护成员中包含有私有、
15、公有和保护成员C+中通过发送消息来处理对象中通过发送消息来处理对象 每个可能的消息对应一个相应的方法,方每个可能的消息对应一个相应的方法,方法通过函数来定义法通过函数来定义;C+中中允许友元破坏封装性允许友元破坏封装性C+中允许函数名和运算符重载中允许函数名和运算符重载C+支持继承性支持继承性C+支持动态联编支持动态联编1.3C+对对C语言的改进语言的改进增加了新的运算符:增加了新的运算符::,new, delete等;等; (malloc, free)改进了类型系统,增加了安全性;改进了类型系统,增加了安全性;引进了引用概念;引进了引用概念;允许函数重载,允许设置缺省参数,提高了允许函数重载
16、,允许设置缺省参数,提高了编程的灵活性;编程的灵活性;引进了内联函数,提高了程序的效率;引进了内联函数,提高了程序的效率;可以根据需要随时对变量进行说明;可以根据需要随时对变量进行说明;1.4C+程序的编辑、编译和运行程序的编辑、编译和运行源程序源程序.cpp目标文件目标文件.obj可执行文可执行文件件.exe编译器编译器连接器连接器磁盘中的磁盘中的#include文文件件C+库文库文件件.LIB1.5 C+程序结构的特点程序结构的特点一、标识符一、标识符 组成规则:以组成规则:以字母字母或或下划线下划线开始,其后跟零个或开始,其后跟零个或多个多个字母字母、数字数字或或下划线下划线;标识符的标识符的长度任意长度任意区分区分字母的字母的大小写大小写;不能不能使用系统的使用系统的关键字关键字;C+系统关键字系统关键字二、预处理命令二、预处理命令宏定义宏定义文件包含文件包含条件编译条件编译关键字(保留字)关键字(保留字) 表表1-1C+的关键字的关键字P21autoboolbreakcasecatchcharclassconstconst_cast continue defaultdelet