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语言可能不再被广泛使用,但这些面向对象的基本原理仍然适用于其他编程语言。
Comments NOTHING