|
世间万物皆可被看做对象,而许多有着共同特性的对象都可以被归为一类。
小到沙粒,大到宇宙,都可以被看做一个对象。一个美女是一个对象,一个小蝌蚪是一个对象,一辆汽车是一个对象,一瓶芬达水蜜桃饮料也是一个对象。我们通常也说车类,鸟类,人类,或者资产阶级,屌丝们,恐怖分子,设备管理器,动作片。这些都可以看做是一个一个的类。
“对象”英文名Object,也叫“实例”Instance。“类”英文是Class,有时候也叫“类型”,Type。
类的概念是模糊的,在现实世界中看不到摸不着;而对象(实例)往往是看的见,实际存在于某个位置的。举个栗子!一张汽车的设计图纸是一个类,这时候你会疑惑,图纸是看的见的啊,其实所谓抽象看不到是指在实际操作使用的时候它是不是有着具体的功能。当这张图纸设计完整并通过审核之后,就可以上生产线,制造汽车了,最终卖个世界各地的车主。其中每一辆被生产出来的汽车就是这个类的对象,或者叫实例!
通过上面的例子我们明白了类与对象之间的关系了。
每个类都有着自己的属性(所谓的变量variable)和一些功能(所谓的方法function)。
在汽车类的这个例子当中,汽车有一定的速度属性,发动机功率属性,自身重量属性,剩余油量属性,水温属性,车辆损坏程度属性,当前的位置属性,车身朝向的方向属性等等等等等等等等。同时汽车有点火启动的功能,熄火功能,左转功能,右转功能,弹出安全气囊功能,天窗自动打开的功能等。
一旦一辆汽车实例(或者叫对象,我喜欢说实例Instance)被制造出来卖个车主,那么这个实例的所有属性都是独立的,其变化也是独立的不影响其他任何汽车的属性。举个栗子!我的汽车我非常爱惜,驾驶非常谨慎,保养也好,5年以后汽车引擎动力依然很棒没有太大降低,汽车磨损基本没有。邻家怪叔叔开车天天天天的折腾,如今他的汽车已然像一堆废铁,磨损严重。
上面这个例子说明虽然来自于同一个类的多个实例有着相同的属性,并且属性初始值一致,但之后的变化是格子独立互不干涉的。
好了,上面我扯这么多干什么用下面我们来说下程序到底是个什么东西。程序就是由多个类创建出来的许多实例组成,每个实例之间相互通信,从而形成具有一定功能或者模拟出一定的结果的这么一档子事!
我们要设计一个模拟交通集群运转的程序,首先设计多个类,有救护车类,警车类,卡车类,自行车类等等。然后每个类创建出100个实例,把这几百个实例随机放置到一个城市的每一个角落,好了,保持程序运转10个小时。
之前我们说了每个汽车都有磨损度这个属性,当汽车遇到红绿灯,调用停车方法,遇到水沟,调用转弯方法,遇到自行车,调用减速方法,遇到前面忽然横行的卡车,没办法,只能调用碰撞方法,碰撞方法根据碰撞的严重情况直接对磨损程度属性进行修改。这样程序运转一段时间之后,我们看到每个汽车的磨损程度有发生了改变。
如果对上面的这个模拟程序进行可视化,比如给汽车添加一个模型属性,给碰撞方法添加一个粒子效果,把磨损程度属性与模型外观联系起来,就是一个3D游戏程序了。
程序员是干什么的,就是设计这个汽车类。其实还有个叫做“客户程序员”,说白了就是客户端程序员与引擎组程序员的关系。客户程序员是干什么的,就是直接拿过汽车类,给他创建N多的汽车实例,同时还得规定哪个汽车实例在城市的什么位置,以什么样的方向速度行驶。
这个话题文章写不完,不过对于程序空白的朋友们来说我想是有一定帮助了。
微信订阅号搜索“风之神韵”,关注随时获取更多教学信息。
http://i.youku.com/u/UMTE5MzA2NDA0 |
|