获取/设置功能以更改文本和颜色

Get/Set function to change text and color

本文关键字:文本 颜色 设置 功能 获取      更新时间:2023-10-16

我试图创建一个名为Label的类。标签是纯文本控件。人们应该能够通过get/set函数更改标签的文本和颜色。我认为这是一种通过 get/set 函数更改标签文本的方法。但我不确定颜色。任何建议都将得到认可。

<pre>
class Label
{
private:
    std::string text;
    int color;
public:
    Label();
    void SetText(string Ntext);
    void SetColor(int value);
    int GetColor();
    string GetText();
    ~Label();
};
<code>
<pre>
Label::Label()
{
}
string Label::GetText()
{
    return text;
}
void Label::SetText(string Ntext)
{
    text = Ntext;
}
int Label::GetColor()
{
    return color;
}
void Label::SetColor(int value)
{
    color = value;
}
Label::~Label()
{
}
<code>

您可以将颜色设置为包含红色蓝色和绿色的数组。

int color[3];
void SetColor(int red, int green, int blue){
this->color[0] = red;
this->color[1] = green;
this->color[2] = blue;
}

除了如何表示颜色的问题(实际上根据类的使用方式而变化,例如,它可以是简单的redblackwhite等字符串),另一件需要考虑的事情是,就 OOP 而言,拥有 getter 和 setter 并不好。

OOP 的思想是隐藏对象中的数据,并指示这些对象做一些有用的事情(向他们发送消息)。

使用 getter 和 setter,您可以打开内部实现(实际上与将textcolor定义为公共属性相同。听起来不太好,对吧?但实际上就是这样,您可以像公开一样阅读和修改它们。

因此,更好的实现可能是将文本和颜色都作为构造函数参数。这样标签就有足够的信息来显示,所以你不需要有二传手/getter,像这样:

class Label
{
private:
    std::string text;
    int color;
public:
    Label(string text, string color);
    ~Label();
    // display the label on the `canvas`
    void display(Canvas* canvas);
};

有关吸气手/二传手主题的更多信息:

  • 为什么getter和setter方法是邪恶的
  • 更多关于吸气手和二传手的信息
  • 吉特/二传手。邪。时期。