在UML中如何描述以"void*"作为输入的成员函数?

How to describe a member function with "void*" as input in UML?

我是UML新手,如何用带void*的成员函数来描述下面的class?

// used on linux
#include <unistd.h>

class LinuxReadWrapper
{
  public:
    LinuxReadWrapper(){/** Ctor */}
    ~LinuxReadWrapper(){/** Dtor */}

    ssize_t WrapperRead(void* buf)
    {
      return read(fd, buf, cnt);
    }

  private:
    int fd{-1};
    size_t cnt{0};
};

谢谢!

一个解决方案可能是在您的模型中创建一个 void 或 void* 类型。 然后在下面输入您的输入参数。 这也取决于您是仅出于文档目的还是出于代码目的需要它 generation/reverse。在最后一种情况下,这将取决于所使用的工具...

虽然红熊的回答很实用,但还是要提醒一下:

  • UML 内置 primitive types 限于:IntegerStringBooleanUnlimitedNaturalReal
  • UML 类型可以在 profile. Such a profile can extend the UML standard metamodel and introduce new «datatype» 的帮助下扩展。配置文件是一个包,您可以将其导入到所有需要它的模型中。为编程语言特定类型提供编程语言配置文件是很常见的。
  • 指针(例如my_type *)需要格外小心,因为通常指针不是与 UML 模型相关的类型,因为指针的目的是实现与普通对象的关联(例如 class my_type)。
  • 在这方面,void* 指针有些特殊,因为它指向未知类型的对象,因此保持它在模型中的原样是一种可以理解的方法。

好消息是数据类型是 UML 的标准特性。因此,在任何体面的建模工具中,您都应该找到一种方法。例如:

  • Enterprise Architect 允许您向项目添加新的数据类型
  • StarUML 允许您向项目添加新的数据类型
  • Visual Pardigm 允许您向项目配置添加新的数据类型
  • 许多工具只允许您使用您想要的任何类型。 Visual Studio 例如,只允许您使用任何数据类型,并将无法识别的类型添加到模型中。
  • 等...