Skip to main content

Elemento: Clase

Una clase es una unidad lógica con datos y operaciones encapsulados. También representa un tipo de variable que se puede instanciar. Cuando la instancia de una clase se asigna como variable a otra clase, esto se conoce como el rol o expresión de la clase.

Una clase puede proporcionar un método. FB_Init que se llama al inicializar una instancia.

Una clase puede heredar de otra clase. Esta relación se llama generalización.

Una clase puede instanciar otra clase. Esta relación se llama composición.

Una clase puede reconocer otra clase. Esta relación se llama asociación.

Una clase puede ser una POU, una biblioteca POU (tipo: programa), un bloque de funciones o una función.

_uml_img_class_all.png

(1)

Iconos de comando

Sugerencia

Cuando se selecciona una clase, sus símbolos de comando son visibles.

(2)

Encabezamiento

  • ID para el tipo de POU

    • <<program>> para un programa (PRG)

    • Sin ID para un bloque de función (FB)

    • <<function>> para una función (DIVERSIÓN)

    • <<library>> para una biblioteca POU

    • <<missing>> para una biblioteca POU cuya biblioteca no está integrada en el proyecto

    • <<compiled>>: Para una biblioteca POU de una biblioteca compilada

      Nota

      No toda la información puede estar disponible.

  • Nombre de la POU

(3)

Lista de atributos

La entrada tiene el siguiente formato: <attribute name> : <attribute type> <label>

Ejemplo: fbBase : FB_BaseClass

IDENTIFICACIÓN: <label>

  • {input}: Para una variable de VAR_IN alcance

  • {output}: Para una variable de VAR_OUT alcance

  • Ninguna: ID de una variable interna e invisible (escriba: VAR)

(4)

Lista de operaciones (acciones, métodos o propiedades)

Ejemplo:

ACT_DoIt(){action}

METH_DoIt(...) DWORD

PROP_Counter Set(...)

PROP_Counter Get (...)

Una entrada para métodos tiene el formato:

+ <method name> (<variable name> : < variable type> ) <return type>

En el caso de una entrada para un _cds_icon_interface_property.png propiedad de interfaz, la especial Set y Get se enumeran los métodos.

Una entrada para acciones tiene el formato:

<action name> () {action}

Lo siguiente se aplica a <etiqueta>:

  • Sólo se identifica una acción con el {action} IDENTIFICACIÓN.

  • Un método o una propiedad de interfaz _cds_icon_interface_property.png (método especial) no tienen una identificación.

Propiedades

identificador

nombre de la clase

Ejemplo: Manager_A

Entrada del usuario

La clase tiene listas ampliadas de atributos y operaciones que se identifican con _uml_icon_checkbox_minus.png. Los iconos de comando están visibles encima de la clase. Puede usarlos para insertar elementos de relación.

Acción

Resultado

En el BaseClass clase, haga clic en el _uml_icon_delete_shallow.png icono de comando

los BaseClass la clase se elimina solo del diagrama de clases. El objeto en sí permanece en el proyecto.

Sugerencia

Después de ser eliminada, la clase se muestra en la Caja de herramientas ver en Referencias cruzadas entrantes o Referencias cruzadas salientes. El requisito para esto es que seleccione un elemento en el diagrama de clases que tenga una relación con la clase eliminada.

Haga clic en el _uml_icon_delete_deep.png icono de comando

los BaseClass la clase se elimina solo en el diagrama de clases. El objeto se elimina y ya no existe.

  1. Haga clic en el _uml_icon_composition.png icono de comando

  2. Haga clic en un área en blanco en el diagrama.

    los Añadir POU se abre el cuadro de diálogo.

  3. Especifique un nombre para el nuevo objeto.

    NewClass

  4. Haga clic en el Agregar botón para finalizar el diálogo.

los NewClass se genera un bloque de funciones y allí se instancia una instancia de la primera clase.

Una flecha de composición apunta desde el nuevo NewClass clase a la primera BaseClass clase.

La clase se ha ampliado mediante la declaración de una instancia de bloque de funciones de la primera clase.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Haga clic en el _uml_icon_composition.png icono de comando

  2. Haga clic en la segunda clase.

Una flecha de composición apunta desde la segunda clase a la primera clase.

