面向对象分析和设计

一本书主要内容

@为什么要学这本书

这本书讲得内容是UML和模式的应用,这本书和任何一本书一样,只是工具,通过工具的学习,了解其背后的思想,本书想你传达的是对象思想,学习和锻炼对象思想,是进行所有其他事物的前提,我们怎么到达呢,想老子的大道一样,也是有一个分析和领悟的过程,这本工具书也就是帮你完成这样的过程,祝你成功吧。

@UML对象思想

UML是一种标准的建模工具,我们前提是有了对象思想,有了思想我们要表达,我们当然要通过标准的工具表达,所以常用的UML表示法和使用方法,我们还是要求必备的,不为别的,不是为了工具学习而学习,我们一切的核心就是你脑海中的对象思想,所以请记住对象思想,对象思想,对象思想,核心是对象思想,一切的中心就是核心思想,对象思想就是众妙之门!啊,对象思想就是道,属于我们程序员的道。

@OOD的原则和模式

原则和模式都是语言上表达的不同方式,背后的思想是一样的,说俗话一点就是一些参考意见一些参考的标准一些参考的经验,当然我表达本身有局限性在里面。我们只能这么去理解,剩下的靠你自己悟性吧,因为不能在通俗了。

所以叫原则也好叫模式也好,都是对于"道"的不同表象,我们的关注不在于此。

如何为对象分配职责?各个对象之间该如何的协作?什么样的类该做什么样的事情?这些都是系统设计中的关键问题,本书要讲授的是作为经典OO设计之象征的职责驱动设计。同时,某些这对设计问题的,经过反复验证的解决方案,可被表示为最佳的实践的原则、启示或者模式,及问题-解决方案公式,这些公式是系统化的、典范的设计原则。本书将会通过讲授如何应用这些模式或这原则,是读者更快的学习熟练使用这些基本的对象设计习惯用法。

@案例研究

本书对OOA/D的介绍是通过一些贯穿全书的案例研究来阐述,并且充分深入到分析和设计中,考虑和解决了显示问题中令人生畏但必须面对解决的细节。

@用例

OOD(以及所有的软件设计)与作为先决活动的需求分析具有紧密的联系,而在需求分析中也通常包含了用例的编写,因此,尽管这些主题并非是特定于面向对象的,但也会在案例研究中对其进行介绍。

@迭代开发、敏捷建模和敏捷UP

假设从需求到实现会涉及众多可能,那么开发人员应该如何进行下去呢?需求和分析和OOA/D需要在某种开发过程的语境中进行描述和实践。在这种开发过程中,使用著名的统一过程和敏捷方法作为开发过程的样例,并在这一过程中介绍需求分析和OOA/D的主题,然而这些分析和设计的主题都是通用的,并不会因为过程的不同而变化,记住这点。

@其他重要技能

本书只是一个侧面,并不是软件大全,其主旨是对OOA/D、UML和迭代开发进行介绍,同时会涉及相关主题。构建软件还包括其他的技能和步骤。例如可用性工程、用户界面设计和数据库设计等都是成功的关键,所以不要做井底之蛙从一个侧面看软件,软件我们可以看很多侧面,设计和分析,架构和可行性,这些都是我们要去学习的,每个侧面有不同的高度,我们虽然不能够全面做到,但是至少要明白这样的一个道理。

二、明确我们学习本书,最重要的目标

在OO开发中,至关重要的能力是熟练的为软件对象分配职责,这是最重要的目标,在本书中我们会介绍OOA/D中大量的活动和制品以及大量的原则和指导思想,但是记住这些都是以什么为核心的,记住我们的目标就好,记住我们的大道-对象思想<熟练的为软件对象分配职责>.

本书总结了9个侧面,提供了我们学习的过程。

三、什么是分析和设计

记住简要的两句话,分析是做正确的事情,设计是正确的做事。所以分析是对问题领域的调查研究,正确的发现问题,例如应该如何使用?他有什么样的功能?等等。分析一词范围很广,我们要知道是需求分析还是面向对象分析。

设计某种意义上是可以理解为解决方案,而不是其实现。很多人吧设计等同于了实现,更为精确的说应该是解决方案。设计思想通常排斥底层的细节,但是实现正是有这些细节来构成的,实现表述了其设计思想。

四、什么是面向对象分析和设计

面向对象首先来说是一种思维模式,至于是谁提出的?是维特斯根坦提出的?我们不去关心这个,我们更在乎是这种抽象思维符合我们人类的认知世界的到目前位置最好的方式。

在面向对象分析中,强调的是在问题领域中发现和描述对象(某一个侧面你可以理解为概念)。

在面向对象设计中,强调的是定义软件对象以及他们如何协作以实现需求。

完成了分析和设计,最后我们就可以用特定的语言例如JAVA来完成设计上的思想一实现需求。

五、总结

我们程序员要做的就是利用面向对象思想,把问题域的客观世界利用面向对象思想映射到计算机世界,每个世界当然表现的形式有所不同,但是背后的逻辑形式是一致的,所以我们要对客观世界进行反思,反思背后的逻辑,然后将这种逻辑用计算机世界的具象表现出来,怎么做到和发现背后的共有的逻辑形式呢?利用面向对象思想吧。如果非要再进一步钻到面向对象思想里面去,想知道是怎么一回事,我估计你可以把维特斯根坦的逻辑哲学论好好研究研究了,但这不是我们的重点,既然前人已经得出了非常宝贵的经验并且走总结成了原则和模式,我们为什么不能复用呢?这些低层次的东西我们可以复用,要不然我们要做得事情太多了,我们只能在有限的时间呢作出做大效果的事情!一个人想精通所有,不可能,并且你也做不到!所以团队的力量也就被我们再次强调起来,这背后的思想我们是不是要懂呢。

抱着什么是面向对象、如何做到面向对象的疑问来学习前人已经给我们总结好的原则、模式和方法,来去理解和感悟吧,祝你旅途愉快!

相关推荐