Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
Retroceder   COBOL Foro > IDE-s y compiladores COBOL > COBOL - General > Object-Oriented COBOL
Object-Oriented COBOL OO COBOL 2000/2002 - COBOL orientado a objetos.
Noticias y Avisos
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Clases abstractas (Abstract Factory) Kuk Object-Oriented COBOL 1 22 de febrero de 2017 15:03
¿Qué hace exactamente el "Rebase"? Kuk GIT 1 25 de octubre de 2016 13:21
Sentencia CLASS en SPECIAL-NAMES Lascu PowerCOBOL (ActiveX) 1 29 de enero de 2016 09:39
Respuesta
 
Herramientas

  #1
Antiguo 25 de enero de 2017, 20:04
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Lightbulb ¿Qué se hace en CLASS-OBJECT y FACTORY?

Amigos, me estoy metiendo en OO COBOL... Sí sí, en OO COBOL porque lo necesito en el trabajo. Y necesito ayuda para entender algunas cosas. Por ejemplo, la diferencia de lo que se define en CLASS-OBJECT con lo que se define en OBJECT. También no he entendido bien lo que se hace en el FACTORY.

Eslopes, si no me equivoco tu eres bastante enterado en el tema. Necesito de tu sabiduría amigo

Por cierto, Eslopes, ¿tu página de 100coolthings ya no funciona?


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #2
Antiguo 27 de enero de 2017, 12:12
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Acerca del FACOTRY he encontrado esto:

A factory method defines an operation that is supported by a class independently of any object instance of the class.
COBOL factory methods are equivalent to Java public static methods.
Información completa: IBM Knowledge Center


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 27 de enero de 2017, 17:12
IDENTIFICATION DIVISION
Dasije
Novato Senior
ENVIRONMENT DIVISION
Avatar de Dasije
DATA DIVISION
Forero desde (Registrado)noviembre 2015
España
UbicaciónJerez De La Frontera (cádiz)
Última Actividad14.12.2018 01:46
PROCEDURE DIVISION
PostsPosts: 162
Ha dicho GraciasEnviado: 0
Ha recibido agradecimientosRecibido: 70
ReputaciónReputación: 10
Dasije is on a distinguished road Dasije is on a distinguished road Dasije is on a distinguished road Dasije is on a distinguished road Dasije is on a distinguished road Dasije is on a distinguished road
Predeterminado

Sí es desde PowerCOBOL.

CLASS-OBJECT, son las métodos de un objeto, es una forma de referirse a él.

El OO COBOL se utiliza para crear activex o objetos con classes como pueden ser métodos que puedes invocar dentro de tus programas, de hay el nombre Oriented Object.


Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 27 de enero de 2017, 22:33
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Dasije, el OO COBOL es OO como cualquier otro lenguaje, puedes hacer muchísimas cosas, entre otras invocar clases de Java o crear clases de COBOL que serán invocadas desde Java y etc.

La pregunta es, cual es la diferencia entre CLASS-OBJECT y OBJECT.

En este caso yo estoy trabajando en Visual COBOL de MicroFocus, no estoy hablando de PowerCOBOL. Aunque la sintaxis de puro OO COBOL es la misma (o casi la misma).


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 30 de enero de 2017, 17:04
IDENTIFICATION DIVISION
Eslopes
Guru de OO COBOL
ENVIRONMENT DIVISION
Avatar de Eslopes
DATA DIVISION
Forero desde (Registrado)agosto 2015
Brasil
Última Actividad09.07.2018 17:28
PROCEDURE DIVISION
PostsPosts: 66
Ha dicho GraciasEnviado: 17
Ha recibido agradecimientosRecibido: 29
ReputaciónReputación: 6
Eslopes is on a distinguished road Eslopes is on a distinguished road Eslopes is on a distinguished road
Predeterminado

OBJECT é onde definimos os métodos e propriedades da instância
FACTORY é onde definimos métodos e propriedades estáticos.

Saludos, Emerson
Eslopes no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (30 de enero de 2017)
  #6
Antiguo 31 de enero de 2017, 08:42
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Eslopes, ¿entonces qué es la sección OBJECT que está aparte?
Mira este ejemplo, línea 60 contiene CLASS-OBJECT y la línea 86 contiene OBJECT sólo:

Código COBOL:
  1.        copy "guibase.if".                                               *> Standard interface to GUIBase class using vocabulary generator - You can just invoke GUIBase methods directly if you wish.
  2.      *>--------------------------------------------------------------  *>
  3.      *> Combo Box Demonstration Class :                                *>
  4.      *>                                                                *>
  5.      *> This is a modal Dialog Box. The dialog box has been created    *>
  6.      *> using the Dialog Editor. This class demonstrates how to use 3  *>
  7.      *> types of Selection boxes within your program - In              *>
  8.      *> Particular :                                                   *>
  9.      *>                                                                *>
  10.      *>   - How to display selection (combo) boxes -                   *>
  11.      *>           Simple, Dropdown(drop) and Droplist                  *>
  12.      *>   - How to insert items in combobox controls prior to display  *>
  13.      *>   - How to obtain user selections on each combo box            *>
  14.      *>   - How to display strings of text within a message Box.       *>
  15.      *>                                                                *>
  16.      *> Screen Controls Used :                                         *>
  17.      *>                                                                *>
  18.      *> Pushbuttons        - To perform Actions                        *>
  19.      *> Simple Combo Box   - To populate an entry field with a value,  *>
  20.      *>                   or select an item from a list                *>
  21.      *> Drop Combo Box     - To populate an entry field with a value   *>
  22.      *>                   or select an item from a list which is only  *>
  23.      *>                   displayed if the user selects it.            *>
  24.      *> DropList Combo Box - To populate an entry field with a         *>
  25.      *>                   selection from a list.                       *>
  26.      *> MessageBox         - To display the selected values from the   *>
  27.      *>                      combo boxes.                              *>
  28.      *> The code in this class has been heavily commented, and further *>
  29.      *> explanations are given as in-line comments in columns 73       *>
  30.      *> Onwards.                                                       *>
  31.      *>                                                                *>
  32.      *> Copyright (C) 1996-2000  Micro Focus International Ltd.
  33.      *>--------------------------------------------------------------  *>
  34.                                                                        *>
  35.      *>------------------<CLASSS PROGRAM DEFINITION>-----------------  *>
  36.        class-id. ComboBoxDemo                                           *> Declare the name of this class.
  37.                  data is private                                        *> Declares that children of this class do not have access to it's data
  38.                  inherits from modal.                                   *> Forces this class to inherit the behaviour of the modal class from the class library. This implies that the dialog boxes created will be modal, I.E. you cannot move to other areas
  39.                                                                        *> of the application whilst a dialog box created by this class is active
  40.                                                                        *>
  41.        Object Section.                                                  *> Class Objects
  42.                                                                        *>
  43.        class-control.                                                   *> Declare the classes that this class uses directly
  44.            CharacterArray is class "chararry"                           *> From the class library - Used for translating strings to objects
  45.            OrderedCollection is class "ordrdcll"                        *> From the class library - Used to create collections of objects - similar to an array where data is stored in the order in which it was added to the array.
  46.            SortedCollection is class "srtdclln"                         *> From the class library - Used to create collection of objects which may be sorted - usually alphabetically
  47.            Module is class "module"                                     *> From the class library - Used to wrap classes that may contain resources - I.E. GUI objects in a DLL file
  48.            MessageBox is class "msgbox"                                 *> From the class library - we use this class for creating and handling message boxes
  49.            ComboBoxDemo is class "combobox"                             *> Our own class
  50.            Modal is class "modal"                                       *> From the class library - we use this class to create and control a modal dialog box
  51.            .                                                            *>
  52.                                                                        *>
  53.      *>------------------<COMMON CLASS & INSTANCE DATA>--------------  *>
  54.        working-storage section.                                         *> Declare the data that can be accessed from both the class and instances of the class
  55.      *> Copy Files                                                     *>
  56.        copy "mfres.cpy".                                                *> Copy file created by resource manager containing control names and symbol numbers
  57.        copy "p2cevent.cpy".                                             *> Panels2 copy file containing level 78 items used to identify events
  58.                                                                        *>
  59.      *>------------------<CLASS DEFINITION>--------------------------  *>
  60.        class-Object.                                                    *> Class data and methods start here
  61.                                                                        *>
  62.      *>------------------<COMMON CLASS & INSTANCE DATA>--------------  *>
  63.        object-storage section.                                          *> None required within this class
  64.                                                                        *>
  65.      *>------------------<CLASS METHODS>-----------------------------  *>
  66.        method-id. "ShowDemo".                                           *> The calling class invokes and executes this method to create and run the groupbox dialog
  67.                                                                        *>
  68.        local-storage section.                                           *>
  69.        01 lsid                     pic x(4) comp-5.                     *> Unique identifier for this dialog box
  70.        01 lsDialog                 object reference.                    *> Used as an object handle to the dialog which this class creates
  71.                                                                        *>
  72.        linkage section.                                                 *> Data passed from the invoking class
  73.        01 lnkParent                object reference.                    *> The resource .dll file containing the dialog box GUI object
  74.        01 lnkResource              object Reference.                    *> The parent of this dialog box, in this case another dialog box
  75.        procedure division using lnkParent lnkResource.                  *> The executable code of the Run method
  76.            move combo-box-screen to lsId                                *> Unique identifier for this dialog box using the symbol number for the dialog within the resource copy file
  77.            invoke self "fromResource" using lnkParent lnkResource       *> Locates the required Groupbox dialog box within the resource file, and creates it as an object (lsdialog) that we can then use
  78.                                            lsid returning lsDialog      *>
  79.            invoke lsdialog "create"                                     *> Initialize above created (lsdialog) instance object, which sets up the initial state of the dialog and events
  80.            invoke lsdialog "show"                                       *> Make the dialog visible, giving control to the eventmanager, and await user input.
  81.        exit method.                                                     *>
  82.        end method "ShowDemo".                                           *> End of "ShowDemo" Method
  83.        end class-object.                                                *> End of class data and methods
  84.                                                                        *>
  85.      *>------------------<INSTANCE DEFINITION>-----------------------  *>
  86.        object.                                                          *> Instance Data and Methods start here
  87.                                                                        *>
  88.      *>------------------<INSTANCE DATA>-----------------------------  *>
  89.        object-storage section.                                          *> Data declared here is visible throughout the scope of this class
  90.        01 SimpleComboItem          object reference.                    *> Used as an object handle to the Simple combo box item which will be created as a control within lsdialog by this class
  91.        01 DropComboItem            object reference.                    *> Used as an object handle to the Drop combo box item which will be created as a control within lsdialog by this class
  92.        01 DropListComboItem        object reference.                    *> Used as an object handle to the Droplist combo box item which will be created as a control within lsdialog by this class
  93.      *>------------------<INSTANCE METHODS>--------------------------  *>
  94.      *>--------------------------------------------------------------  *>
  95.        method-id. "Create".                                             *> instance Method invoked by the class method "RUN"
  96.        procedure division.                                              *>
  97.        invoke super "create"                                            *> invoke the inherited method to invoke and initialize the class
  98.        invoke self "LinkScreenEventsToMethods"                          *> Invoke method to map events to methods within this class
  99.        invoke self "LinkControlsToProgramFields"                        *> Invoke method to obtain object handles to the controls on the dialog for this class
  100.        invoke self "InitializeControls"                                 *> Invoke method to intialize the screen controls, in particular, to populate the combo boxes with values
  101.        exit method.                                                     *> Return control to the class method "RUN"
  102.        end method "Create".                                             *> End of "CREATE" method
  103.      *>--------------------------------------------------------------  *>
  104.                                                                        *>
  105.        method-id. "LinkScreenEventsToMethods".                          *> Instance method invoked from the create instance method "RUN"
  106.        local-storage section.                                           *> Contains data private to this method
  107.        01 lsId                         pic x(4) comp-5.                 *> Unique identifier for this dialog box
  108.        01 lsPushbutton                 object reference.                *> Object reference item used for storing object handles to push button controls on our dialog
  109.                                                                        *>
  110.        procedure division.                                              *>
  111.      *> Cancel Button.                                                 *>
  112.            move idCancel to lsId                                        *> Pick up the symbol number for the cancel control for our dialog
  113.            invoke self "GetObjectFromId" using lsId                     *> Obtain an object reference to the cancel control for our dialog, using the cancel control's symbol number
  114.                                      returning lsPushbutton             *>
  115.            map event clicked upon lspushbutton to method                *> Use the GUIBase Map method to link the event "clicked" upon our cancel pushbutton control to
  116.                z"OnEventCancel" upon self                               *> the method "Oncancel" within this class
  117.      *> OK Button                                                      *>
  118.            move IDOK to lsId                                            *> Similar processing as for Cancel button
  119.            invoke self "GetObjectFromId" using lsId                     *>
  120.                                      returning lsPushbutton             *>
  121.            map event clicked upon lspushbutton to method                *>
  122.                z"OnEventOK" upon self                                   *>
  123.      *> Dialog Close icon                                              *>
  124.            map event closed upon self to method                         *> For the close icon on the dialog, we don't need to obtain an object handle to it, as it is part of the dialog.
  125.                z"OnEventCancel" upon self                               *> in this case, we have mapped the dialog close to the same method as the cancel pusbutton.
  126.        exit method.                                                     *> Return control to the class method "RUN"
  127.        end method "LinkScreenEventsToMethods".                          *> End of method
  128.      *>--------------------------------------------------------------  *>
  129.                                                                        *>
  130.        method-id. "LinkControlsToProgramFields".                        *> Instance method invoked from the class instance method "RUN"
  131.        local-storage section.                                           *> Contains data private to this method
  132.        01 lsId pic x(4) comp-5.                                         *> Unique identifier for this dialog box
  133.        procedure division.                                              *>
  134.            move simple-combo-box to lsid                                *> Obtain symbol number for the simple combo box
  135.            invoke self "getobjectfromid" using lsId                     *> Obtain an object handle for the simple combo box
  136.                                      returning SimpleComboItem          *>
  137.            move drop-combo-box to lsid                                  *> Obtain symbol number for the drop combo box
  138.            invoke self "getobjectfromid" using lsId                     *> Obtain an object handle for the drop combo box
  139.                                      returning DropComboItem            *>
  140.            move droplist-combo-box to lsid                              *> Obtain symbol number for the droplist box
  141.            invoke self "getobjectfromid" using lsId                     *> Obtain an object handle for the droplist combo box
  142.                                      returning DropListComboItem        *>
  143.        exit method.                                                     *> Return control to the class method "RUN"
  144.        end method "LinkControlsToProgramFields".                        *> End of Method
  145.      *>--------------------------------------------------------------  *>
  146.                                                                        *>
  147.        method-id. "InitializeControls".                                 *> Instance method invoked from the class instance method "RUN"
  148.        local-storage section.                                           *> Contains data private to this method
  149.        01 aCollection  object reference.                                *> Object handle to the collection used to populate each combo selection box
  150.        procedure division.                                              *>
  151.            invoke self "PreDisplayList" returning aCollection           *> Invoke the Predisplaylist method within this class to populate the simple combo box
  152.            invoke SimpleComboItem "setcontents" using aCollection       *> Sets the contents of the combo box to those of the sorted collection
  153.            invoke DropComboItem "setcontents" using aCollection         *> Sets the contents of the combo box to those of the sorted collection
  154.            invoke DropListComboItem "setcontents" using aCollection     *> Sets the contents of the combo box to those of the sorted collection
  155.            invoke aCollection "deepfinalize" returning aCollection      *> Destroys the collection and all objects which it contains
  156.        exit method.                                                     *> Return control to the class method "RUN"
  157.        end method "InitializeControls".                                 *> End of Method
  158.      *>--------------------------------------------------------------  *>
  159.                                                                        *>
  160.        method-id. "OnEventOK".                                          *> Instance method invoked when the OK pushbutton is pressed
  161.        working-storage section.                                         *> Contains data required for this method
  162.        01 message-string.                                               *> Data item used for the string passed to the message box containing the item within each combo box which the user selected
  163.            03 simplecombo-text     pic x(19)                            *> String of text for titling the simple combo box value
  164.                                    value "Simple box Value : ".         *>
  165.            03 simplecombovalue     pic x(10).                           *> Stores the user selected value for the simple combo box
  166.            03 simple-terminate     pic xx value is x"0D0A".             *> Carriage return line feed required to force line seperation in the displayed message box
  167.            03 dropcombo-text       pic x(17)                            *> String of text for titling the drop combo box value
  168.                                    value "Drop box Value : ".           *>
  169.            03 dropcombovalue       pic x(10).                           *> Stores the user selected value for the drop combo box
  170.            03 dropcombo-terminate  pic xx value is x"0D0A".             *> Carriage return line feed required to force line seperation in the displayed message box
  171.            03 droplist-text        pic x(21)                            *> String of text for titling the droplist combo box value
  172.                                    value "DropList box Value : ".       *>
  173.            03 droplistcombovalue   pic x(10).                           *> Stores the user selected value for the droplist combo box
  174.            03 droplist-terminate   pic x value is x"00".                *> Null termination of message-string to enable the string to be passed to the null terminated setmessage method of the message box class
  175.        local-storage section.                                           *> Contains data private to this method
  176.        01 lsMsgBox                 object reference.                    *> The object handle to the message box
  177.        01 StringLength             pic x(4) comp-5.                     *> Contains the length of string to be returned when using the getvaluewithsize method to accept the user selected input from each combo box
  178.        01 SimpleComboRef           object reference.                    *> Object handle to the user selected input on the simple combo box
  179.        01 DropComboRef             object reference.                    *> Object handle to the user selected input on the drop combo box
  180.        01 DropListComboRef          object reference.                   *> Object handle to the user selected input on the droplist combo box
  181.                                                                        *>
  182.        procedure division.                                              *>
  183.        invoke SimpleComboItem "gettext" returning SimpleComboRef        *> Obtain an object handle to the user selected input within the simple combo box control
  184.        move length of SimpleComboValue to StringLength                  *> Move the maximum length of item that the combo box could contain, to stringlength
  185.        invoke SimpleComboRef "GetValueWithSize" using StringLength      *> Extract the value (of length stringlength) of the users input within the simple combobox Using the object handle for the user selected input, placing it into the item
  186.            returning SimpleComboValue                                   *> simplecombovalue
  187.        invoke DropComboItem "GetText" returning DropComboRef            *> Obtain an object handle to the user selected input within the simple combo box control
  188.        move length of DropComboValue to StringLength                    *> Move the maximum length of item that the combo box could contain, to stringlength
  189.        invoke DropComboRef "GetValueWithSize" using StringLength        *> Extract the value (of length stringlength) of the users input within the simple combobox Using the object handle for the user selected input, placing it into the item
  190.            returning DropComboValue                                     *> dropcombovalue
  191.        invoke DropListComboItem "GetText" returning DropListComboRef    *> Obtain an object handle to the user selected input within the simple combo box control
  192.        move length of DropListComboValue to StringLength                *> Move the maximum length of item that the combo box could contain, to stringlength
  193.        invoke DropListComboRef "GetValueWithSize" using StringLength    *> Extract the value (of length stringlength) of the users input within the simple combobox Using the object handle for the user selected input, placing it into the item
  194.            returning DropListComboValue                                 *> droplistcombovalue
  195.        invoke MessageBox "new" using self returning lsMsgBox            *> Create an instance of the messagebox class (from the GUI class library) returning an object handle to it
  196.                                                                        *> Note - the message box to be displayed will have default properties - I.E. and OK button.
  197.        invoke lsMsgBox "SetTitlez" using                                *> Set the title of the message box to the contents of a null terminated string
  198.            z"User Selections From Combination Selection Boxes"          *>
  199.        invoke lsMsgBox "setMessagez" using Message-String               *> Set the message to be displayed within the message box to be the null terminated string message-string (note method used is setmessageZ)
  200.        invoke lsMsgBox "show"                                           *> Display the message box, passing control to the event manager, which will await the user pressing the OK button before control will return to the next statement in this method
  201.        invoke lsMsgBox "finalize" returning lsMsgBox                    *> Remove all object references used by the message box
  202.        exit method.                                                     *> Return control to the eventmanger, which will continue to poll for events on our dialog
  203.        end method "OnEventOK".                                          *> End of method
  204.      *>--------------------------------------------------------------  *>
  205.                                                                        *>
  206.        exit method.                                                     *> Return control to the calling method
  207.        end method "PreDisplayList".                                     *> End of method
  208.      *>--------------------------------------------------------------  *>
  209.                                                                        *>
  210.        end object.                                                      *> End of instance and data methods
  211.        end class ComboBoxDemo.                                          *> End of this class

