UML图中的受保护方法?

Protected method in UML diagram?

我有以下 UML 展示了如何创建 class Point2D

我已经根据 UML 为此 class 创建了一个头文件:

#ifndef Point2D_h
#define Point2D_h

using namespace std;

// Header file for class Point2D

class Point2D
{
    protected:
        int x;
        int y;
        double distFrOrigin;
        setDistFrOrigin();
    
    public:
        Point2D()
        {
            x = 0;
            y = 0;
        }

        Point2D(int xInput, int yInput)
        {
            x = xInput;
            y = yInput;
        }

        int getX();
        int getY();
        double getScalarValue();
    
        int setX(int x);
        int setY(int y);    
};

#endif

但是,我对方法感到困惑setDistFrOrigin()。该方法位于 UML 操作内部,并且是受保护的方法。我应该将它与 class 中的 protected 分组吗?或者有没有办法在 class 的 public 块中声明受保护?正确的方法应该是什么?

完全自由

C++ 为您提供了完全的自由。例如,您可以:

  • access specifier 对成员进行分组。您可以在一个部分中对变量和函数进行光学分组;
  • 按照 UML 对成员进行分组,一侧是变量,另一侧是函数,每次都有一个 privateprotectedpublic 部分。

补充说明

  • 风格是个人品味的问题,being consistent is more important比选择的风格更重要。所以在一个团队中,总是采用团队的风格。
  • 请记住,必须有人维护代码,并且访问说明符在来回滚动时可能很容易被忽略。 3 或 4 个部分是可管理的。如果你有 6 个部分,如果是静态成员,甚至有 12 个部分,它就会开始变得难以阅读。
  • 另一个 SO question 对成员的排序更为笼统。说明众说纷纭,除了数据和函数,还有常量和类型。
  • 一个被广泛接受的建议是将 public 部分放在拳头上(参见 Bruno 的评论 + C++ Core Guideline, Google coding standards, and similar style guide)。不过,如果您是通过 Stroustrup 的旧书学习 C++ 的,那么您不会对所有私有数据都在开头起作用而感到震惊,而在 class 中间只有一个 public 关键字其次是函数,这与 UML 布局相距不远)

不相关: