本节介绍面向对象的思想,面向对象的基本概念以及面向对象程序设计的基本特征。
工具/原料
电脑
数据结构
面向对象的思想
1、面向对象的方法是为计算机软件的创建提出的一种模型化世界的抽象方法,其基本思想如下:尽可能的运用人类的自然思维方式来建立问题空间的模型,尽可能直观自然地表达问题求解方法的软件系统。
2、面向对象方法,将数据和操作放在一起,作为一个相互依存、不可分割的整体来处理。
3、面向对象=对象+分类+继承+消息通信。也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过消息的传递实现通信。
面向对象程序设计
1、高级语言程序设计包括面向过程和面向对象两种方法。
2、面向过程的程序是程序设计中数据是共用的或共享的一个数据可以被多个函数调用,这些数据是缺乏保护的,同时数据的交叉使用很容易导致程序的错误。
3、实际上,程序中的每一组数据都是为某一种操作准备的,即一组数据总是与一种操作相对应的。
4、因此,人们设想将一组数据与一种操作放在一起,形成一个整体,与外界相对分隔,此即面向对象程序设计中的对象。
5、与面向过程不同的是,基于对象的旯皱镢涛程序设计以类和对象为基础程序的操作是围绕对象进行的,此在此基础上利用继承机制和多态性就成为面向对象的程序设计。基于对象的程序设计所面对的是一个个对象,所有的数据分别属于不同的对象。
6、在面向过程的程序设计中,常用公式“程序=数据结构+算法”来表示程序,同时将数据结构和算法分开来独立设计。
7、人们在实践中发现数据结构和算法是不可分割的,应当以一个算法对应一组数据结构,或者一组数据结构对应多个算法。
8、基于对象和面向对象的程碌食撞搁序设计,就是将一个算法和一组数据结构封装在一个对象实体中形成了“对象=数据结构+算法”的新概念,因此面向对象的程序设计的关键就是对象的设计和使用。
面向对象的基本概念
1、对象:对象是现实世界中存在的一个事物,对象可以是具体的有形物体,如学生、房屋、汽车等,也可以是无形的事物或概念,如国家、生产计划等。
2、对象是构成世界的一个独立单位,它具有自己的静态特征(也称属性,描述内部状态的数据)和动态特征(具有的功能或行为)。
3、从系统建模和实现的角度,对象描述了客观事物的一个整体,是构成系统的一个独立的基本单元,它由一组属性(数据)和一组服务(操作)组成。
4、从系统实现的角度,可以把对象看作由一组数据,以及有权对这些数据施加操作的一种服务,封装在一起构成的统一体,即 对象=数据+动作(方法、操作)。
5、在面向对象程序设计中,对象包括两方面的含义:对象的属性和他的行为。
6、属性是指对象的自然属性或自身状态,如人的年龄,身高,肤色和体重等。行为是指对象的功能,如人的特长或技能等。
7、对象,有以下特征:
8、对象的操作可以分为两类:一类是自身所承受的操作,另一类是施加于其他对象的操作。
对象的特性
1、模块的独立性。利用封装技术,将对象的特性隐藏在模块内部。使用者只需了解它的功能,不必知道功能实现的细节。因此,外界的变化不会影响模块内部的状态,这模块可独立为系统所组合选用,也可被程序员重用。
2、动态的连续性。可以通过消息激活机制,将对象之间动态联系连接在一起,使整个机体运转起来。
3、易维护性。由于对象的数据和操作都被封装在喋碾翡疼模块内部,所以对他们的修改及完善都限制在模块内部,不会涉及对象外部,从而使整个对象和整个系统变得更易于维护。
消息
1、消息是对象之间在交观立挛蛴互中所传送的通信信息。在C++中,消息的具体表现为函数,它是对象之间相互请求和协同工作的手段,是请求某个对象执行其中某个功能操作的规格说明。对象之间的联系,只能通过传递消息来进行。
2、消息具有三个性质:
3、在面向对象系统中为了完成某个事件,有时需要向同一个对象发送多个消息,或者向不同的对拇峨镅贪象发送多个消息,我们把多个消息称为消息序列。对一个对象而言,由外界对象直接向他发送的消息称为公有消息,由他自己向本身发送的消息称为私有消息。
4、某个特定对象的消息,根据功能的不同可分为以下三种类型。
类
1、类是一种具有相同属性和相同操作的对象的集合。一个类就是对一组相似对象的共同描述,它整体的代表一组对象。
2、对象只是符合某个类定义的一个实体,属于某个类定义的一个具体对象称为该类的一个实例。
3、类与对象的关系是抽象与具体的关系,类是多个对象(实例)的抽象,对象(实例)是类的个体实物。
4、面向对象的系统设计主要归结为类的建立和使用,类的确定采用归纳法来完成。
5、在系统设计中,通过对相同性质的物质对象进行类比分析,归纳出他们的贡献,包括数据特性和行为特性,构建一个类。
面向对象的基本特性
1、封装性:封装是将一段程序代码包装起来,应用时只需要知道这段代码所完成的功能,而不必知道该功能的实现细节。
2、继承性:继承是面向对象系统的另一个重要特性。类和类之间有时相互独立,有时会出现一些相似的特征。
3、继承所表达的就是对象之间的一种相交关系,它使得子类可以自动拥有、共享父类的全部属性与服务(操作),即某类对象可以继承另一个类的特征和能力。
4、多态性:所谓多态性,是指同一名称(函数、运算符)在不同的场合具有不同的意义;或者同一个界面,有多种实现。
5、C++语言支持两种多态性:1.编译时多态性2.运行时多态性