软件构造学习笔记(5)--面向对象编程 (OOP)

学习笔记

1. 面向对象编程 (OOP) 的基本概念
  • 对象 (Object):状态和行为的集合。状态是对象中的数据,行为是对象支持的动作。
  • 类 (Class):定义了对象的类型和实现。类是对象的蓝图,包含字段(数据)和方法(行为)。
  • 接口 (Interface):是抽象数据类型 (ADT) 的实现分离的一种方式。接口包含方法签名但没有具体实现。
  • 封装 (Encapsulation) 和 信息隐藏 (Information Hiding):隐藏内部数据和实现细节,只暴露必要的操作。
  • 继承 (Inheritance) 和 重写 (Overriding):子类继承父类的特征,并能够重写方法以提供特定的实现。
  • 多态 (Polymorphism)子类型 (Subtyping) 和 重载 (Overloading):允许以统一的方式处理不同类型的对象。
2. 重要特性
  • 静态与动态分派 (Static and Dynamic Dispatch):静态分派在编译时决定,而动态分派在运行时决定。
  • 不可变类 (Immutable Classes):提供了线程安全性,简化了设计。
3. Java 中的重要对象方法
  • equals():判断两个对象是否相等。
  • hashCode():为散列映射提供散列码。
  • toString():提供对象的字符串表示。
4. 设计良好的类
  • 不可变类的优势:简单性、线程安全、可以自由共享、无需防御性副本、是优秀的构建块。
  • 如何编写不可变类:不提供修改器、确保没有方法可以被重写、使所有字段为 final 和 private、确保任何可变组件的安全性。
5. OOP 的历史
  • Simula 67:第一个面向对象的语言,用于支持离散事件模拟。
  • Smalltalk:由 Xerox PARC 开发,首次使用了 "面向对象编程 (OOP)" 这个术语。
  • C++:在 1980 年代使 OOP 成为突出的因素。
  • Eiffel 和 Java:进一步发展了 OOP。

心得体会

对象和类的理解

        面向对象编程的核心是将数据和行为结合在一起,形成一个对象。这种思想不仅简化了代码结构,还提高了代码的可读性和可维护性。通过类的定义,我们可以创建具有相同属性和行为的多个对象实例。

接口和抽象

        接口提供了一种强大的机制,用于定义一个类必须遵守的契约。它允许我们编写更灵活、更可扩展的代码,同时也支持多重继承的概念。

封装和信息隐藏

        封装和信息隐藏是软件设计中非常重要的原则。它们帮助我们隐藏对象的内部实现细节,只暴露出一个可以被外界访问的接口。这不仅保护了对象的完整性,还减少了代码间的耦合度。

继承和多态

        继承允许我们创建基于现有类的新类,而多态则允许我们以统一的方式处理不同类型的对象。这些特性使得代码更加灵活,易于扩展和维护。

不可变类

        不可变类是 OOP 中一个非常有用的模式,它提供了线程安全性,简化了并发编程的复杂性。不可变对象一旦创建,其状态就不能改变,这使得它们在多线程环境中更安全。

重写 Object 方法

        正确地重写 equals()hashCode()toString() 方法对于对象的正确行为至关重要。这些方法的重写需要我们对对象的相等性、散列码的一致性以及字符串表示有深入的理解。

OOP 的历史

        了解 OOP 的历史有助于我们理解这门技术的发展和演变。从 Simula 67 的诞生到 Smalltalk 的兴起,再到 C++ 和 Java 的广泛应用,OOP 不断地演进和完善。

        通过学习 OOP,我更加认识到了它在现代软件开发中的重要性。OOP 不仅是一种编程范式,更是一种思维方式,它帮助我们以一种更接近现实世界的方式来构建软件系统。

  • 41
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值