C++的五大特性

1.对象 

     
在客观世界里,任何一个事物都可以看做一个对象(object),或者说我们的世界是由无数个对象组成的。对象可以是自然的物体,如天安号、诺亚方舟等,也可以是一些逻辑结构,如联合国、C++语言等,甚至可以是一道数学习题,一篇科研论文,明天的学习计划等。对象可大可小,这得看你想做什么事情。例如学校是一个对象,一个班级也可以是一个对象,一个学生也可以是一个对象。

     
任何一个对象会具备两个要素:一个是静态特性,我们把这种静态特性称为属性(attribute);另外一个是动态特性,我们称之为行为(behavior)。拿一个学生来说,他的姓名、性别、年龄等是在一段时间内都不会发生变化的,这便是他的静态特性,即为属性;而他会在不同时间里做不同的事情,如早晨起床,晚上睡觉等,这些就是他的动态属性,即行为。如果想控制这个同学的行为,我们可以告诉他一个消息(message),比如说放假了,那如果他不傻,则不会到学校去了。

一个对象也许会有多个属性和行为,而外界通过消息来控制行为,这也是我们现实生活中事情的一般模式。在C++中的一个对象中,属性主要通过数据来体现,而行为主要通过函数来体现。消息往往是调用此对象的公有成员(一般是公有函数),我们把可以受外界消息控制的公有成员叫做这个对象的对外接口。

    
使用面向对象程序设计去设计一个复杂的软件时,首要的问题是考虑这个软件系统由那些对象组成,然后考虑这些对象要有哪些属性和行为。知道了这些之后设计出对象的抽象——类。而有些类是经常用到的,于是就有了类库,每当要用到时在头文件里包含相应的类库即可。

2.封装与信息隐蔽
    在C++中,可以通过对象成员属性的定义来实现对象的封装处理,即把他的部分数据和功能对外界屏蔽起来,使外界不用知道,甚至不能知道。比如一台录音机,它被看见的只是
外面的外壳,而里面的机械控制和电路板对使用者是不知道。使用者知道只是几个按键都有什么功能。

    这样做有两大好处:一是大大降低人们使用对象的难度,使用者完全不用理会里面是怎样实现的。如对于录音机,使用者只需知道按下录音键后,录音机便开始录音。二是可以对知识产权进行保护,通过细致的设计,可以把想隐藏的隐藏起来,只留些接口给类的使用者,使用者无法对现有功能进行修改,也不能知道现有功能是如何实现的,从而实现信息隐蔽。对外的接口一般是函数名,这个在以后的学习中我们会详细的介绍。

3.抽象
     
在程序设计中,我们经常见到抽象这个词语,其实抽象的概念并不抽象,我们已经对抽象司空见惯了。比如说“人”这个词,我们骂人是会说“某某不是人”。也就是说无论张三、李四还是王五都可以称为人,人就是对张三、李四、王五的抽象。又如只要有中国国籍的人我们就能把他称为中国人,不管出生地在哪里,中国人这个词语就是通过抽象得到的。

抽象的过程就是寻找有关事物的共同点,抽象的作用就是表示同一类事物的本质。其实在语言中的其他地方我们早已体现了抽象的作用。如“int”是对所有整形数据的抽象。在面向对象的C++中,有一个最重要的抽象就是类,类是从想要的对象中抽象得到的。也就是说类是对象的抽象,而对象是类的特例。

4.继承和重用

     
继承和重用是C++的,也是面相对象的重要特性,它们能使面向对象程序设计在设计大型程序时,可以更加的高效。这就像是一个汽车厂想生产一款新型的汽车,一般不会从头开始设计,而是选择某一款汽车为基础,再增加一些新的功能,就研制出一款型的汽车。C++与C的不同之处有些方面也在于此。

如果在软件开发中已建立了一个名为“A”的类,又想建立一个名为“B”的类,而后者与前者基本相同,只不过是增加了一些属性或者功能(即行为)。这就是面向对象程序设计中的继承机制。举个例子,我们先设计一个 “Person” 类来表述人的特性,他的属性有姓名、年龄、性别等,如果我们还想设计一个“Student”类来表示学生的特性,我们只需在“Person”类的基础上再添加学号、班级等属性即可,这样便大大简化了程序设计的步骤。

可以看到,C++的继承机制可以方便的利用已有的分类建立一个新的分类,这样就可以重用已有软件部分甚至是一大部分,大大减少了编程的工作量。另外,我们不仅可以利用自己过去所建设的类,还可以利用别人建设的类或者是存放在类库里的类。这样便大大减少了软件的开发周期,对大型软件的开发有着重要的意义。

 5.多态性

     
多态性在我们的日常生活中是经常见到的,比如对于考试结束这件事情,同学们则是放松去吃大餐,而老师们则是辛辛苦苦地改试卷,路旁的清洁工人则什么都不用做。像这种同一个消息发送个不同的对象,不同对象作出不同反应的现象,就是多态性。

在C++中,多态性表现在由继承而产生虽然相关但是不同的类中,这些类的对象对同一消息可能会做出不同反应。比如刚才的那个例子,学生、老师、清洁工人都继承了人的特性,但是他们对考试结束这一消息会有不同的反应。