Aquí tenemos class-Object (Class data and methods start here) y object (Instance Data and Methods start here). ¿Cómo se puede declarar un método a una instancia que no existe aún? Porque la instancia la obtendremos creándola a partir de la clase. Y cómo asociaríamos ese método de instancia a una instancia que se crea en dinámico (claramente)...

Me estoy liando con esto, a ver si lo puedes explicar bien.


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Nitzer ( 2 de febrero de 2017)
  #7
Antiguo 31 de enero de 2017, 10:27
IDENTIFICATION DIVISION
Eslopes
Guru de OO COBOL
ENVIRONMENT DIVISION
Avatar de Eslopes
DATA DIVISION
Forero desde (Registrado)agosto 2015
Brasil
Última Actividad09.07.2018 17:28
PROCEDURE DIVISION
PostsPosts: 66
Ha dicho GraciasEnviado: 17
Ha recibido agradecimientosRecibido: 29
ReputaciónReputación: 6
Eslopes is on a distinguished road Eslopes is on a distinguished road Eslopes is on a distinguished road
Predeterminado
1 usuarios han marcado este post como "Solución"

Ah, Micro Focus, por que simplificar se podemos complicar? :P

class-object é o equivalente a factory nesta sintaxe da Micro Focus.
object são os métodos da instância. Os comentários no código estão confusos, aliás todo código da Micro Focus é confuso porque a MF insiste em tentar reescrever o Cobol. Neste ponto a Fujistu era muito melhor.

