面向对象分析和设计

目标:

  • 描述本书的目标和范围。
  • 定义面向对象分析和设计。
  • 阐述一个简单的OOA/D例子。
  • 综述UML和可视化敏捷建模。

本书的主要内容

  • UML和对象思想:本书重点阐述对象设计。本书也将探讨如何在OOA/D中应用UML,并涵盖经常使用的UML表示法。
  • OOD的原则和模式:本书将会讲授作为经典OOD之象征的职责驱动设计。同时,某些针对设计问题的、经过反复验证的解决方案可以被表示成为最佳实践的原则、启示或模式本书会通过介绍如何应用模式或原则,使读者更快地学习和熟练使用这些基本的对象设计习惯用法。
  • 案例研究:本书对OOA/D的介绍是通过一些贯穿全书的案例研究来阐述的。
  • 用例:OOD与作为其先决活动的需求分析具有紧密联系,而在需求分析中通常包含用例的编写。
  • 迭代开发、敏捷建模和敏捷UP:需求分析和OOA/D需要在某种开发过程的语境中进行描述和实践。在这种情况下,使用著名的统一过程的敏捷方法作为迭代开发过程的样例,并在这一过程中介绍需求分析和OOA/D的主题。

总之,本书帮助学生或开发人员:

  • 应用原则和模式来创建更好的对象设计。
  • 基于作为示范的UP敏捷方法,在分析和设计中迭代地遵循一组公共的活动。
  • 创建在UML表示法中常用的图。

本书并不是软件大全,其主旨是对OOA/D、UML和迭代开发进行介绍。

最重要的学习目标

OOA/D的荒岛技能:熟练的为软件对象分配职责。因为分配职责是必须要执行的一项活动,并且它对软件构件的健壮性、可维护性和可重用性具有重要影响。

本书描述并应用了对象设计和职责分配的9项基本原则。为了便于学习,将其组织奇拉并成为GRASP。

什么是分析和设计

  • 分析:强调的是对问题和需求的调查研究,而不是解决方案。“分析”一词含义广泛,最好加以限制,如需求分析(对需求的调查研究)或面向对象分析(对领域对象的调查研究)。
  • 设计:强调的是满足需求的概念上的解决方案(在软件方面和硬件方面),而不是其实现。与“分析”相同,对“设计”一词最好也加以限制,如面向对象设计或数据库设计。

有益的分析和设计可以概括为:做正确的事和正确的做事。

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

在面向对象分析过程中,强调的是在问题领域内发现和描述对象。

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

在面向对象编程过程中,会实现设计出来的对象。

简单示例

  • 定义用例

需求分析可能包括人们如何使用应用的情节或场景,这些情节或厂家可以被编写成用例。

用例不是面向对象制品,而只是对情节的记录。但用例是需求分析中的一种常用工具。

骰子游戏:游戏者请求掷骰子。系统展示结果:如果骰子的总点数是7,则游戏者赢;否则游戏者输。
  • 定义领域模型

面向对象分析关注从对象的角度创建领域描述。面向对象分析需要鉴别重要的概念、属性和关联。

面向对象分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念或对象。

领域模型并不是对软件对象的描述,它使真实世界领域中的概念和想象可视化。因此,它也被称为概念对象模型。

  • 分配对象职责并绘制交互图。

面向对象设计关注软件对象的定义--它们的职责和协作。顺序图是描述协作的场景表示法。它展示出软件对象之间的消息流,和由消息引起的方法调用。

软件对象设计和程序可以从真实世界领域中获取灵感,但它们并不是对真实世界的直接建模或模拟。

  • 定义设计类图

除了在交互图中显示对象协作的动态视图外,还可以用设计类图来有效地表示类定义的静态试图。这样可以描述类的属性和方法。

与领域模型表示的是真实世界的类,设计类图表示的软件类。

要注意的是,尽管设计类图不同于领域模型,但是其中的某些类名和内容还是相似的。从这一方面讲,OO设计和语言能够缩小软件构件和我们所设想的领域模型之间的差距,即实现低表示差距。

什么是UML

统一建模语言是描述、构造和文档化系统制品的可视化语言。

应用UML的三种方式

  • UML作为草图: 非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。
  • UML作为蓝图:相对详细的设计图,用于:
    • 逆向工程,即以UML图的方式对现有代码进行可视化。
    • 代码生成。
  • UML作为变成语言:用UML完成软件系统可执行规则说明。可执行代码能够被自动生成,但并不像通常一样为开发者所见或修改;人们仅使用UML“编程语言”进行工作。

敏捷建模强调了UML作为草图的方式。

应用UML的三种透视图

同一种表示法可以用来描述模型的三种透视图和类型:

  • 概念透视图:用图来描述现实世界或所关注领域中的事物。
  • 规格说明(软件)透视图:用图(使用与概念透视图中相同的表示法)来描述软件的抽象物或具有规格说明和接口的构件,但是并不约定特定实现。
  • 实现(软件)透视图:用图来描述特定技术中的软件实现。

不同透视图中“类”的含义:

  • 概念类:现实世界中的概念或事物。在概念或本质透视图中使用。UP领域模型包含概念类。
  • 软件类:无论在过程还是方法中,都表示软件构件在规格说明或实现透视图中的类。
  • 实现类:特定OO语言中的类。

可视化建模的优点

图可以帮助我们更为便利地观察全景,发现软元素或分析之间的联系,同时允许我们忽略或隐藏旁支末节。

历史

参考资料

results matching ""

    No results matching ""