面向对象思维导图

《面向对象思维导图》

一、核心概念

1.1 对象 (Object)

  • 定义: 封装了数据 (属性) 和操作这些数据的代码 (方法) 的实体。
  • 组成:
    • 属性 (Attributes/Fields): 描述对象特征的数据。例如:颜色、大小、名称。
    • 方法 (Methods): 对象可以执行的操作或行为。例如:移动、绘制、计算。
  • 特点:
    • 唯一性: 每个对象都是独一无二的,即使属性值相同,它们也是不同的对象。
    • 状态: 对象的状态由其属性的当前值决定。
    • 行为: 对象根据接收到的消息 (方法调用) 做出反应。
  • 示例: 一辆汽车 (对象)
    • 属性: 颜色 = 红色, 品牌 = 奔驰, 型号 = C200
    • 方法: 加速(), 刹车(), 转弯()

1.2 类 (Class)

  • 定义: 对象的蓝图或模板,定义了对象所具有的属性和方法。
  • 作用: 描述一类对象的共同特征和行为。
  • 关系: 对象是类的实例 (instance)。
  • 示例: Car 类定义了所有汽车的通用属性和方法。
  • 组成:
    • 成员变量 (Member Variables): 类的属性的声明,定义了对象的存储空间。
    • 成员方法 (Member Methods): 类的行为的声明,定义了对象能够执行的操作。
  • 访问修饰符:
    • Public: 所有类均可访问。
    • Private: 只有当前类可以访问。
    • Protected: 当前类及其子类可以访问。
    • (默认/Package-private): 同一个包内的类可以访问。

1.3 封装 (Encapsulation)

  • 定义: 将数据 (属性) 和操作数据的代码 (方法) 捆绑在一起,形成一个独立的单元 (对象)。
  • 目的:
    • 信息隐藏: 隐藏对象的内部实现细节,只暴露必要的接口给外部使用。
    • 数据保护: 防止外部直接访问和修改对象的内部数据,从而保证数据的完整性和一致性。
  • 实现方式:
    • 使用访问修饰符 (public, private, protected) 控制对属性和方法的访问权限。
    • 提供 getter 和 setter 方法来间接访问和修改私有属性。
  • 优点:
    • 提高代码的模块化和可维护性。
    • 增强代码的安全性和可靠性。
    • 降低代码的耦合度。

1.4 继承 (Inheritance)

  • 定义: 允许一个类 (子类/派生类) 继承另一个类 (父类/基类) 的属性和方法。
  • 目的:
    • 代码重用: 避免重复编写相同的代码。
    • 扩展性: 可以在子类中添加新的属性和方法,或者修改父类的方法,从而扩展类的功能。
    • 层次结构: 建立类之间的层次关系,更好地组织和管理代码。
  • 类型:
    • 单继承: 一个类只能继承一个父类。
    • 多继承: 一个类可以继承多个父类 (某些语言不支持,例如 Java)。
  • 关键字: extends (Java), : (C++)
  • 示例: Car 类继承自 Vehicle 类,拥有 Vehicle 类的通用属性和方法,例如 speedmove(),同时可以添加 Car 类特有的属性和方法,例如 numDoorsopenSunroof()

1.5 多态 (Polymorphism)

  • 定义: 允许使用父类类型的引用指向子类类型的对象,并根据对象的实际类型调用相应的方法。
  • 目的: 提高代码的灵活性和可扩展性。
  • 类型:
    • 编译时多态 (静态多态): 在编译时确定要调用的方法,例如方法重载 (Overloading)。
    • 运行时多态 (动态多态): 在运行时确定要调用的方法,例如方法重写 (Overriding)。
  • 实现方式:
    • 方法重载 (Overloading): 在同一个类中,定义多个方法名相同但参数列表不同的方法。
    • 方法重写 (Overriding): 在子类中,重新定义从父类继承来的方法,方法名、参数列表和返回值类型必须与父类方法相同。
  • 示例: Animal 类有一个 makeSound() 方法,Dog 类和 Cat 类都继承了 Animal 类,并重写了 makeSound() 方法,分别输出 "Woof!" 和 "Meow!"。当使用 Animal 类型的引用指向 Dog 对象时,调用 makeSound() 方法会输出 "Woof!"。

二、设计原则

2.1 单一职责原则 (SRP)

  • 定义: 一个类应该只有一个引起它变化的原因。
  • 目的: 提高类的内聚性,降低类的耦合度。

2.2 开闭原则 (OCP)

  • 定义: 软件实体 (类、模块、函数等) 应该对扩展开放,对修改关闭。
  • 目的: 提高软件的稳定性和可维护性。

2.3 里氏替换原则 (LSP)

  • 定义: 子类型必须能够替换掉它们的父类型。
  • 目的: 保证继承关系的正确性。

2.4 接口隔离原则 (ISP)

  • 定义: 客户端不应该依赖它不需要的接口。
  • 目的: 提高接口的灵活性和可维护性。

2.5 依赖倒置原则 (DIP)

  • 定义:
    • 高层模块不应该依赖低层模块,两者都应该依赖抽象。
    • 抽象不应该依赖细节,细节应该依赖抽象。
  • 目的: 降低模块之间的耦合度,提高代码的可复用性和可维护性。

三、设计模式

3.1 创建型模式

  • 目的: 处理对象的创建机制,使其更灵活、可控。
  • 常见模式:
    • 单例模式 (Singleton)
    • 工厂模式 (Factory)
    • 抽象工厂模式 (Abstract Factory)
    • 建造者模式 (Builder)
    • 原型模式 (Prototype)

3.2 结构型模式

  • 目的: 处理类和对象的组合方式,形成更大的结构。
  • 常见模式:
    • 适配器模式 (Adapter)
    • 桥接模式 (Bridge)
    • 组合模式 (Composite)
    • 装饰器模式 (Decorator)
    • 外观模式 (Facade)
    • 享元模式 (Flyweight)
    • 代理模式 (Proxy)

3.3 行为型模式

  • 目的: 处理对象之间的交互和职责分配。
  • 常见模式:
    • 责任链模式 (Chain of Responsibility)
    • 命令模式 (Command)
    • 解释器模式 (Interpreter)
    • 迭代器模式 (Iterator)
    • 中介者模式 (Mediator)
    • 备忘录模式 (Memento)
    • 观察者模式 (Observer)
    • 状态模式 (State)
    • 策略模式 (Strategy)
    • 模板方法模式 (Template Method)
    • 访问者模式 (Visitor)
上一个主题: 西游记思维导图 下一个主题: 河中石兽思维导图

相关思维导图推荐

分享思维导图