面向职责的对象设计:GRASP原则与UML应用

需积分: 10 2 下载量 76 浏览量 更新于2024-08-16 收藏 173KB PPT 举报
"基于职责设计对象" 在面向对象设计中,职责分配是非常关键的一个环节,GRASP(General Responsibility Assignment Software Principles)原则提供了一种指导方法,帮助开发者决定方法应归属哪个对象以及对象间如何交互。GRASP包括了五个主要原则或模式,它们是: 1. **控制器(Controller)** - 规定了如何处理用户输入和系统响应的协调职责。 2. **多态(Polymorphism)** - 强调通过接口的一致性来减少耦合度,允许对象根据自身类型进行行为。 3. **信息专家(Information Expert)** - 方法应定义在拥有所需数据或信息的对象上。 4. **低耦合(Low Coupling)** - 尽量减少对象之间的依赖关系,提高系统的可维护性和可扩展性。 5. **高内聚(High Cohesion)** - 确保对象内的方法都与其核心职责紧密相关。 在进行对象设计时,通常会有多种输出产物,这些产物有助于清晰地表达设计思路并辅助后续的实现过程: 1. **UML交互图** - 包括序列图和协作图,描述对象间的交互行为和消息传递顺序。 2. **类图** - 显示类、接口、关联、继承等结构信息,有助于理解类之间的关系。 3. **包图** - 表现模块或组件的组织结构,体现系统的分层和封装。 4. **UI草图和原型** - 展示用户界面的设计和布局,便于用户反馈和迭代改进。 5. **数据库模型** - 描述数据存储的逻辑结构,包括实体、关系和属性。 6. **报表草图和原型** - 为系统生成的报表提供预览,确保满足业务需求。 在设计过程中,开发者可能会进行以下活动: - **分析制品分析** - 评估已完成的分析阶段产出物,如场景、包图、补充规格说明和词汇表,以理解需求和约束。 - **领域模型构建** - 创建一个反映问题域的模型,包含关键概念和它们的相互关系。 - **UML建模** - 使用UML工具绘制交互图、类图等,可视化设计。 - **CRC卡片(Class Responsibility Collaborator)** - 一种快速迭代设计工具,用于初步定义类的职责和它们之间的协作。 在整个设计流程中,开发者需要权衡各种因素,比如是否直接进入编码,是否需要进行更深入的UML建模,或者是否采用CRC卡片等其他建模技术。重要的是,良好的设计原则训练和对对象思想的理解是成功的关键,而不仅仅是掌握UML或其他建模工具。