Introducción

COBOL, tradicionalmente conocido por su enfoque procedural, ha evolucionado para incluir características de programación orientada a objetos (OOP). Este módulo te introducirá a los conceptos de OOP en COBOL, cómo se implementan y cómo puedes utilizarlos para escribir programas más estructurados y mantenibles.

Conceptos Clave de la Programación Orientada a Objetos

Antes de profundizar en COBOL orientado a objetos, repasemos algunos conceptos clave de OOP:

  1. Clases y Objetos:

    • Clase: Una plantilla para crear objetos. Define atributos y métodos.
    • Objeto: Una instancia de una clase.
  2. Encapsulación: Agrupación de datos y métodos que operan sobre esos datos dentro de una clase, restringiendo el acceso directo a algunos de los componentes del objeto.

  3. Herencia: Mecanismo por el cual una clase puede heredar atributos y métodos de otra clase.

  4. Polimorfismo: Capacidad de diferentes clases para ser tratadas como instancias de la misma clase a través de una interfaz común.

  5. Abstracción: Proceso de ocultar los detalles de implementación y mostrar solo la funcionalidad esencial.

Implementación de OOP en COBOL

Definición de Clases

En COBOL, las clases se definen utilizando la palabra clave CLASS. Aquí hay un ejemplo básico de cómo definir una clase:

       IDENTIFICATION DIVISION.
       CLASS-ID. Employee.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Employee-Name PIC X(30).
       01 Employee-ID   PIC 9(5).

       PROCEDURE DIVISION.
       METHOD-ID. "New".
           DISPLAY "Creating a new Employee object".
           GOBACK.
       END METHOD "New".

       METHOD-ID. "Set-Details".
           PROCEDURE DIVISION USING BY VALUE Name PIC X(30), ID PIC 9(5).
           MOVE Name TO Employee-Name.
           MOVE ID TO Employee-ID.
           GOBACK.
       END METHOD "Set-Details".

       METHOD-ID. "Display-Details".
           DISPLAY "Employee Name: " Employee-Name.
           DISPLAY "Employee ID: " Employee-ID.
           GOBACK.
       END METHOD "Display-Details".
       END CLASS Employee.

Creación de Objetos

Para crear un objeto de una clase en COBOL, utilizamos la palabra clave OBJECT. Aquí hay un ejemplo de cómo crear un objeto de la clase Employee y llamar a sus métodos:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MainProgram.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Employee-Object OBJECT REFERENCE Employee.

       PROCEDURE DIVISION.
           INVOKE Employee "New" RETURNING Employee-Object.
           INVOKE Employee-Object "Set-Details" USING "John Doe" 12345.
           INVOKE Employee-Object "Display-Details".
           STOP RUN.

Herencia

COBOL también soporta herencia, permitiendo que una clase derive de otra. Aquí hay un ejemplo de cómo definir una clase Manager que hereda de Employee:

       IDENTIFICATION DIVISION.
       CLASS-ID. Manager INHERITS Employee.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Department PIC X(20).

       PROCEDURE DIVISION.
       METHOD-ID. "Set-Department".
           PROCEDURE DIVISION USING BY VALUE Dept PIC X(20).
           MOVE Dept TO Department.
           GOBACK.
       END METHOD "Set-Department".

       METHOD-ID. "Display-Details" OVERRIDE.
           INVOKE SUPER "Display-Details".
           DISPLAY "Department: " Department.
           GOBACK.
       END METHOD "Display-Details".
       END CLASS Manager.

Polimorfismo

El polimorfismo en COBOL se logra mediante el uso de métodos que pueden ser redefinidos en clases derivadas. En el ejemplo anterior, el método Display-Details en la clase Manager sobrescribe el método en la clase Employee.

Ejercicio Práctico

Ejercicio 1: Crear una Clase y un Objeto

  1. Define una clase Product con los siguientes atributos:

    • Product-Name (PIC X(30))
    • Product-ID (PIC 9(5))
    • Price (PIC 9(5)V99)
  2. Implementa los métodos:

    • New: Para inicializar un objeto Product.
    • Set-Details: Para establecer los detalles del producto.
    • Display-Details: Para mostrar los detalles del producto.
  3. Crea un programa que instancie un objeto de la clase Product, establezca sus detalles y los muestre.

Solución

       IDENTIFICATION DIVISION.
       CLASS-ID. Product.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Product-Name PIC X(30).
       01 Product-ID   PIC 9(5).
       01 Price        PIC 9(5)V99.

       PROCEDURE DIVISION.
       METHOD-ID. "New".
           DISPLAY "Creating a new Product object".
           GOBACK.
       END METHOD "New".

       METHOD-ID. "Set-Details".
           PROCEDURE DIVISION USING BY VALUE Name PIC X(30), ID PIC 9(5), Cost PIC 9(5)V99.
           MOVE Name TO Product-Name.
           MOVE ID TO Product-ID.
           MOVE Cost TO Price.
           GOBACK.
       END METHOD "Set-Details".

       METHOD-ID. "Display-Details".
           DISPLAY "Product Name: " Product-Name.
           DISPLAY "Product ID: " Product-ID.
           DISPLAY "Price: $" Price.
           GOBACK.
       END METHOD "Display-Details".
       END CLASS Product.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MainProgram.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Product-Object OBJECT REFERENCE Product.

       PROCEDURE DIVISION.
           INVOKE Product "New" RETURNING Product-Object.
           INVOKE Product-Object "Set-Details" USING "Laptop" 10001 999.99.
           INVOKE Product-Object "Display-Details".
           STOP RUN.

Conclusión

En este módulo, hemos explorado cómo COBOL ha adoptado características de la programación orientada a objetos. Aprendimos a definir clases, crear objetos, implementar herencia y utilizar polimorfismo. Estos conceptos permiten escribir programas COBOL más estructurados y fáciles de mantener. En el siguiente módulo, profundizaremos en cómo COBOL interactúa con bases de datos, específicamente con DB2 y SQL embebido.

© Copyright 2024. Todos los derechos reservados