La segunda clase se ha ampliado mediante la declaración de una instancia de bloque de funciones de la primera clase.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Haga clic en el _uml_icon_association.png icono de comando

  2. Haga clic en un área en blanco en el diagrama.

    los Añadir POU se abre el cuadro de diálogo.

  3. Especifique un nombre para el nuevo objeto.

    NewClass

  4. Haga clic en el Agregar botón para finalizar el diálogo.

El nuevo NewClass se genera una clase y se declara allí un puntero de la primera clase.

Una flecha de asociación apunta desde la nueva clase a la primera clase. El primero BaseClass la clase reconoce el nuevo NewClass clase.

los NewClass clase se ha ampliado mediante la declaración de un puntero a la BaseClass clase.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Haga clic en el _uml_icon_association.png icono de comando

  2. Haga clic en la segunda clase existente.

Una flecha de asociación apunta desde la primera clase a la segunda clase. La primera clase reconoce a la segunda clase.

La primera clase se ha ampliado mediante la declaración de un puntero a la segunda clase.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Haga clic en el _uml_icon_generalization.png icono de comando

  2. Haga clic en un área en blanco en el diagrama.

    los Añadir POU se abre el cuadro de diálogo.

  3. Especifique un nombre para el nuevo objeto.

    NewClass

  4. Haga clic en el Agregar botón para finalizar el diálogo.

Se genera una nueva clase que hereda de la primera clase.

Una generalización apunta de la nueva clase a la primera clase. La nueva clase hereda de la primera clase.

La declaración de la nueva clase ha sido generada con EXTENDS como una extensión de la primera clase.

FUNCTION_BLOCK ClassNew EXTENDS BaseClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Haga clic en el _uml_icon_association.png icono de comando

  2. Haga clic en la segunda clase existente.

Una generalización apunta de la primera clase a la primera clase.

La declaración de la segunda clase se ha generado con la extensión de la primera clase.

FUNCTION_BLOCK SecondClass EXTENDS BaseClass

  1. Haga clic en el _uml_icon_realization.png icono de comando

  2. Haga clic en un área en blanco en el diagrama.

    los Añadir interfaz se abre el cuadro de diálogo.

  3. Especifique un nombre para el nuevo objeto.

    ITF_New

  4. Haga clic en el Agregar botón para finalizar el diálogo.

Se genera una interfaz que se implementa desde la clase saliente.

Una flecha de implementación apunta desde la clase a la nueva ITF_A interfaz.

Ahora la clase implementa la nueva interfaz. La declaración de la clase se ha ampliado con la implementación.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_New
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Haga clic en el _uml_icon_association.png icono de comando

  2. Haga clic en una interfaz existente.

La interfaz es implementada por la clase.

Una flecha de realización apunta desde la clase a la interfaz.

La declaración de la clase se ha ampliado con la implementación de la interfaz.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Haga clic en el nombre de la clase.

    El nombre se destaca en azul después del primer clic.

  2. Haga clic en él una segunda vez.

    Después de hacer clic por segunda vez, se abre un campo de entrada para cambiar el nombre.

  3. Cambia el nombre de la clase.

El nombre del objeto (en el árbol de dispositivos o en el POU vista) se ha adaptado automáticamente en la declaración.

  1. Haga clic en un nombre de atributo o de operación.

    El nombre se destaca en azul después del primer clic.

  2. Haga clic en él una segunda vez.

    Después de hacer clic por segunda vez, se abre un campo de entrada para cambiar el nombre.

  3. Cambia el nombre.

El cambio se aplica en el proyecto de forma síncrona y automática.

Haga doble clic en el elemento de clase.

Se abre el editor de objetos correspondiente.

Ejemplos

ejemplo 6. Composición: Fb_D contiene Fb_A
_uml_img_example_composition.png
FUNCTION_BLOCK Fb_D
VAR
    VarFb_A: Fb_A;
    ...
END_VAR


ejemplo 7. Asociación: Fb_A reconoce Class_2
_uml_img_example_assoziation_class_simple.png
FUNCTION_BLOCK Fb_A
VAR
    Class_2 : POINTER TO Class_2;
END_VAR


ejemplo 8. Generalización: Fb_A hereda de Fb_Base
_uml_img_example_generalization_function_block.png
FUNCTION_BLOCK Fb_A EXTENDS Fb_Base


ejemplo 9. Implementación: Class_A implementa Itf_A
_uml_img_example_realization.png
FUNCTION_BLOCK Class_A IMPLEMENTS Itf_A