Object-Oriented Programming (OOP)
1. 面向对象编程 (OOP) 的基本概念
- 对象 (Object):对象具有状态和行为,例如,狗有状态(名字、颜色、品种、饥饿)和行为(叫、取物、摇尾巴)。
- 类 (Class):类定义了对象的属性和方法。类是对象的蓝图,每个对象都是一个类的实例。
- 属性 (Attribute) 和 方法 (Method):属性是对象的数据,方法是对象的行为。
2. OOP 的主要特性
- 封装 (Encapsulation) 和 信息隐藏 (Information Hiding):通过将数据和操作封装在对象内部,只通过对象的接口与外部交互,隐藏实现细节。
- 继承 (Inheritance) 和 重写 (Overriding):子类继承父类的属性和方法,并可以对其进行重写,以提供特定实现。
- 多态 (Polymorphism) 和 子类型 (Subtyping):不同类型的对象可以统一处理,不需要区分具体类型。利用子类型,父类型的对象可以被子类型的对象替换,而不影响程序运行。
3. 类与对象的设计
- 可变类 (Mutable Class):类的实例可以更改其状态。适用于表示状态变化的实体,如银行账户、交通信号灯等。
- 不可变类 (Immutable Class):类的实例一旦创建,其状态就不能改变。具有简单性、本质线程安全、可自由共享等优点。设计不可变类时应确保所有字段为final和private,并避免暴露可变组件 。
4. 设计良好的类
- API 设计:只提供客户需要的功能,其他成员应设置为private。API应与实现细节分离,模块间仅通过API通信,隐藏实现细节有助于模块的独立开发、测试和优化。
- 信息隐藏的好处:解耦系统组成部分,加快开发速度,简化维护,提高性能调优效果,增加软件重用性 。
5. Java中的重要对象方法
- equals():判断两个对象是否相等。
- hashCode():为对象生成哈希码,用于哈希映射。
- toString():返回对象的字符串表示,通常需要重写以提供有用的信息 。
6. 不可变类的实现
- 不提供任何修改器方法。
- 确保所有字段为final和private。
- 实现toString(), hashCode(), equals()等方法,确保任何可变组件的安全性 。
7. OOP 的历史
- 1960年代:Simula 67是第一个面向对象语言,由Kristin Nygaard和Ole-Johan Dahl开发,用于支持离散事件模拟。
- 1980年代:面向对象编程变得显著,C++是主要因素之一。其它语言包括Eiffel和Java 。
本次课程详细介绍了面向对象编程的基本概念、特性、设计原则、重要方法及其历史发展,有助于理解和应用OOP思想进行软件开发。