搜档网
当前位置:搜档网 › 面向对象编程思想小谈——类和对象

面向对象编程思想小谈——类和对象

面向对象编程思想小谈——类和对象
面向对象编程思想小谈——类和对象

面向对象编程思想小谈

——类与对象

作者:蒋涵鑫

目前我们的C++学医已经进入了面向对象的编程阶段。虽然大家已经了解了类和对象,但是这并不意味着大家就真正的已经了解了面向对象的编程思想,对于一个合格的程序员来说,掌握面向对象的编程思想是极为重要的,但是对于书上的很多类似于大道理的理论,很多人只能够浅尝辄止。有鉴于此,今天我将会用另外一种方式来带着大家说说这个非常重要的面向对象的思想。

在面向对象的思想中有一句非常经典的话:“万物皆对象”,这句话怎么去理解它呢?我们以一家超市为例,大家都去过超市,那里摆满了大大小小五花八门的商品,这些商品我们就把它称之为对象,对象其实就是一些客观存在的物体。而“万物皆对象”的含义就是这个世界上的大大小小的东西,只要是一个客观存在的物体,它就是一个对象!当然我这里说的物体并不仅仅是指商品,包括我们自己本身也是一个客观存在的物体,也是一个对象。

对象是对于某一些物体的统称,例如几个杯子,它们都是杯子,而我们也很习惯的把它们叫做杯子。而这些杯子,就称之为对象。而在这些杯子当中的某一个具体的杯子,例如四个杯子分别编号甲乙丙丁,它们其中某一个具体的杯子,例如乙杯子,就被称之为一个实例。所以对象和实例最大的区别在于对象可以指代很多同属于一种类型的事物,而实例只能够用于描述一种类型的事物当中某一

在了解了对象和实例的概念之后我们不得不谈一谈一个很重要的概念:类!所谓的类其实在我认为应该有两种合理的解释。第一种叫分类,不得不承认,开一个超市,即便是小超市也是很艰难的,因为超市可以出售的物品相当之多!商品多了,我们就得需要对这些商品进行管理。什么叫管理,就是将这些商品合理的组织起来,从而达到某种目的。超市对商品进行管理目的是为了能够让顾客方

便的找到所需要的物品,然后付账走人!这对于顾客和超市老板来说都是很有必要的。那么如何才能够合理的管理这些乱七八糟的商品呢?分类!对!就是对这些乱七八糟的商品分类,分类摆放才能够有效地对这些商品进行管理,从而方便顾客找到它,这样做也是为了使得在商品的管理上变得简洁而高效。试想一下如果不对商品进行分类,那当我们点算文具的剩余数量时是否还要点算一下卫生间或者是洁厕宝的数量呢?当然不管是什么样子的东西,点算的量也是很庞大的。一个超级市场的货物基本来说一天之内是点算不完的,当然这还是属于小超市,大润发那种大超市就更加不用提了……因此对于货物的管理我们需要对它们进行分类,分类之后我们就可以把这些东西用一个类型来描述,这就是类的第二个意义所在——类型。生活中类型其实无处不在,例如包子、水饺、花卷、麻团这些都是吃的,吃的东西我们都可以将它们摆放到食品区,这样顾客需要买食物的时候就可以直接去食品区找,而不是到生活用品区打转。而食品就是这些对象所属的类型。我们可以叫它食品类;再例如钢笔、铅笔、橡皮、胶带这些,都是文具,因此我们可以将它们摆放到文具区,而文具就是这些对象所属的类型,我们可以叫它文具类。

类有什么样的特点呢?类最大的特点在于抽象。类是一个很抽象的概念,什么是抽象,就是看不见摸不着的,就好像别人和你说灵魂,你并不能够真正地看到你的灵魂一样。类为什么抽象,原因在于类是我们在对各种各样的对象,例如超市中的商品进行分类之后而产生出的对这同一种类型的事物的描述,它仅仅只是一个用于描述这些同种类型的事物的手段,所以它很抽象。但是我们也可以把它很形象的表示出来,例如我们可以使用标语牌,写上“食品区”,将它挂到食品区的墙上,而不是让你自己去记住哪些商品在哪个区,这对于顾客来说这是一种很无理的要求。但是,虽然它被人们利用文字、图片等工具形象的表示了出来,但它依然是看不见摸不着的。因此类的抽象性毋庸置疑是它最大的特点所在。

