"OOD Lecture 20090508.doc 是一份关于面向对象设计(Object-Oriented Design,简称OOD)的文档,包含了对面向对象设计的基本概念、设计原则和23种设计模式的概述。文档作者为钟悦,适合于学习和理解OOD以及设计模式的初学者。" 在面向对象设计中,文档首先介绍了几个关键概念: 1. **机器导向与问题导向**:对比了传统编程思想与面向对象设计的不同,后者更强调解决问题的自然方式。 2. **函数导向与对象导向**:解释了对象如何封装数据和行为,提供更模块化的编程方式。 3. **需求冻结**:讨论了在软件开发过程中需求是否应固定不变的问题。 4. **没有银弹**:指出不存在一种通用的解决所有问题的最佳方法,强调适应性。 5. **重构**:讲解了改进代码结构而保持其功能不变的过程。 6. **抽象**:是将复杂系统简化为更易理解和处理的概念的过程。 7. **封装**:是隐藏对象内部实现细节,只暴露有限接口的机制。 8. **层级/继承**:允许子类继承父类的属性和方法。 9. **多态性**:一个接口可以有多种不同的实现方式。 10. **类**:是创建对象的蓝图。 11. **对象**:是类的实例,具有状态和行为。 12. **抽象类**:不能被实例化,只能作为其他类的基类。 13. **接口**:定义了一组方法,但不包含实现,用于实现多继承。 14. **签名**:描述了一个方法或函数的名称、参数列表和返回类型。 15. **类型**:标识变量、表达式或对象的类别。 16. **类与类型的区别**:类是创建对象的模板,类型是对象所属的类别。 17. **重载与覆盖**:重载在同一作用域内允许多个同名但参数列表不同的方法,覆盖发生在子类中对父类方法的重新实现。 18. **动态绑定与静态绑定**:动态绑定在运行时确定方法调用,静态绑定在编译时确定。 19. **值传递与引用传递**:值传递复制变量的值,引用传递传递变量的内存地址。 20. **用多态替换条件语句**:提倡通过多态性减少条件判断,提高代码可读性和可扩展性。 接着,文档列出了面向对象设计的一些基本原则: 1. **单一职责原则(SRP)**:一个类应该只有一个引起它变化的原因。 2. **开闭原则(OCP)**:对扩展开放,对修改关闭,意味着添加新功能而不改动现有代码。 3. **依赖倒置原则(DIP)**:高层模块不应依赖低层模块,两者应依赖其抽象。 4. **里氏替换原则(LSP)**:子类必须能够替换它们的父类并提供等价的行为。 5. **接口隔离原则(ISP)**:避免强迫客户端依赖他们不用的方法。 6. **最少知识原则(LoD)**:一个对象不应该知道过多的其他对象的细节。 最后,文档概述了23种设计模式,分为创建型、结构型和行为型三大类: 1. **创建型模式**: - **抽象工厂(Abstract Factory)**和**工厂方法(Factory Method)**提供了创建对象的接口,让子类决定实例化哪个类。 - **建造者(Builder)**模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **简单工厂(Simple Factory)**是一种特殊的工厂方法,通常用于避免重复的new操作。 - **原型(Prototype)**模式通过复制已有对象来创建新对象。 - **单例(Singleton)**模式确保一个类只有一个实例,并提供一个全局访问点。此外,还提到了**单态(Monostate)**和**多例(Multiton)**模式。 2. **结构型模式**: - **适配器(Adaptor/Wrapper)**模式将不兼容的接口转换为用户期望的接口。 - **桥接(Bridge)**模式分离抽象接口和它的实现,使得它们可以独立变化。 - **组合(Composite/Handle/Body)**模式实现部分-整体的层次结构,允许用户对单个对象和组合对象进行统一操作。 - **装饰器(Decorator/Wrapper)**模式在不改变对象原有行为的基础上动态添加新的责任。它与适配器模式有所不同,装饰器关注增强功能,而适配器关注接口转换。 这些设计模式是软件设计中的重要工具,可以帮助开发者编写出更灵活、可维护和可扩展的代码。通过深入理解和应用这些模式,可以提高软件质量,降低维护成本。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命