PL/I 语言 类与对象基础概念

PL/I阿木 发布于 2 天前 2 次阅读


PL/I 语言中的类与对象基础概念

PL/I(Programming Language One)是一种高级程序设计语言,它结合了多种编程语言的特点,如COBOL、FORTRAN和ALGOL。尽管PL/I在20世纪80年代后逐渐被其他语言如C和C++所取代,但它仍然在一些大型系统中发挥着重要作用。在PL/I中,类与对象的概念虽然不如面向对象编程语言(如Java、C++)那样成熟,但仍然可以用来实现一些基本的面向对象特性。本文将围绕PL/I语言中的类与对象基础概念展开讨论。

PL/I 语言中的类与对象

类的定义

在PL/I中,类是一种用户定义的数据类型,它包含了一组属性(数据成员)和方法(过程成员)。类定义了对象的蓝图,对象则是类的实例。

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. CLASS-DEFINITION.

CLASS OBJECT-CLASS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 OBJECT-ATTRIBUTES.
05 OBJECT-ID PIC X(10).
05 OBJECT-VALUE PIC 9(5).
PROCEDURE DIVISION.
DISPLAY "Object class defined."
END CLASS OBJECT-CLASS.

在上面的代码中,我们定义了一个名为`OBJECT-CLASS`的类,它包含两个数据成员:`OBJECT-ID`和`OBJECT-VALUE`。

对象的创建

在PL/I中,对象是通过使用`CREATE`语句创建的。以下是如何创建一个`OBJECT-CLASS`类的实例:

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. OBJECT-CREATION.

CLASS OBJECT-CLASS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 OBJECT-ATTRIBUTES.
05 OBJECT-ID PIC X(10).
05 OBJECT-VALUE PIC 9(5).
PROCEDURE DIVISION.
DISPLAY "Object class defined."
END CLASS OBJECT-CLASS.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 OBJECT-INSTANCE.
05 OBJECT-ATTRIBUTES.
05 OBJECT-ID PIC X(10).
05 OBJECT-VALUE PIC 9(5).

PROCEDURE DIVISION.
PERFORM CREATE-OBJECT.
DISPLAY "Object ID: " OBJECT-ID OF OBJECT-INSTANCE.
DISPLAY "Object Value: " OBJECT-VALUE OF OBJECT-INSTANCE.

CREATE-OBJECT.
CREATE OBJECT OBJECT-INSTANCE
OBJECT-ID OF OBJECT-INSTANCE "12345"
OBJECT-VALUE OF OBJECT-INSTANCE 100.

在上面的代码中,我们首先定义了一个类`OBJECT-CLASS`,然后在主程序中创建了一个该类的实例`OBJECT-INSTANCE`,并初始化了它的属性。

方法调用

在PL/I中,方法是通过使用点操作符`.`来调用的。以下是如何在对象上调用一个方法:

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. OBJECT-METHOD-CALL.

CLASS OBJECT-CLASS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 OBJECT-ATTRIBUTES.
05 OBJECT-ID PIC X(10).
05 OBJECT-VALUE PIC 9(5).
PROCEDURE DIVISION.
DISPLAY "Object class defined."
CALL "SET-VALUE" USING OBJECT-INSTANCE OBJECT-VALUE.
DISPLAY "Object Value: " OBJECT-VALUE OF OBJECT-INSTANCE.

SET-VALUE.
ACCEPT OBJECT-VALUE FROM OBJECT-INSTANCE.
DISPLAY "Value set to: " OBJECT-VALUE.
END OBJECT-CLASS.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 OBJECT-INSTANCE.
05 OBJECT-ATTRIBUTES.
05 OBJECT-ID PIC X(10).
05 OBJECT-VALUE PIC 9(5).

PROCEDURE DIVISION.
PERFORM CREATE-OBJECT.
CALL "SET-VALUE" USING OBJECT-INSTANCE OBJECT-VALUE.
DISPLAY "Object Value: " OBJECT-VALUE OF OBJECT-INSTANCE.

CREATE-OBJECT.
CREATE OBJECT OBJECT-INSTANCE
OBJECT-ID OF OBJECT-INSTANCE "12345"
OBJECT-VALUE OF OBJECT-INSTANCE 100.

在上面的代码中,我们定义了一个名为`SET-VALUE`的方法,它接受一个对象实例和值,并将该值设置到对象的`OBJECT-VALUE`属性中。然后在主程序中,我们通过调用`SET-VALUE`方法来设置对象的值。

类的继承

在PL/I中,可以通过使用`EXTENDS`关键字来实现类的继承。以下是如何定义一个继承自`OBJECT-CLASS`的新类:

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. INHERITANCE.

CLASS BASE-CLASS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 BASE-ATTRIBUTES.
05 BASE-ID PIC X(10).
PROCEDURE DIVISION.
DISPLAY "Base class defined."
END CLASS BASE-CLASS.

CLASS DERIVED-CLASS EXTENDS BASE-CLASS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DERIVED-ATTRIBUTES.
05 DERIVED-ID PIC X(10).
PROCEDURE DIVISION.
DISPLAY "Derived class defined."
END CLASS DERIVED-CLASS.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 DERIVED-OBJECT.
05 DERIVED-ATTRIBUTES.
05 DERIVED-ID PIC X(10).

PROCEDURE DIVISION.
PERFORM CREATE-DERIVED-OBJECT.
DISPLAY "Derived ID: " DERIVED-ID OF DERIVED-OBJECT.

CREATE-DERIVED-OBJECT.
CREATE OBJECT DERIVED-OBJECT
DERIVED-ID OF DERIVED-OBJECT "67890".

在上面的代码中,我们定义了一个名为`DERIVED-CLASS`的新类,它继承自`BASE-CLASS`。在`DERIVED-CLASS`中,我们可以访问`BASE-CLASS`中的属性和方法。

总结

PL/I语言虽然不是专门为面向对象编程设计的,但它仍然提供了一些基本的类与对象概念。通过定义类、创建对象、调用方法以及实现继承,PL/I程序员可以构建出具有面向对象特性的程序。尽管PL/I在当今的编程世界中不再流行,但了解这些基础概念对于理解其他面向对象编程语言仍然是有益的。

本文简要介绍了PL/I语言中的类与对象基础概念,包括类的定义、对象的创建、方法调用以及类的继承。这些概念为PL/I程序员提供了构建面向对象程序的基础。随着技术的发展,尽管PL/I语言可能不再被广泛使用,但这些面向对象的基本原理仍然适用于其他编程语言。