GRASP对象设计示例:IntellAgile实战与操作流程

需积分: 9 14 下载量 151 浏览量 更新于2024-08-01 收藏 736KB PPT 举报
GRASP(Growing Object-Oriented Software Applications)是一种面向对象的设计原则集合,由C.A. Begg提出,用于指导软件系统的设计和开发。本示例展示了如何在实际应用中使用GRASP原则来构建一个简单的对象设计模型。首先,我们关注于"IntellAgile"这个主题,主讲人姜春艳分享了来自craiglarman.com的版权内容,强调了GRASP在设计中的核心作用。 在这个例子中,主要涉及以下几个关键知识点: 1. **GRASP原则**:包括5个核心原则,如Replace Abstract Classes with Concretions(替换抽象类)、Refactor to Increase Cohesion (高内聚性)、Generalize and Specialize (概括与具体化)、Prefer Composition over Inheritance (组合优于继承)和Program to an Interface, not an Implementation (编程到接口,而非实现)。这些原则旨在确保设计的灵活性、可扩展性和可维护性。 2. **对象设计示例**:以一个"Sales"系统为例,包括两个主要类:`Sale`和`LineItem`。`Sale`类可能包含`date`属性,表示销售日期,而`LineItem`类则代表订单中的商品,具有`quantity`属性和关联的产品描述。这体现了Replace Abstract Classes with Concretions原则,通过具体的类来替代抽象概念。 3. **Use Case Model**:展示了系统的用例模型,如`Register`用例,其中包含了`enterItem`操作。这个操作接收`itemID`和`quantity`作为参数,从`ProductCatalog`获取产品描述,并添加到`Sale`中。这体现了Generalize and Specialize原则,将业务逻辑分解到各个具体操作中。 4. **DesignModel**:包括系统序列图,如`ProcessSale`,展示了交互流程,如顾客到达、现金出纳员输入商品标识等。这是对业务流程的可视化,有助于理解各个角色和操作之间的关系。 5. **Requirements and Business Modeling**:需求驱动设计,通过分析功能需求和业务模型,为对象设计提供灵感。这包括识别出与软件对象相关的功能性需求,以及设计的详细后置条件。 6. **Object-Oriented Design Elements**:如命名规范(如`Cashier`、`Cashier`类名来源于现实场景),反映了命名的直观性和启发性,有助于代码理解和维护。 7. **Supplementary Specification** 和 `Glossary`:补充规格说明和术语定义,确保设计文档的完整性和一致性。 通过这个示例,我们可以看到GRASP原则如何应用于实际的软件设计中,帮助开发者创建出清晰、灵活和易于维护的系统结构。设计时,不仅要考虑对象的职责和关系,还要确保遵循GRASP的原则,以提高设计质量。