【发布时间】:2020-12-17 18:06:35
【问题描述】:
我有一个由服务器组成的应用程序,该服务器可以有两种类型的多个客户端,用户客户端和设备客户端。为此,我有一个客户端基类的向量,我将在新客户端连接到服务器时添加它们。这是我所拥有的简化版本:
class Client
{
protected:
int m_port;
Client(int port): m_port{port}{}
public:
virtual ~Client(){}
}
class User: public Client
{
public:
User(int port): Client{port}{}
virtual ~User(){}
}
class Device: public Client
{
public:
User(int port): Client{port}{}
virtual ~Device(){}
}
class Server
{
public:
Server(int port): m_port{port}{}
~Server()
{
for (std::vector<Client*>::iterator it = m_clients.begin();
it != m_clients.end();
it++){
free(m_clients.pop_back());
}
}
void run()
{
if(m_port == 1){
m_clients.pushback(new User(port));
}else{
m_clients.pushback(new Device(port));
}
}
private:
int m_port;
std::vector<Client*> m_clients;
}
我有以下 UML 表示:
我怀疑这张图是否代表了正确的意图。也许我对 UML 不是很有经验,这已经足够了,但我认为这张图并没有清楚地描述服务器中的向量将包含 User(s) 和 Device 的事实(s)而不是客户(s)。我不知道我是否需要像这样添加额外的刻板印象标签、额外的注释或额外的链接或关联:
那么,如何在 UML 中正确表示这种 c++ 类关系?
【问题讨论】:
标签: uml class-diagram