对于类我们可以换一种准确的说法,将具有共同属性和共同处理方法的对象进行分类,得到的类型,就称之为类。当然这是我一家之言的说法,但是这也并不主观。类其实就是这么产生得到的。什么是属性,用于描述对象的特征的信息我们就称之为叫属性。例如商品的价格、所属的分类、商品的货源等,再例如某一种商品,例如人自己,有姓名、身高、体重、年龄等,这些用于描述我们特征

的信息就称之为属性。在C++中,通常我们使用成员变量描述。(因为变量是用于存放属性值的容器,而它在类中则作为类的成员,故此称为成员变量)什么是方法,方法其实就是这些事物解决某一些问题的方案。例如杯子,当我们渴了的时候就会想喝水,要喝水怎么办,就会想到杯子!而杯子所提供给你的方法就是盛水和喝水。当然我并不排除有些杯子真的设计的很漂亮,这些杯子还会给你提供第三种方法——观赏!这些具体的,用于处理某些问题的,并且是由这一类事物所提供的方法,就称之为该类对象的方法(在C++中称之为成员函数)。

那么类和对象是什么样的关系呢?百度百科上的回答是:“对象是类的实例,类是对象的模板。”这句话其实就是具体和抽象的关系,客观存在的这些事物就是一些对象,而把这些对象分类之后,所形成出来的类型就是类。因此换句话来说,对象是类的具体表现,而类是对象的抽象描述。

那么在程序设计的世界中我们是如何描述类和对象的呢?现在很多的高级语言例如C++、Java和C#,它们都支持面向对象的特性,而面向对象的基础就是类和对象。所以在程序设计的世界中我们通常会通过构造类和对象来说明它们之间所存在的联系。在前面的篇幅中我提到过一句很重要的话:“将具有共同属性和共同处理方法的对象进行分类,得到的类型,就称之为类。”相信大家应该还有所映像吧!在这句话中,提到了两个很关键的东西,一种是属性,一种是方法。所谓的属性其实就是一些用于描述对象的数据,例如你的姓名、身高、体重……而这些东西在程序设计中都是通过变量进行保存的,因此属性其实就是成员变量。所谓的方法是这类对象所对外或者对自己内部提供的一些解决事情的方案,例如我们可以利用杯子盛水、喝水。相信大家在经过了一个学期的学习之后应该可以知道在程序设计的世界中通常我们会将一些处理事情的方法(也称“算法”)使用函数进行打包,这样其他人在解决问题的时候只需要调用这个函数就可以解决问题了,而并不需要知道函数中的代码是如何编写的,即这件事情是怎么去解决的。(很多的书上会把这种特性称之为“对用户透明”)这些方法在程序设计的世界中全部都演变为了函数,所以在其他的一些高级语言中例如C#和Java,它们将函数直接称之为方法。而这些函数也可以作为类的成员,因此也称成员函数或者成员方法。

类和对象之间的关系,可以说我们并不能很笼统的概括起来,因为考虑的角度不一样,出现的关系也就很不一样。例如在数量上,一个类可以有很多个对象。例如我们在C++中做int a,b,c,d;这四个变量都是属于整数类型的。而一个对象其实也可以有好几个类。例如包子它可以属于包子类(这一类对象全是包子),它也可以属于农副食品类,它也可以属于食品类。这是在数量关系上的。再例如在逻辑上,包子可以是包子类的一个具体的体现,而包子类就是对这些包子的完整的描述……所以类和对象有什么关系在我个人而言是不能太说明白的,当然这只是角度的问题罢了,一百个人有一百种想法,一百种角度,这是很正常的事情。

文档说明:本文档纯系原创,用于淮阴师范学院银舟计算机协会技术部内部培训使用,如有雷同,纯属巧合。

相关主题