多态性是面向对象程序设计的一个重要特性,它大大的增加了程序的灵活性。

时间: 2024-09-28 11:39:42

C++的五大特性的相关文章

Spark之RDD的定义及五大特性

RDD是分布式内存的一个抽象概念,是一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,能横跨集群所有节点并行计算,是一种基于工作集的应用抽象. RDD底层存储原理:其数据分布存储于多台机器上,事实上,每个RDD的数据都以Block的形式存储于多台机器上,每个Executor会启动一个BlockManagerSlave,并管理一部分Block:而Block的元数据由Driver节点上的BlockManagerMaster保存,BlockManagerSlave生成Block后向Block

HTML5 五大特性

一.正则表达式: 相信大家都会非常喜欢这个特性,无须服务器端的检测,使用浏览器的本地功能就可以帮助你判断电子邮件的格式,URL,或者是电话格式,防止用户输入错误的信息,通过使用HTML5的pattern属性,我们可以很方便的整合这个功能,代码如下: <input type="email" pattern="[^ @]*@[^ @]*" value=""> 二.数据列表元素: 在没有HTML5的日子里,我们会选择使用一些JS或者知名的j

.NET Framework 4.5 的五大特性

介绍 从.NET4.5发布到现在已经有一年多了.但问题是针对最近微软发布的版本信息中,大部分的.NET开发人员所讨论交流的只是其中的一两个特性.其他的特性仅仅停留在MSDN中或者沦为简介文档.例如:现在问一个.NET开发人员:.NET4.5的核心框架是什么?他们大多数将只能说出异步和等待(至少,我接触的人中,只谈论过这些特性)再次,浏览所有特性确实是一件非常困难的事情.因为,从你所从事的方面来看,有些特性听起来不是那么让你感兴趣.因此,在这篇文章中,我挑选了.NET 4.5中介绍的五个我喜欢的特

C++五大特性

1.对象 在客观世界里,任何一个事物都可以看做一个对象(object),或者说我们的世界是由无数个对象组成的.对象可以是自然的物体,如天安号.诺亚方舟等,也可以是一些逻辑结构,如联合国.C++语言等,甚至可以是一道数学习题,一篇科研论文,明天的学习计划等.对象可大可小,这得看你想做什么事情.例如学校是一个对象,一个班级也可以是一个对象,一个学生也可以是一个对象.  任何一个对象会具备两个要素:一个是静态特性,我们把这种静态特性称为属性(attribute):另外一个是动态特性,我们称之为行为(b

ES6常用五大特性

ES6可谓是对JS语言的一个颠覆性改变,增加了Module改善JS一直被诟病的模块化.Promise解决异步函数的回调地狱.Class的面相对象编程... 在学习ES6的过程中,大家或多或少都有看过阮一峰老师的<ECMAScript 6 入门>.这本书把ES6的所有知识点都讲解的很详细,如果有时间,还是要去仔仔细细的研究一番.这篇博文只是摘录五个常用的特性来讲解,话不多说,下面开讲: 一.let和const命令 1.let: (1)基本用法 ES6 新增了let命令,用来声明变量.类似于var

后PC时代的云桌面需要具备的五大特性

在过去的30年里,我们大多数的办公都是以PC为主要的办公设备的,很多人称这一时期为PC时代的,而随着云桌面技术和功能的完善,在很多的办公领域云桌面逐渐替代了传统的PC办公,云桌面逐渐成为很多用户办公的首选,因此也有人称云桌面是后PC时代的.那么在后PC时代的云桌面需要具备什么样的特性呢? 首先资源按需分配,云桌面不单单是给一个人用的或者说只给某个部门使用的,同一个公司可能有多个部门而且这些部门的应用可能都是不同的,有些部门可能只需要简单的应用即可而有的部门应用可能会相对复杂一点,所以这就要求云桌

云原生应用程序架构的五大特性(上)- 12要素应用

12要素的概念最早诞生于Heroku的工程师手中,说白了,其实就是云原生应用程序架构的模式集合,它描述了一个应用程序的原型,最好地诠释了采纳云原生应用程序架构的原因. 通过突出陈述性配置和水平扩展的无状态/无共享进程,以及整体上与部署环境的松耦合连接,这些模式实现了速度性.安全性和可扩展性.在当下,Cloud Foundry.Heroku和Amazon Elastic Beanstalk等云应用程序平台都已经为部署12要素应用进行了优化. 12要素视应用程序为可独立部署的单元,企业通常将多个可协

AngularJS的五大特性

http://kkuang.net/awesome-angularJS-features/ http://blog.csdn.net/vking_wang/article/details/8817232

angularJS简介及其特点—— 五大特性,加快 Web 应用开发

AngularJS 是谷歌的一个 JavaScript 框架,旨在简化前端应用程序的开发. #1 良好的应用程序结构 通常情况下,我们编写 JavaScript 没有明确的结构.虽然在编写小应用程序的时候没有问题,但这显然是不适合于大规模的应用程序.使用 AngularJS,您可以通过MVC(模型 - 视图 - 控制器)或MVVM (模型 - 视图 - 视图模型)模式来组织源代码. AngularJS 是一个 MVW 框架,其中W代表可以用于任何项目.你可以组织你的代码模块,它可显著提高应用程序