编程基础/对象和类
面向对象编程 (OOP) 是一种基于“对象”概念的编程范式,对象可能包含数据(以字段的形式,通常称为属性)和代码(以过程的形式,通常称为方法)。对象的特征是,对象的程序可以访问(通常修改)与其相关联的对象的数据字段(对象具有“this”或“self”的概念)。OOP 语言的多样性很大,但最流行的语言是基于类的,这意味着对象是类的实例,类通常也决定了它们的类型。[1]
到目前为止,我们一直专注于过程式编程。基于结构化编程,过程(例程、子例程或函数)包含一系列要执行的计算步骤。任何给定的过程可以在程序执行过程中的任何时间点被调用,包括被其他过程或自身调用。过程式编程的重点是将编程任务分解为变量、数据结构和子例程的集合。[2] 小程序和脚本往往更容易使用简单的过程式方法开发。
面向对象编程将编程任务分解为对象,这些对象使用接口公开行为(方法)和数据(成员或属性)。最主要的区别在于,过程式编程使用过程来操作独立的数据结构,而面向对象编程将两者捆绑在一起,因此“对象”(即类的实例)操作其“自身”的数据结构。[3] 更大型的程序受益于面向对象方法提供的更好的代码和数据隔离和重用。
对象和类通常设计为表示现实世界的对象。以门为例,它是一个现实世界的对象。大多数门的功能有限。它们可以打开和关闭,以及锁定和解锁。在过程式编程中,我们可能会设计函数来打开、关闭、锁定和解锁门,例如
Procedural Programming - Functions OpenDoor(door) CloseDoor(door) LockDoor(door) UnlockDoor(door)
面向对象编程将代码和数据结合在一起,因此,我们不是让单独的函数作用于门,而是设计拥有可以作用于自身的方法的门。方法代表对象可以做的事情,通常用动词定义。面向对象的伪代码可能看起来像
Object-Oriented Programming - Methods door.Open() door.Close() door.Lock() door.Unlock()
对象也可能具有属性,即对象是或拥有的东西,通常用名词或形容词定义。门属性可能包括
Object-Oriented Programming - Attributes door.Height door.Width door.Color door.Closed door.Locked
当我们编写代码来定义一个通用门时,我们会创建一个门类。门类将包含门可以执行的所有方法和门可能具有的所有属性。然后,我们会创建类的实例(对象)来表示特定门,例如房子的前门、后门或房间门,或汽车的左门和右门。
- 属性
- 定义对象属性的规范。[4]
- 类
- 用于创建对象的可扩展程序代码模板,提供状态的初始值(成员变量)和行为的实现(成员函数或方法)。[5]
- 实例
- 对象的具体发生。[6]
- 方法
- 定义对象过程或行为的规范。[7]
- 对象
- 类的特定实例,其中对象可以是变量、函数和数据结构的组合。[8]
- this, self 或 Me
- 在某些计算机编程语言中用于引用当前运行代码所属的对象、类或其他实体的关键字。[9]