O exemplo abaixo é compliant com o ANSI 2002 e veio do próprio site da MF. Veja se esclarece:

Código COBOL:
  1. class-id. Example inherits
  2.                from Base.  
  3. environment division.  
  4. ...
  5. configuration section.  
  6. repository.            
  7. class Example as "exmp"
  8. class Base as "base"
  9. class CharacterArray.  
  10.  
  11. ...
  12.    factory.            *> CLASS-OBJECT      
  13.    data division.
  14.    working-storage section.
  15.    ...
  16.         method-id. "newWithData".
  17.         ...
  18.         end method "newWithData".
  19.    end-factory.        *> END CLASS-OBJECT.
  20.              
  21.    object.                    
  22.    working-storage section.
  23.     ...
  24.         method-id. "sayHello".
  25.         ...
  26.         end method "sayHello".
  27.    end object.                  
  28. end class Example.
Eslopes no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 2
Kuk (31 de enero de 2017), Nitzer ( 2 de febrero de 2017)
  #8
Antiguo 31 de enero de 2017, 13:46
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Eslopes, gracias por la aclaración. Efectivamente, en este otro ejemplo de MF usan FACTORY y no CLASS-OBJECT:

Código COBOL:
  1.  cbl dll,thread,pgmname(longmixed),lib
  2.  Identification Division.
  3.  Class-id. Account inherits Base.
  4.  Environment Division.
  5.  Configuration section.
  6.  Repository.
  7.      Class Base    is "java.lang.Object"
  8.      Class Account is "Account".
  9. *
  10.  Identification division.
  11.  Factory.
  12.   Data division.
  13.   Working-storage section.
  14.   01 NumberOfAccounts pic 9(6) value zero.
  15. *
  16.   Procedure Division.
  17. *
  18. *    createAccount method to create a new Account
  19. *    instance, then invoke the OBJECT paragraph's init
  20. *    method on the instance to initialize its instance data:
  21.    Identification Division.
  22.    Method-id. "createAccount".
  23.    Data division.
  24.    Linkage section.
  25.    01 inAccountNumber  pic S9(6) binary.
  26.    01 outAccount object reference Account.
  27. *      Facilitate access to JNI services:
  28.      Copy JNI.
  29.    Procedure Division using by value inAccountNumber
  30.        returning outAccount.
  31. *      Establish addressability to JNI environment structure:
  32.      Set address of JNIEnv to JNIEnvPtr
  33.      Set address of JNINativeInterface to JNIEnv
  34.      Invoke Account New returning outAccount
  35.      Invoke outAccount "init" using by value inAccountNumber
  36.      Add 1 to NumberOfAccounts.
  37.    End method "createAccount".
  38. *
  39.  End Factory.
  40. *
  41.  Identification division.
  42.  Object.
  43.   Data division.
  44.   Working-storage section.
  45.   01 AccountNumber  pic 9(6).
  46.   01 AccountBalance pic S9(9) value zero.
  47. *
  48.   Procedure Division.
  49. *
  50. *    init method to initialize the account:
  51.    Identification Division.
  52.    Method-id. "init".
  53.    Data division.
  54.    Linkage section.
  55.    01 inAccountNumber pic S9(9) binary.
  56.    Procedure Division using by value inAccountNumber.
  57.      Move inAccountNumber to AccountNumber.
  58.    End method "init".
  59. *
  60. *    getBalance method to return the account balance:
  61.    Identification Division.
  62.    Method-id. "getBalance".
  63.    Data division.
  64.    Linkage section.
  65.    01 outBalance pic S9(9) binary.
  66.    Procedure Division returning outBalance.
  67.      Move AccountBalance to outBalance.
  68.    End method "getBalance".
  69. *
  70. *    credit method to deposit to the account:
  71.    Identification Division.
  72.    Method-id. "credit".
  73.    Data division.
  74.    Linkage section.
  75.    01 inCredit   pic S9(9) binary.
  76.    Procedure Division using by value inCredit.
  77.      Add inCredit to AccountBalance.
  78.    End method "credit".
  79. *
  80. *    debit method to withdraw from the account:
  81.    Identification Division.
  82.    Method-id. "debit".
  83.    Data division.
  84.    Linkage section.
  85.    01 inDebit    pic S9(9) binary.
  86.    Procedure Division using by value inDebit.
  87.      Subtract inDebit from AccountBalance.
  88.    End method "debit".
  89. *
  90. *    print method to display formatted account number and balance:
  91.    Identification Division.
  92.    Method-id. "print".
  93.    Data division.
  94.    Local-storage section.
  95.    01 PrintableAccountNumber  pic ZZZZZZ999999.
  96.    01 PrintableAccountBalance pic $$$$,$$$,$$9CR.
  97.    Procedure Division.
  98.      Move AccountNumber  to PrintableAccountNumber
  99.      Move AccountBalance to PrintableAccountBalance
  100.      Display " Account: " PrintableAccountNumber
  101.      Display " Balance: " PrintableAccountBalance.
  102.    End method "print".
  103. *
  104.  End Object.
  105. *
  106.  End class Account.

