Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UML图和C++;设计模式 刚刚开始学习C++设计模式,从初学者开始。我终于开始阅读网站了。但在遇到图像后,我无法将图像映射到实际的类(及其接口)构造中_C++_Design Patterns_Uml - Fatal编程技术网

UML图和C++;设计模式 刚刚开始学习C++设计模式,从初学者开始。我终于开始阅读网站了。但在遇到图像后,我无法将图像映射到实际的类(及其接口)构造中

UML图和C++;设计模式 刚刚开始学习C++设计模式,从初学者开始。我终于开始阅读网站了。但在遇到图像后,我无法将图像映射到实际的类(及其接口)构造中,c++,design-patterns,uml,C++,Design Patterns,Uml,矩形、箭头、虚线是什么?我们如何将其转换为实际的代码实现?这是一种描述软件设计的UML语言。这和设计模式独立于任何编程语言这是一种描述软件设计的UML语言。这种模式和设计模式独立于任何编程语言图表是用UML-绘制的。您应该真正熟悉它们,因为为了研究设计模式,您并不需要实际的代码。是的,好吧,最终你必须用你想要的语言实现设计模式,但是对模式的理解必须比代码更高。图表是用UML绘制的。您应该真正熟悉它们,因为为了研究设计模式,您并不需要实际的代码。是的,好吧,最终你必须用你想要的语言实现设计模式,但

矩形、箭头、虚线是什么?我们如何将其转换为实际的代码实现?

这是一种描述软件设计的UML语言。这和设计模式独立于任何编程语言

这是一种描述软件设计的UML语言。这种模式和设计模式独立于任何编程语言

图表是用UML-绘制的。您应该真正熟悉它们,因为为了研究设计模式,您并不需要实际的代码。是的,好吧,最终你必须用你想要的语言实现设计模式,但是对模式的理解必须比代码更高。

图表是用UML绘制的。您应该真正熟悉它们,因为为了研究设计模式,您并不需要实际的代码。是的,好吧,最终你必须用你想要的语言实现设计模式,但对模式的理解必须比代码更高。

回答:“我们如何将其转换为实际的代码实现?”

这个带有注释和CamelCase的UML看起来像Java,
但这里有一些C++图形来自您的图表:

  • 箭头通常表示指针或共享\u ptr-s
  • 白头箭头表示公共继承
  • <> > >代码> <代码> <强>是C++中的抽象类,java接口,
  • 带有虚线箭头的白色内容是注释。在本例中,它们为您提供了实现细节,您也可以按字面意思键入它们
在看代码之前,让我说我讨厌驼峰,我宁愿鼓励你做下记号,就像C++的LIBS一样,STL和Boost做到这一点。因此我将每个类都改为下划线符号。 因此,部分实施可能如下所示:

class Abstract_platform {
public:
  virtual ~Abstract_platform()=0; // this UML does not specify any functions but we make this class abstract.
};
class Platform_one : public Abstract_platform {

};
class Platform_two : public Abstract_platform {
public:
  /// you should implement this make function with shared_ptr, OR NO POINTERS AT ALL but I go according to the notes
  Product_one_platform_two*  make_product_one();
  Product_two_platform_two*  make_product_two();
  // I provide you with a better_make. It is better than the former make functions
  // due to RVO (Return value optimization see wikipedia)
  // so this is again a hint that this UML was originally for Java.
  Product_one_platform_two better_make_product_one();
};

class Class1 {
private:
  Abstract_platform* platform; // OR shared_ptr<Abstract_platform>, OR Abstract_platform&
  Abstract_product_two* product_two;
};

