« 依旧那么的过着收钱和牛皮癣 »

Abstraction and Modeling--抽象与建模

这个世界有很多信息,除去所有电子信息外,比如E-mail,语音邮件等,在生活中我们获得的信息如果量化,那将是我们的感觉器官每时每刻接受周围的数以百万计的信息。而我们的大脑负荷有限,所以我们大脑天生就懂得简化收到的信息,即“抽象”Abstraction

具体什么是抽象?即,识别和关注状况或物体的重要特性,淘汰掉所有非本质信息。

For example: 游览路线图(地图类),里面只标明了必要的道路,河流,山脉以及森林等等,而没有标明每一棵树,每一个房子长什么模样,每个路边广告牌写什么字,这叫抽象。因为人们看图只为了知道方向和具体方位,而路边的风景等其他的东西他现在不需要知道,要知道也是沿途去欣赏,而不是在这里看路线图。所以路线图把这些细节或者属性和内容都“淘汰”掉了,只留下此时此刻最重要的部分。

通过抽象来概况特征。
如果从一个抽象模型中剔除足够多的细节,那么它将变得足够通用,足以适应于多种情况或场合。
For example:高中生物经常讲细胞,但是老师最初讲的时候,没有人会说黑板上面的那个细胞就是我们体内的细胞。因为黑板上的那个细胞只是个抽象,只画出了“身体各种各样的细胞所共有的部分”,什么细胞核,细胞膜。而且形象也单一,但是足以可以用于教学。而具体到什么血红细胞的时候,就是对这个抽象类进行实例化,到时候细胞的外形,里面的功能器会多多少少的不一样。

人们习惯对信息进行分类处理。而难点在于怎么去分类。
For example:我要定义“鸟”。有4个条件:1 有羽毛 2 有翅膀 3 产卵 4 会飞
如果这4个条件加上来,我们会发现鸵鸟和企鹅将会被定义为"Non-Birds",因为他们不会飞。
但是他们确实又是鸟。所以我们去掉条件4,保留条件1 2 3
我们又会发现,条件3其实是多余。因为要不要条件3都不会影响“鸟”类的是非判断。所以可以简化成:
1.有羽毛 2 有翅膀
如果再简化。假设去掉条件1结果是什么情况?那么那些蝴蝶,飞机什么的都属于“鸟”类。
……
所以我们需要定义合适的规则集--不过于普遍,也不过于严格,而且没有冗余。

抽象的重用-----不是每接个项目就要重新来过,可以“借鉴”以前的项目抽象模型。

UML(Unified Modeling Language)统一建模语言,用图形标记作为沟通语言。经常是建模之后用UML语言进行表达,然后再针对UML语言进行编码。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。