Skip to main content

元素:类

类是具有封装数据和操作的逻辑单元。它还表示可以实例化的变量类型。当一个类的实例作为变量分配给另一个类时,这被称为类的角色或表达式。

一个类可以提供一个方法 FB_Init 在初始化实例时调用。

一个类可以继承自另一个类。这种关系称为泛化。

一个类可以实例化另一个类。这种关系称为组合。

一个类可以识别另一个类。这种关系称为关联。

类可以是 POU、库 POU(类型:程序)、功能块或函数。

_uml_img_class_all.png

(1)

命令图标

提示

当一个类被选中时,它的命令符号是可见的。

(2)

标题

  • POU 类型的 ID

    • <<program>> 对于一个程序(PRG)

    • 功能块 (FB) 没有 ID

    • <<function>> 函数(FUN)

    • <<library>> 对于图书馆 POU

    • <<missing>> 对于库未集成到项目中的库 POU

    • <<compiled>>: 对于来自已编译库的库 POU

      注意

      并非所有信息都可用。

  • POU 的名称

(3)

属性列表

该条目具有以下格式: <attribute name> : <attribute type> <label>

例子: fbBase : FB_BaseClass

ID: <label>

  • {input}:对于一个变量 VAR_IN 范围

  • {output}:对于一个变量 VAR_OUT 范围

  • 没有: 内部不可见变量的 ID(类型: VAR)

(4)

操作列表(操作、方法或属性)

例子:

ACT_DoIt(){action}

METH_DoIt(...) DWORD

PROP_Counter Set(...)

PROP_Counter Get (...)

方法的条目具有以下格式:

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

在一个条目的情况下 _cds_icon_interface_property.png 接口属性,特殊 SetGet 列出了方法。

动作条目具有以下格式:

<action name> () {action}

以下适用于 <label>:

  • 只有一个动作被标识为 {action} ID。

  • 方法或接口属性 _cds_icon_interface_property.png (特殊方法)没有身份证。

特性

标识符

班级名称

例子: Manager_A

用户输入

该类具有扩展的属性和操作列表,其标识为 _uml_icon_checkbox_minus.png.命令图标在类上方可见。您可以使用这些来插入关系元素。

行动

结果

在里面 BaseClass 类,点击 _uml_icon_delete_shallow.png 命令图标。

BaseClass 类仅从类图中删除。对象本身保留在项目中。

提示

删除后,类显示在 工具箱 查看 传入的交叉引用 要么 传出交叉引用.这样做的要求是您在类图中选择一个与已删除类有关系的元素。

点击 _uml_icon_delete_deep.png 命令图标。

BaseClass 类仅在类图中被删除。该对象被删除并且不再存在。

  1. 点击 _uml_icon_composition.png 命令图标。

  2. 单击图表中的空白区域。

    添加 POU 对话框打开。

  3. 指定新对象的名称。

    NewClass

  4. 点击 添加 按钮结束对话框。

NewClass 生成功能块并在那里实例化第一个类的实例。

一个合成箭头指向新的 NewClass 班到第一 BaseClass 班级。

该类已通过声明第一个类的功能块实例进行了扩展。

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. 点击 _uml_icon_composition.png 命令图标。

  2. 单击第二类。

合成箭头从第二类指向第一类。

第二类已通过第一类的功能块实例的声明进行了扩展。

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. 点击 _uml_icon_association.png 命令图标。

  2. 单击图表中的空白区域。

    添加 POU 对话框打开。

  3. 指定新对象的名称。

    NewClass

  4. 点击 添加 按钮结束对话框。

新的 NewClass 生成类并在那里声明第一个类的指针。

关联箭头从新类指向第一个类。首先 BaseClass 类承认新 NewClass 班级。

NewClass 类已通过声明指向 BaseClass 班级。

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. 点击 _uml_icon_association.png 命令图标。

  2. 单击现有的第二类。

关联箭头从第一类指向第二类。第一类承认第二类。

第一个类已通过声明指向第二个类的指针进行了扩展。

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. 点击 _uml_icon_generalization.png 命令图标。

  2. 单击图表中的空白区域。

    添加 POU 对话框打开。

  3. 指定新对象的名称。

    NewClass

  4. 点击 添加 按钮结束对话框。

生成一个继承自第一个类的新类。

从新类到第一类的概括点。新类继承自第一个类。

新类的声明已生成 EXTENDS 作为第一类的延伸。

FUNCTION_BLOCK ClassNew EXTENDS BaseClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. 点击 _uml_icon_association.png 命令图标。

  2. 单击现有的第二类。

泛化点从第一类到第一类。

第二类的声明是由第一类的扩展生成的。

FUNCTION_BLOCK SecondClass EXTENDS BaseClass

  1. 点击 _uml_icon_realization.png 命令图标。

  2. 单击图表中的空白区域。

    添加接口 对话框打开。

  3. 指定新对象的名称。

    ITF_New

  4. 点击 添加 按钮结束对话框。

生成一个从传出类实现的接口。

实现箭头从类指向新的 ITF_A 界面。

现在该类实现了新接口。类的声明已随实现进行了扩展。

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_New
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. 点击 _uml_icon_association.png 命令图标。

  2. 单击现有接口。

接口由类实现。

实现箭头从类指向接口。

类的声明已通过接口的实现进行了扩展。

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. 单击班级名称。

    第一次单击后,名称以蓝色轮廓显示。

  2. 再次单击它。

    第二次单击后,将打开一个输入字段以更改名称。

  3. 更改班级名称。

对象名称(在设备树或 POU view) 已在声明中自动调整。

  1. 单击属性名称或操作名称。

    第一次单击后,名称以蓝色轮廓显示。

  2. 再次单击它。

    第二次单击后,将打开一个输入字段以更改名称。

  3. 更改名称。

更改将同步自动应用到项目中。

双击类元素。

相应的对象编辑器打开。

例子

6. 组成:Fb_D 包含 Fb_A
_uml_img_example_composition.png
FUNCTION_BLOCK Fb_D
VAR
    VarFb_A: Fb_A;
    ...
END_VAR


7. 关联:Fb_A 识别 Class_2
_uml_img_example_assoziation_class_simple.png
FUNCTION_BLOCK Fb_A
VAR
    Class_2 : POINTER TO Class_2;
END_VAR


8. 泛化:Fb_A 继承自 Fb_Base
_uml_img_example_generalization_function_block.png
FUNCTION_BLOCK Fb_A EXTENDS Fb_Base


9. 实现:Class_A 实现 Itf_A
_uml_img_example_realization.png
FUNCTION_BLOCK Class_A IMPLEMENTS Itf_A