C++-面向对象编程-000-面向对象

C+±面向对象编程-000-面向对象-2020-3-16

一、面向对象概述

面向对象(Object Oriented ,OO)它是一种设计思想,现在这种思想已经不单应用在软件设计上,数据库设计、计算机辅助设计(CAD)、网络结构设计、人工智能算法设计等领域都开始应用这种思想。

针对面向对象思想应用的不同领域,面向对象又可以分为面向对象分析(Object Oriented Analysis,OOA)、面向对象设计(Object Oriented Design,OOD)、面向对象编程(Object Oriented Programming,OOP)、面向对象测试(Object Oriented Test,OOT)和面向对象维护(Object Oriented Soft Maintenance,OOSM)。

面向对象有3大特点,即封装继承多态

(1)封装

封装有两个作用,一个是将不同的小对象封装成一个大对象另一个是把一部分内部属性和功能对外界屏蔽。例如,一辆汽车是一个大对象,它由发动机、底盘、车身和轮子等这些小对象组成。在设计时可以先对这些小对象进行设计,然后小对象之间通过互相联系确定各自大小等方面的属性,最后就可以安装成一辆汽车。

(2)继承

继承是和类密切相关的概念。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性。
继承性是面向对象程序设计语言不同于其他语言的最重要的特点,是其他语言所没有的。采用继承性,使公共的特性能够共享,提高了软件的重用性。

(3)多态

多态性是指相同的行为可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式取响应共同的消息。

二、面向对象与面向过程编程

1.面向过程编程

过程编程的主要思想是先做什么后做什么,在一个过程中实现特定功能。一个大的实现过程还可以分成各个模块,各个模块可以按功能进行划分,然后组合在一起实现特定功能。在过程编程中,程序模块可以是一个函数,也可以是整个源文件。
过程编程主要以数据为中心,传统的面向过程的功能分解法属于结构化分析方法。分析者将对象系统的现实世界看作一个大的处理系统,然后将其分解为若干个子处理过程,解决系统的总体控制问题。在分析过程中,用数据描述各子处理过程之间的联系,整理各个子处理过程的执行顺序。
面向过程编程一般流程如下:
现实世界->面向过程建模(流程图、变量、函数)->面向过程语言->执行求解。
过程编程的稳定性、可修改性和可重用性都比较差。

(1)软件重用性差

重用性是指同一事物不经修改或稍加修改就可多次修改使用的性质。软件重用性是软件工程追求的目标之一。处理不同的过程都由不同的结构,当过程改变时,结构也需要改变,前期开发的代码无法得到充分的再利用。

(2)软件可维护性差

软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。面向过程编程由于软件的重用性查,造成维护时其费用和成本也很高,而且大量修改的代码存在着许多未知的漏洞。

(3)开发出的软件不能满足用户需要

大型软件系统一般涉及各种不同领域的知识,面向过程编程往往描述软件的各个最低层的,针对不同领域设计不同的结构及处理机制,当用户需求发送变化时,就要修改最低层的结构。当处理用户需求变化较大时,过程编程将无法修改,可能导致软件的重新开发。

2.面向对象编程

面向过程编程有费解的数据结构、复杂的组合逻辑、详细的过程和数据之间的关系、高深的算法,面向过程开发的程序可以描述成算法加数据结构。面向过程开发是分析过程与数据之间的边界在哪里,进而解决问题。面向对象则是从另一种角度思考,将编程思维设计成符合人的思维逻辑。
面向对象程序设计者的任务包括两个方面:一是设计所需要的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务。这时它如同一个总调度,不断地向各个对象发出消息,让这些对象活动起来(或者说激活这些对象),完成自己职责范围内的工作。
各个对象的操作完成了,整体任务也就完成了。显然,对一个大型任务来说,面向对象程序设计方法是十分有效的,它能大大降低程序设计人员的工作难度,减少出错机会。
面向对象开发的程序可以描述成“对象+消息”。面向对象编程一般流程如下:
现实世界->面向对象建模(类图、对象、方法)->面向对象语言->执行求解。

3.面向对象的特点

面向对象技术充分体现了分解、抽象、模块化、信息隐藏等思想,可有效提高软件生产率,缩短软件开发时间,提高软件质量,是控制复杂度的有效途径。
面向对象不仅适合普通人员,也适合经理人员。降低维护开销的技术可以释放管理者的资源,将其投入到待处理的应用中。在经理们看来,面向对象不是纯技术的,它即能给企业的组织也能给经理的工作带来变化。
当一个企业采纳了面向对象,其组织将发生变化。类的重用需要类库和类库管理人员,每个程序员都要加入到两个组中的一个:一个是设计和编写新类组,另一个是应用类创建新应用程序组。面向对象不太强调编程,需求分析相对地将变得更加重要。
面向对象编程主要有代码容易修改、代码复用性、满足用户需求3个特点。

(1)代码容易修改

面向对象编程地代码都是封装在类里面,如果类的某个属性发生变化,只需要修改类中成员函数的实现即可,其他的程序函数不发生改变。如果类中属性变化较大,则使用继承的方法重新派生新类。

(2)代码复用性高

面向对象编程的类都是具有特定功能的封装,需要使用类中特定的功能,只需要声明该类并调用其成员函数即可。如果需要的功能在不同类,还可以进行多重继承,将不同类的成员封装到一个类中。功能的实现可以像积木一样随意组合,大大提高了代码的复用性。

(3)满足用户需求

由于面向对象编程的代码复用性高,用户的要求发生变化时,只需要修改发生变化的类。如果用户的要求变化较大时,就对类进行重新组装,将变化大的类重新开发,功能没有发生变化的类可以直接拿来使用。面向对象编程可以及时地响应用户需求地变化。

发布了91 篇原创文章 · 获赞 101 · 访问量 3270

猜你喜欢

转载自blog.csdn.net/weixin_41096569/article/details/104898750