/// **Implementation file**
Product_one_platform_two*  Platform_two::make_product_one() 
{
  return new Product_one_platform_two(); 
}
Product_two_platform_two*  Platform_two::make_product_two() 
{
  return new Product_two_platform_two(); 
}     
Product_one_platform_two Platform_two::better_make_product_one() 
{
  return Product_one_platform_two(); 
}
类抽象\u平台{
公众:
virtual~Abstract_platform()=0;//此UML未指定任何函数,但我们将此类抽象化。
};
类平台一:公共抽象平台{
};
类平台二:公共抽象平台{
公众:
///您应该使用shared_ptr实现这个make函数,或者完全不使用指针,但我按照注释执行
产品一个平台二个*制造产品一个();
Product_two_platform_two*make_Product_two();
//我为你提供了一个更好的品牌。它比以前的品牌功能更好
//由于RVO(返回值优化见维基百科)
//这再次暗示了这个UML最初是用于Java的。
产品一个平台两个更好产品一个();
};
一班{
私人:
Abstract_platform*platform;//或共享_ptr,或Abstract_platform&
抽象产品二*产品二;
};
///**执行文件**
产品(一)平台(二)平台(二):制造(一)产品(一)
{
退回新产品_one_platform_two();
}
Product_two_platform_two*platform_two::make_Product_two()
{
退回新产品_two_平台_two();
}     
产品一个平台二个平台二:更好的产品一
{
退货产品_一_平台_二();
}
还要注意的是,人们不喜欢
Abstract_platform
而是喜欢
ipplatform
匈牙利符号,其中“I”代表“接口”。

回答:“我们如何将其转换为实际的代码实现?”

这个带有注释和CamelCase的UML看起来像Java,
但这里有一些C++图形来自您的图表:

  • 箭头通常表示指针或共享\u ptr-s
  • 白头箭头表示公共继承
  • <> > >代码> <代码> <强>是C++中的抽象类,java接口,
  • 带有虚线箭头的白色内容是注释。在本例中,它们为您提供了实现细节,您也可以按字面意思键入它们
在看代码之前,让我说我讨厌驼峰,我宁愿鼓励你做下记号,就像C++的LIBS一样,STL和Boost做到这一点。因此我将每个类都改为下划线符号。 因此,部分实施可能如下所示:

class Abstract_platform {
public:
  virtual ~Abstract_platform()=0; // this UML does not specify any functions but we make this class abstract.
};
class Platform_one : public Abstract_platform {

};
class Platform_two : public Abstract_platform {
public:
  /// you should implement this make function with shared_ptr, OR NO POINTERS AT ALL but I go according to the notes
  Product_one_platform_two*  make_product_one();
  Product_two_platform_two*  make_product_two();
  // I provide you with a better_make. It is better than the former make functions
  // due to RVO (Return value optimization see wikipedia)
  // so this is again a hint that this UML was originally for Java.
  Product_one_platform_two better_make_product_one();
};

class Class1 {
private:
  Abstract_platform* platform; // OR shared_ptr<Abstract_platform>, OR Abstract_platform&
  Abstract_product_two* product_two;
};

/// **Implementation file**
Product_one_platform_two*  Platform_two::make_product_one() 
{
  return new Product_one_platform_two(); 
}
Product_two_platform_two*  Platform_two::make_product_two() 
{
  return new Product_two_platform_two(); 
}     
Product_one_platform_two Platform_two::better_make_product_one() 
{
  return Product_one_platform_two(); 
}
类抽象\u平台{
公众:
virtual~Abstract_platform()=0;//此UML未指定任何函数,但我们将此类抽象化。
};
类平台一:公共抽象平台{
};
类平台二:公共抽象平台{
公众:
///您应该使用shared_ptr实现这个make函数,或者完全不使用指针,但我按照注释执行
产品一个平台二个*制造产品一个();
Product_two_platform_two*make_Product_two();
//我为你提供了一个更好的品牌。它比以前的品牌功能更好
//由于RVO(返回值优化见维基百科)
//这再次暗示了这个UML最初是用于Java的。
产品一个平台两个更好产品一个();
};
一班{
私人:
Abstract_platform*platform;//或共享_ptr,或Abstract_platform&
抽象产品二*产品二;
};
///**执行文件**
产品(一)平台(二)平台(二):制造(一)产品(一)
{
退回新产品_one_platform_two();
}
Product_two_platform_two*platform_two::make_Product_two()
{
退回新产品_two_平台_two();
}     
产品一个平台二个平台二:更好的产品一
{
退货产品_一_平台_二();
}
还要注意的是,人们不喜欢
Abstract_platform
而是喜欢
ipplatform
匈牙利符号,其中“I”代表“接口”。

您想要查找。您想要查找。