MF es muy permisivo, le pasas una poesía y lo compila también. Demasiado liberal, en mi opinión.

CONCLUSIÓN: Class-Object y Factory son exactamente lo mismo, dependiendo del compilador que se use. En Fujitsu hay que siempre utilizar FACTORY, en MF se puede utilizar ambos.

Eslopes, corrígeme si algo no es correcto.


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #9
Antiguo 2 de febrero de 2017, 00:22
IDENTIFICATION DIVISION
Eslopes
Guru de OO COBOL
ENVIRONMENT DIVISION
Avatar de Eslopes
DATA DIVISION
Forero desde (Registrado)agosto 2015
Brasil
Última Actividad09.07.2018 17:28
PROCEDURE DIVISION
PostsPosts: 66
Ha dicho GraciasEnviado: 17
Ha recibido agradecimientosRecibido: 29
ReputaciónReputación: 6
Eslopes is on a distinguished road Eslopes is on a distinguished road Eslopes is on a distinguished road
Predeterminado

Olá, sobre o site 100coolthings, desde que saí da IBM no ano passado desliguei sites que não geravam $$$. O 100coolthings era para ter se tornado um livro sobre OO Cobol, mas a falta de interesse das pessoas sobre o tema me desanimou. OO Cobol é um tipo de tecnologia que faz sentido no ambiente Cobol, mas Cobol não faz mais sentido para ninguém (exceto os poucos entusiastas da linguagem).

Saludos
Eslopes no ha iniciado sesión   Responder Con Cita
  #10
Antiguo 2 de febrero de 2017, 08:36
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad33 años
Última Actividad13.12.2018 23:01
PROCEDURE DIVISION
PostsPosts: 1.319
Ha dicho GraciasEnviado: 280
Ha recibido agradecimientosRecibido: 480
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Eslopes, yo estoy bastante interesado! Así que todo lo que puedas contarnos, bienvenido es! Tienes este Foro para poner ejemplos y explicar todo lo que creas necesario sobre el tema.


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Respuesta

Tags
class-object , cobol 2000 , cobol 2002 , factory , object , object-oriented , oocobol


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 18:06.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2018, Jelsoft Enterprises Ltd.