C++学习(二) C++面向对象程序设计方法概述

(1)面向过程与面向对象的比较

面向过程程序设计方法(C语言)

分析出要解决所需要的步骤,然后用函数把各步骤逐个实现,运行时依次调用各个函数即可。

程序 = 算法 + 数据结构

面向对象程序设计方法(C++语言)

把问题分解成各个对象,描述各个对象的属性和行为,通过对象的相互作用来解决问题。

对象 = 算法 + 数据结构
程序 = 对象s + 消息
(消息的作用就是对对象的控制)

(2)面向对象程序设计方法的介绍

一般步骤

定义类 –> 创建对象 –> 向对象发送消息,使对象行动起来

-------------------------------------
面向对象的基本概念     面向对象系统的特性
-------------------------------------
    基类         |      抽象性
------------------------------------- 
    对象         |      封装性
-------------------------------------   
    消息         |      继承性
-------------------------------------
    方法         |      多态性
-------------------------------------

面向对象程序设计是程序设计的新思维,它既吸收了结构化程序设计的一切优点,又考虑了现实世界与面向对象空间的映射关系,它所追求的目标是将现实世界问题的求解尽可能简单化。

面向对象程序设计将数据以及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型——类,并且考虑不同对象之间的联系和对象所在类的重用性。

面向对象程序设计优于传统的结构化程序设计,其优越性表现在,它有希望解决软件工程的两个主要的问题——软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自然地表现现实世界的实体和问题,它对软件开发过程具有很重要的意义。

面向对象的基本概念: 基类对象消息方法

对象

对象是现实世界中一个实际存在的事物,它是有形的,也可以是无形的或无法整体触及的抽象事件。对象是构成世界的一个独立单位,它具有自己的静态特征(静态特征是可以用某种数据来描述)和动态特征(动态特征即对象所表现的行为或对象所具有的功能)。一个对象可以包含多个属性(属性是一组数据结构的集合,表示对象的一种状态,对象的状态只供对象自身使用,用来描述静态特性)和多个服务(服务是用来描述对象动态特征或行为的一个操作序列,是对象一组功能的体现,包括自操作和它操作。自操作是对象对其内部数据属性进行的操作,它操作是对其他对象进行的操作),对象的属性值只能由这个对象的服务存取和修改。对象是其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体。

对象具有如下的特性:

(1)具有唯一标识名,可以区别于其他对象;

(2)具有一个状态,由与其相关联的属性值集合所表征;

(3)具有一组操作方法即服务,每个操作决定对象的一种行为;

(4)一个对象的成员仍可以是一个对象;

(5)模块独立性;

(6)动态连接性;

(7)易维护性;

类(基类)

在面向对象系统中,并不是将各个具体的对象都进行描述,而是忽略其非本质的特性,找出其共性,将对象划分成不同的类,这一过程称为抽象过程。类是对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体。在类的描述中,每个类要有一个名字标识,用以标识一组对象的共同特征。类的每个对象都是该类的实例。类提供了完整的解决特定问题的能力,因为类描述了数据结构(对象属性)、算法(服务方法)和外部接口(消息协议),是一种用户自定义的数据类型。

消息

消息是面向对象系统中实现对象间的通信和请求任务的操作,是要求某个对象执行其中某个功能操作的规格说明。发送消息的对象称为发送者,接受消息的对象称为接收者。对象间的联系,只能通过消息来进行。对象在接收到消息时才被激活。

消息具有三个性质:

(1)同一对象可接收不同形式的多个消息,产生不同的响应;

(2)相同形式的消息可以发送给不同对象,所做出的响应可以是截然不同的;

(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必需的。

方法

在面向对象程序设计中,要求某一对象完成某一操作时,就向对象发送一个相应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。方法就是对象所能执行的操作。方法包括界面(界面就是消息的模式,它给出了方法的调用协议)和方法体(方法体则是实现这种操作的一系列计算步骤,也就是一段程序)两部分;消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。

面向对象系统特性:抽象性封装性继承性多态性

抽象性

程序是由一组对象组成的。程序员可以将一组对象的共同特征进一步抽象出来,进而形成“类”的概念。抽象是一种从一般观点看待事物的方法,它要求程序员集中于事物的本质特征,而不是具体细节或具体实现。

封装性

数据封装就是指一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就是对象。数据封装就是给数据提供了与外界联系的标准接口,无论是谁,只有通过这些接口并使用规范的方式,才能访问这些数据。

继承性

从已有的对象类型出发建立一种新的对象类型,使它继承原对象的特点和功能,这种思想是面向对象设计方法的主要贡献。继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和实现重用的一种手段,它所表达的就是一种不同类之间的继承关系。它使得某类对象可以继承另外一类对象的特征和能力。继承所具有的作用有两个方面:一方面可以减少冗余代码,另一方面可以通过协调性减少接口和界面

从继承源上划分继承可以分为单继承(子类对单个直接父类的继承称为单一继承)和多继承(子类多于一个直接父类的继承称为多重继承)。父类也称为基类或超类,子类也称为派生类。

从继承内容上可以分为取代继承包含继承受限继承特化继承

多态性

不同的对象接收到相同的消息时产生完全不同的行为的现象称为多态性。C++语言支持两种多态性,即编译时的多态性(通过重载函数实现)和运行时的多态性(通过虚函数实现)。使用多态性可以大大提高人们解决复杂问题的能力。

面向对象程序设计能支持的软件开发策略有:

(1)编写可重用代码;

(2)编写可维护代码;

(3)共享代码;

(4)精减已有代码;

面向对象的软件开发:

1、面向对象分析(object oriented analysis , OOA)

2、面向对象设计(object oriented design , OOD)

3、面向对象编程(object oriented programming , OOP)

4、面向对象测试(object oriented test , OOT)

5、面向对象维护(object oriented soft maintenance , OOSM)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值