标签:文件 相同 attribute 科研 继承 工作 录音 隐藏 告诉
1.对象
在客观世界里,任何一个事物都可以看做一个对象(object),或者说我们的世界是由无数个对象组成的。对象可以是自然的物体,如天安号、诺亚方舟等,也可以是一些逻辑结构,如联合国、C++语言等,甚至可以是一道数学习题,一篇科研论文,明天的学习计划等。对象可大可小,这得看你想做什么事情。例如学校是一个对象,一个班级也可以是一个对象,一个学生也可以是一个对象。 任何一个对象会具备两个要素:一个是静态特性,我们把这种静态特性称为属性(attribute);另外一个是动态特性,我们称之为行为(behavior)。拿一个学生来说,他的姓名、性别、年龄等是在一段时间内都不会发生变化的,这便是他的静态特性,即为属性;而他会在不同时间里做不同的事情,如早晨起床,晚上睡觉等,这些就是他的动态属性,即行为。如果想控制这个同学的行为,我们可以告诉他一个消息(message),比如说放假了,那如果他不傻,则不会到学校去了。 一个对象也许会有多个属性和行为,而外界通过消息来控制行为,这也是我们现实生活中事情的一般模式。在C++中的一个对象中,属性主要通过数据来体现,而行为主要通过函数来体现。消息往往是调用此对象的公有成员(一般是公有函数),我们把可以受外界消息控制的公有成员叫做这个对象的对外接口。 使用面向对象程序设计去设计一个复杂的软件时,首要的问题是考虑这个软件系统由那些对象组成,然后考虑这些对象要有哪些属性和行为。知道了这些之后设计出对象的抽象——类。而有些类是经常用到的,于是就有了类库,每当要用到时在头文件里包含相应的类库即可。
2.封装与信息隐蔽
在C++中,可以通过对象成员属性的定义来实现对象的封装处理,即把他的部分数据和功能对外界屏蔽起来,使外界不用知道,甚至不能知道。比如一台录音机,它被看见的只是外面的外壳,而里面的机械控制和电路板对使用者是不知道。使用者知道只是几个按键都有什么功能。 这样做有两大好处:一是大大降低人们使用对象的难度,使用者完全不用理会里面是怎样实现的。如对于录音机,使用者只需知道按下录音键后,录音机便开始录音。二是可以对知识产权进行保护,通过细致的设计,可以把想隐藏的隐藏起来,只留些接口给类的使用者,使用者无法对现有功能进行修改,也不能知道现有功能是如何实现的,从而实现信息隐蔽。对外的接口一般是函数名,这个在以后的学习中我们会详细的介绍。
3.抽象
在程序设计中,我们经常见到抽象这个词语,其实抽象的概念并不抽象,我们已经对抽象司空见惯了。比如说“人”这个词,我们骂人是会说“某某不是人”。也就是说无论张三、李四还是王五都可以称为人,人就是对张三、李四、王五的抽象。又如只要有中国国籍的人我们就能把他称为中国人,不管出生地在哪里,中国人这个词语就是通过抽象得到的。 抽象的过程就是寻找有关事物的共同点,抽象的作用就是表示同一类事物的本质。其实在语言中的其他地方我们早已体现了抽象的作用。如“int”是对所有整形数据的抽象。在面向对象的C++中,有一个最重要的抽象就是类,类是从想要的对象中抽象得到的。也就是说类是对象的抽象,而对象是类的特例。
4.继承和重用
继承和重用是C++的,也是面相对象的重要特性,它们能使面向对象程序设计在设计大型程序时,可以更加的高效。这就像是一个汽车厂想生产一款新型的汽车,一般不会从头开始设计,而是选择某一款汽车为基础,再增加一些新的功能,就研制出一款型的汽车。C++与C的不同之处有些方面也在于此。 如果在软件开发中已建立了一个名为“A”的类,又想建立一个名为“B”的类,而后者与前者基本相同,只不过是增加了一些属性或者功能(即行为)。这就是面向对象程序设计中的继承机制。举个例子,我们先设计一个 “Person” 类来表述人的特性,他的属性有姓名、年龄、性别等,如果我们还想设计一个“Student”类来表示学生的特性,我们只需在“Person”类的基础上再添加学号、班级等属性即可,这样便大大简化了程序设计的步骤。 可以看到,C++的继承机制可以方便的利用已有的分类建立一个新的分类,这样就可以重用已有软件部分甚至是一大部分,大大减少了编程的工作量。另外,我们不仅可以利用自己过去所建设的类,还可以利用别人建设的类或者是存放在类库里的类。这样便大大减少了软件的开发周期,对大型软件的开发有着重要的意义。
5.多态性
标签:文件 相同 attribute 科研 继承 工作 录音 隐藏 告诉
原文地址:http://www.cnblogs.com/zhengxuefeng/p/7514459.html