"面向对象分析与设计复习要点"
面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)是软件开发过程中重要的步骤,它结合了面向对象的思想和技术,用于理解和表述复杂系统的需求,创建高质量的设计模型。本文档提供了面向对象分析与设计的复习要点,涵盖基本概念、关键术语及其应用。
1. 面向对象技术发展的动因主要是解决传统程序设计方法在处理复杂性、重用性、维护性和可扩展性上的不足。
2. 面向对象技术的三大机制是封装、继承和多态。封装是将数据和操作数据的方法捆绑在一起,继承允许子类继承父类的属性和行为,多态则允许不同对象对同一消息做出不同响应。
3. OOA(面向对象分析)是识别和定义问题域的实体、行为和关系,基本任务包括需求获取、对象识别、关系建立等。OOA模型通常包括用例图、实体类图等,展示系统参与者、用例、系统边界和类之间的关系。
4. OOD(面向对象设计)是基于OOA的结果,进一步细化系统结构,包括设计类、接口、协作和实现细节。OOD模型包括类图、顺序图等,用于描述类的内部结构和交互。
5. 面向对象设计强调对象间的交互,而面向数据设计关注数据的存储和处理。前者更注重行为和动态特性,后者侧重静态结构。
6. 类图中的关系包括关联、聚合、组合、依赖、泛化(继承)和实现。关联描述类之间的联系,聚合和组合表示整体与部分的关系,依赖是临时性的关联,泛化表示类的继承关系,实现是接口与类之间的关系。
7. 顺序图着重于时间序列,强调消息的顺序,而协作图展示了对象间的交互关系和结构组织,两者都用于描述对象间的交互。
8. 高内聚指类的功能紧密相关,减少类间耦合,提高模块独立性。低耦合意味着类之间相互依赖程度低,易于维护和扩展。
9. 面向对象设计原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则,它们指导着设计出可维护、可扩展的软件。
10. 设计模式是解决常见设计问题的可复用解决方案,如工厂模式、单例模式、观察者模式等,它们分别属于创建型、结构型和行为型模式。
11. UML(统一建模语言)是标准化的图形建模语言,包括用例图、类图、顺序图等,用于描述软件系统的结构和行为。
12. 软件危机是指软件开发过程中遇到的诸多问题,如成本超支、质量不达标、进度延误等。
13. 软件开发生命周期包括需求分析、设计、编码、测试和维护等阶段。
14. 常见的软件开发模型有瀑布模型、螺旋模型、敏捷模型等。
15. 软件开发方法包括结构化方法、面向对象方法、敏捷开发等,各有特点,适用于不同类型的项目。
16. 分析与设计的区别在于,分析主要理解需求,构建问题域模型,而设计则是将分析结果转化为具体实现的蓝图。
17. 软件维护包括错误修复、功能增强、性能优化和适应性修改等工作。
18. 面向对象的基本思想是将现实世界中的实体映射为类,通过类的实例来描述和操作系统。
19. OOA与OOD的关系是,OOA是需求分析,为OOD提供输入,OOD是具体的设计实现,基于OOA的结果。
20. 软件系统分析面临的问题包括需求模糊、变更频繁、复杂度高等,评判方法包括需求覆盖、一致性、完整性等。
21. OOA模型通过细化和增加实现细节,转化为OOD的问题域部分。
22. 人机交互分析关注用户界面设计,确保用户能有效地与系统交互。
23. 软件系统的控制流描述了程序执行的顺序,控制流有助于理解和调试程序。
24. OOD中的数据管理涉及数据结构设计、访问策略和持久化机制,目的是高效、安全地管理数据。
25. 用例之间的扩展关系表示一个用例在特定条件下可以扩展另一个用例的行为,泛化是用例的继承,包含关系是用例的一部分被另一个用例调用。例如,"购买商品"用例可能在"结账"用例中被扩展,"在线支付"用例可能泛化为"支付"用例,"订单确认"可以用包含关系表示为"结账"的一部分。
26. 在设计实践中,可以通过建立抽象类,如“出版物”,并让“书”、“部分”、“章”和“节”继承这个抽象类,以提取共有的“标题”和“序号”属性,实现代码复用和结构清晰。
27. 电话应答机系统设计中,可以定义类如"电话应答机"、"来电信息"、"LED显示屏"等,用例包括"记录来电信息"、"显示来电号码"等,通过状态图描述来电信息的记录和显示过程。