对象——从现实世界的抽象(*)

关键词:   对象    抽象    状态    映射    静态


  • 对象和类

对象一词,我们可能会联想到一个物体。比如一支笔,一本书,等等。他们都可以称为对象。对象其实就是现实生活中常见的事物,每个事物都可以叫做对象。反过来讲,严格的说对象不能简单的叫做事物,它是对事物的统称。这是广义的对象。


在现实世界中,在我们人类的视角下,会对各种事物进行一个分类,比如动物类,景观类等。分类的目的是让我们更清楚的认识世界,从而管理世界,应用世界。按照对象的广义的解释,对应每个类中,类中的对象即被赋予了特殊含义,可称为狭义对象。特殊含义是指这些类中对象具有共同的特性,它们是类的实例化。 比如马是动物类的一个实例对象。 我们通常是先接触对象,然后观察它们的特点,再进行归纳总结,从而定义出对象的集合——类。
对象的特点包括两部分:一是它的状态(基本属性);二是它的行为(方法)。我们仍然以马为例。马的性别,年龄,体形,颜色等属于它的状态,而马奔跑、吃草属于它的行为。生活中有很多这样的例子,对象无处不在。哲学家们正是最先由生活中的对象而产生思考,并进行推理和联想。


  • 从上学起,我们便要学习数学这门课。
当你学到一定年龄,你会对数学有一个这样的认识:它好抽象!你可能会抱怨:这都是什么鬼符号?!(…4*2^(lim(lnN+3##22#))…)。 没错,数学的魅力正是在于它的抽象。它把生活中发生的事情进行(最)本质的抽象。通过抽象,数学计算中可以不必关注具体事物的状态和行为,而仅是对其抽象的东西进行运算,因为这样可以提高效率。在无数的数学运算中,必定蕴藏着某些思维方法,比如数形结合法,归纳法等。这些方法通过人类发展中的不断实践总结而形成。在本文中我们会提到这几个方法:抽象,联想,举一反三,映射。


我们开始把视角从数学调到程序语言上,准确的讲是面向对象程序编程(OOP)。(这里主要讨论Java)
应用之前的分析,OOP就可相当于一个虚拟世界。OOP中对象即是对现实世界对象的一个抽象,它也包括状态和行为(这里通常叫做方法)。对象属于类,是类的一个实例。Java中的类是广义的类,它不仅可以指一类具有共同特性的对象,也可以指一个要解决的问题,因为确切的说问题也可以被当作一个类。另外一个不同点是OOP中先有类,再有对象*(类中也可以无对象),而现实生活中我们总是先观察到一个对象,一般不会直接想到它是哪一类 的对象。


  • OOP中对象的状态和方法非常有趣。
状态,也称字段,数据成员,属性等。它描述对象的属性信息。我称它为静的东西。
方法,c/c++中也叫函数。它描述对象可以有哪些行为。我称它为动的东西。
在一个类中,通过一些动静的结合,可以想象到从程序语言到现实世界的映射。


类中有一个东西叫静态的(static)。如果要映射到现实世界的类,我联想到的是静态的即对应常态的。现实中一个对象常态是什么样的,就是说它经常表现出的状态和行为,区别于非常态。当然这种映射不是严格的,你可以联想到更多例子。
类中静态常量是指在另一个类中可以直接调用类而获取静态常量(前提是非私有)。静态方法类似。
而非静态常量指在另一个类中要想使用该类的成员和方法,必须创建一个该类的对象,然后用该对象调用其成员或方法,(通常使用对象的引用来调用)


暂时说到这里。下次将讨论现实生活中的联系,以及在OOP中是怎样运用的。
(我把这种从一个领域中的思维或关键字联想到另一个领域的过程叫做举一反三的广义化。)






注释:*1(标题)。指OOP中对象,是对现实世界对象的抽象。
*2(先有类,再有对象)。指要想创建一个对象,首先要有这个对象所属的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingpy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值