[size=large][color=red]在OO开发中,至关重要的能力就是熟练地为软件对象分配职责。[/color][/size]
《UML和模式应用》这本书给我们了9中基本指导原则,并将他们称之为GRASP,这些原则都有各自的名称,如信息专家和创建者等。
首先我们需要明确一点,什么是分析和设计:
[b]分析[/b]强调的是对问题和需求的调查研究,而不是解决方案。例如,如果需要一个新的在线交易系统,那么,应该如何使用它?它应该具有哪些功能。
[b]设计[/b]强调的是满足需求的概念上的解决方案,而不是其实现。
那么什么是面向对象分析和设计呢?
在[b]面向对象分析[/b]过程中,强调的是[color=blue]在问题领域内发现和描述对象(或概念)[/color]。例如,在航班信息系统里包含飞机、航班和飞行员等概念。
在[b]面向对象设计[/b]过程中,强调的是[color=blue]定义软件对象以及它们如何协作以实现需求[/color]。例如,软件对象Plane可以有tailNumber属性和getFlightHistory方法。
[color=blue]最后在实现或面向对象程序设计过程中,会实现设计出来的对象,如java中的Plane类。[/color]
定义用例
用例不是面向对象制品,而是对情景的记录。[color=blue]但用例是需求分析中的一种常用工具[/color]。
定义领域模型
面向对象[b]分析[/b]关注从对象的角度创建领域描述。面向对象分析需要鉴别重要的概念、属性、和关联。
面向对象分析的[b]结果[/b]可以表示领域模型,在领域模型中展示重要的领域概念或对象。
需要注意的是,领域模型并不是软件对象的描述,它是真实世界领域中的概念和想象可视化。因此被称为[b]概念对象模型[/b](conceptual object model)。
面向对象[b]设计[/b]关注软件对象的定义——它们的[color=blue]职责和协作[/color]。顺序图是描述协作的常见表示法。它展示出软件对象之间的消息流,和由消息引起的方法调用。
定义设计类图
与领域模型表示的是真实世界的类,设计类图表示的是软件类。
要注意的是,尽管设计类图不同于领域模型,但是其中的某些类名和内容还是相似的。从这一方面讲,OO设计和语言能够缩小软件构件和我们所设想的领域模型之间的差距,即实现低表示差距。(这一点应该是我认为四色原型跟类图相似的原因吧)
最后列出3个概念名词:
[b]概念类[/b]——现实世界中的概念或事物。在概念或本质透视图中使用。UP领域模型中包括概念类。
[b]软件类[/b]——无论在过程还是方法中,都表示软件构件在规格说明或实现透视图中的类。
[b]实现类[/b]——特定OO语言(java)中的类。
《UML和模式应用》这本书给我们了9中基本指导原则,并将他们称之为GRASP,这些原则都有各自的名称,如信息专家和创建者等。
首先我们需要明确一点,什么是分析和设计:
[b]分析[/b]强调的是对问题和需求的调查研究,而不是解决方案。例如,如果需要一个新的在线交易系统,那么,应该如何使用它?它应该具有哪些功能。
[b]设计[/b]强调的是满足需求的概念上的解决方案,而不是其实现。
那么什么是面向对象分析和设计呢?
在[b]面向对象分析[/b]过程中,强调的是[color=blue]在问题领域内发现和描述对象(或概念)[/color]。例如,在航班信息系统里包含飞机、航班和飞行员等概念。
在[b]面向对象设计[/b]过程中,强调的是[color=blue]定义软件对象以及它们如何协作以实现需求[/color]。例如,软件对象Plane可以有tailNumber属性和getFlightHistory方法。
[color=blue]最后在实现或面向对象程序设计过程中,会实现设计出来的对象,如java中的Plane类。[/color]
定义用例
用例不是面向对象制品,而是对情景的记录。[color=blue]但用例是需求分析中的一种常用工具[/color]。
定义领域模型
面向对象[b]分析[/b]关注从对象的角度创建领域描述。面向对象分析需要鉴别重要的概念、属性、和关联。
面向对象分析的[b]结果[/b]可以表示领域模型,在领域模型中展示重要的领域概念或对象。
需要注意的是,领域模型并不是软件对象的描述,它是真实世界领域中的概念和想象可视化。因此被称为[b]概念对象模型[/b](conceptual object model)。
面向对象[b]设计[/b]关注软件对象的定义——它们的[color=blue]职责和协作[/color]。顺序图是描述协作的常见表示法。它展示出软件对象之间的消息流,和由消息引起的方法调用。
定义设计类图
与领域模型表示的是真实世界的类,设计类图表示的是软件类。
要注意的是,尽管设计类图不同于领域模型,但是其中的某些类名和内容还是相似的。从这一方面讲,OO设计和语言能够缩小软件构件和我们所设想的领域模型之间的差距,即实现低表示差距。(这一点应该是我认为四色原型跟类图相似的原因吧)
最后列出3个概念名词:
[b]概念类[/b]——现实世界中的概念或事物。在概念或本质透视图中使用。UP领域模型中包括概念类。
[b]软件类[/b]——无论在过程还是方法中,都表示软件构件在规格说明或实现透视图中的类。
[b]实现类[/b]——特定OO语言(java)中的类。