陈丹 廊坊师范学院信息技术提高班 十二期

UML对于我来说其实是完全陌生的,所以我觉得光看视频效率这个方法效率不高,有效性输入不牢固,所以我找了一本UML入门级别的书,是由谭云杰著的《大象——Thinking in UML》,为什么选择这本书呢?因为我找了很多书评,有一些书是由外国大师著写的,对于一些基本功扎实的大牛来说固然很棒,但是对于菜鸟来说,有太多的概念堆积,这些概念更是晦涩难懂的,而且忽略了一些思想方面的东西,所以不太适合。而《大象》更多的是对技术背后的思想和方法的剖析。让我们站在另一个角度去了解这项技术。看了第一部分的准备篇,对于我这个小菜鸟来说,真本书讲的太好了。总结一下,分享给大家。

给大家提一个问题:我们为什么需要UML?其实学了一年的计算机了,当接触到一个新的领域,我从来都没有过多的思考。让我学习,我就埋头苦学,其实,在学习中,多给自己提一些问题,带着问题去学习的效率可能会更高。之前米老师总说编制知识网,找出知识节点之间的联系,这就是我们需要思考的地方。从上个假期,老师就在给我们渗透面向对象的设计思想,其实要想做好面向对象设计就需要用到UML。

再谈面向对象还是面向过程

面向过程,我们想到的是:机构化程序设计,DFD图,E-R模型等

面向对象,我们想到的是:继承,封装,多态,复用等技术

但其实,上述并不是他们本质的区别,只是表征上的不同

Grady Booch说过一段流传甚广的话:我对面向对象编程的目标从来就不是复用。相反,,对我来说,对象提供一种处理复杂性问题的方式。这个问题可以追溯到亚里士多德:您把世界视为过程还是对象?在面向对象兴起运动之前,编程以过程为中心,例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点,有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统——我认为,这才是面向对象编程运动的真正胜利。

本质上:

1面向过程:

世界的一切都不是孤立的,他们相互紧密联系在一起,缺一不可,相互影响,互相作用,并形成一个个具有严格因果律的小系统;而更多的小系统组成更大的大系统,所有小系统也是紧密和不可分割的

1.1面向过程的分析方法:

找到过程的起点,然后顺藤摸瓜,分析每一个部分,直至达到过程的重点。

如下DFD图所示:

1.2面向过程遇到的困难

面向过程面临太多的困难,我们只用这个方法的时候,假定外部环境是稳定的,但是当需求处于一个不断变化的过程中,这个系统很难做到随需求灵活应变,因为系统是环环相扣的,牵一发而动全身

2面向对象:

将世界看作一个个相互独立的对象,相互之间无因果关系,只有在某个外部力量驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了世界的一个“过程”,没有外力的情况下,对象是保持“静止”的状态。

微观角度:(这部分,作者联系实际,打的比喻特别便于理解)

面向对象有着一系列奇妙的特性;对象有着坚硬的外壳,从外部看来,除了它用来与外界交互的消息通道之外,对象内部就是一个黑匣子,什么也看不到,这被称为封装;对象可以结合在一起形成新的对象,结合后的对象具有前两者特性的总和,这称为聚合;对象可繁育,产下的孩子拥有父辈全部本领,称为继承;对象都是多面派,它会根据不同的要求展现其中一个面,这就是接口;多个对象可能长着相同的脸,但是背后却有不同行为,这就是多态;

宏观角度:

对象是“短视”的,他不知道它身处的整个世界是怎么回事,也不知道他的行为是如何贡献给这个世界的。它只知道与它有着联系的身边的一群小伙伴(依赖),并与小伙伴间保持着信息交流的关系(耦合),即便在伙伴之间,每个对象也仍然顽固地保护着自己的领地,只允许其他人通过它打开一个小小窗口(方法)进行交流。

然而对象也喜欢群居,并且总是“物以类聚,人以群分”。这些群居的对象有着一些相似的性质,他们依靠这些相似的兴致来组成一个部落。对象寻找相似性质并组成部落的过程称为抽象,部落称为类;部落里的每个成员既有共同的性质,又有自己的个性,我们只有把特有的个性赋给部落成员,才能区分它们并使他们活动起来,称为实例化。

2.1面向对象的困难

如何跨越现实世界和对象世界中间的鸿沟——UML建起一座桥梁

还记得之前那个问题吗? 我们为什么需要UML?

自己的学习心得:

之前对于面向对象和面向过程,我都没有思考过为什么现在软件的大势是面向对象的设计思想,他们之间到底有什么不同,当时认为他们只是两个不同的方法,但是都可以解决相同的问题,现在我明白了,面向对象是更加简便的,更加贴近人类思考的一种编程方式。记得学习自考的时候,里边有一句是:如果人类思考的层次多余七层的话,就比较难解决问题。而面向过程就会出现这样的问题,所有的因素都要考虑,所有的系统都是相挂钩的,改动一个,所有的都需要变动。而面向对象,就简单的多了,对象都是相对独立的。每个对象之和有限的其他对象有关系。不需要从整个系统的角度来分析,这就使得我们分析问题时所需考虑的信息量大大减少,自然而然也就降低了系统的复杂程度。现在在体会Grady Booch说的那句话,真的很有道理。

版权声明:本文为博主原创文章,未经博主允许不得转载。

哪怕前方的路会充满坎坷,但为梦想而拼搏的人会永不言败

陈丹 廊坊师范学院信息技术提高班 十二期

相关文章:

你感兴趣的文章:

标签云: