怎样理解对象?

一、万事万物皆对象--理解对象模型
对象实际上是看待事物的一种方式。它只是我们从现实世界中抽象出来的一种模型,但是这个模型还是有它的定义和概念的。

1、对象的英文单词是“Object”,它有三个方面的意思:
(1)目标,目的,宗旨
(2)物,物体,物件
(3)对象,客体,客观


    仔细琢磨下这三个意思。首先它有“目标”的意思,也就是说这是个实际的东西,我们可以对它做些操作,它是一些动作的受体。其次就是第二层意思,它是物体、物件,现实世界中的任何实际事物或称为“实体”的东西都可以叫作“Object”.第三层含义是哲学上的一个概念,比前两层含义都要抽象,这也是我们所取的“Object”的意思,它就是指一种客观事物的存在,如桌子、人、狗、鱼,蓝天,白云……


    对象是件“东西”,什么“东西”都可以称之为对象;你可以对一个对象施加作用(属性->特性),对象会发生一些事件(变化->方法)

2、现实世界中一些具体的对象

    举个栗子,比如一台笔记本电脑,我们将它视为一个对象无非是为了能够更加抽象地描述它,这在编程的过程中很重要,来看看它有哪些需要抽象出来的特性吧~
    在生活中大家应该很熟悉,当你在买一台新的笔记本电脑时,主要考虑的是什么?———笔记本电脑的屏幕大小、屏幕形状、机身总重量、硬盘空间、CPU频率、操作系统……这些都是“笔记本电脑”这个对象所固有的一些性能或制造的参数,这些可以标识出这台笔记本电脑是否受到顾客的欢迎。
    但是,对于现实世界中的一台洗衣机,要考虑的特性就完全不是上面的那些参数和特性了,更多的是会去关注它的容积、耗电量、噪音大小等。还有,对于一架航天飞机,它要考虑的特性会更多,对于一支钢笔,一把伞,针对它们要考虑的就会相对要少一些……从这些例子来看,世间万物的复杂程度不同,我们对它们的关心方面就不同,相应地从它们这些具体事物中抽象出的对象也会各有差别。

3、由现实世界中的事物抽象为对象


    来看看下面这张图,图中列出了3种类型的电脑,以及我们对3个“对象”所关注的特性。相对而言,对于台式机更注重性能,不会关心它的重量,因为它不是为了方便移动而设计的。而对于平板电脑呢,相比较台式电脑而言,没有那么关心它的性能,而是看它是否方便携带及电池的续航能力。而笔记本电脑,考虑因素就处于这两者之间。
    这个例子,向大家说明了如何将现实世界中的各种事物抽象为一个个对象。做法很简单,只要它是一个独立的事物,找出所关注的那几个方面的特性,把这些特性提取出来,就得到了一个抽象之后的“对象”。

4、对象之间的差别--事物的属性
    (1)何为对象的属性?
  只知道什么是对象还不行,世界上有无穷多种事物,它们各有特点,互不相同。必须有个办法将我们抽象出的对象互相区分出来才行,这样才能够真实地对现实世界中的事物进行合理的建模与抽象。这个用于区分各个对象特征的部分就称为属性,不同的对象具有不同的属性,借属性这个概念来使各个对象能够得以区分。


    (2)不同对象的属性值不同
    举个例子,如果发现两个笔记本电脑对象的屏幕尺寸大小不同,则它们必然不是同一个对象。
    


    (3)不同对象具有不同的属性
    举个例子,笔记本电脑和平板电脑,其中屏幕大小是两者都有的一个共同属性。它们也具有不同的属性,笔记本电脑的键盘属性,平板电脑的触摸板的属性,等等。

    (4)属性与对象间的关系
    举个例子,三角形与正方形都有一个共同的属性--边长。圆形是不具有边长的,只有名称为“直径”的属性。三角形与正方形虽然都具有“边长”,但边长的值并不相同,另外,我们也知道三角形与正方形,边长对它们的一些其他的特性,如周长、面积等的含义是不同的。这些均代表了不同的对象之间属性的关系,可能具有不同的属性或者不同的属性值。


  

5、对象与属性的关系
    对于任何一个属性都具有三个方面:属性所属的对象、属性名称、属性的值。只有这三个方面都是相同的,才能判定这两个属性实际上属于同一个。比如,两台笔记本电脑的屏幕大小都是14寸,这才说明“屏幕大小”这个属性是属于同一个。


二、万物皆有变化——对象的方法
对象是由现实中的事物抽象而来的。我们知道世界上亘古不变的事物几乎是没有的。世间万物都处在不断变化中,当所要关注的对象发生变化时,就必须要有一种相应的办法来描述并反映对象的这个变化的过程和想象。

1、对象的方法定义
    属性只是固定的、没有变化的对象特征而已。但现实世界中的事物都处在不断发展变化中,必须有某种方式来描述这种变化。所以就有了“方法”,它所描述的是对象可以发起的动作,或者是对象可以做的事情等。
   (1)什么是方法?
    举个例子,将一只猫抽象为一个对象——Cat。对于这个对象,我们现在只关注它所拥有的其中一个属性——体重(Weight)。猫能吃老鼠,这样Cat对象就会有一个方法——EatMouse().用这个方法表示猫吃老鼠这个变化过程,在这个过程的前后猫的体重会有所变化。反映到我们抽象后的对象中,就是这个事实,Cat在执行EatMouse()这个方法之后,属性Weight的值发生了变化,这就是对象的变化——方法。
    事实上,方法的定义是这样说的:它是相应的对象可以做的、但不一定会真正去做的事情。从这个定义上来看,上面的EatMouse()方法是为Cat对象所有的,如果在定义一个对象——狗(Dog),那么它就不可以拥有EatMouse()方法。

2、方法与对象间的关系

    不同的对象所拥有的方法可能不一样,但方法并不是一个对象所专属的事情。

    如下图:

猜你喜欢

转载自blog.csdn.net/qq_39178993/article/details/81325527