我试图通过我的场景获得的面向对象的想法是什么?
What is the object-oriented idea I'm trying to get at with my scenario?
我有一个场景,我做了一个 class,称之为 myClass
,我意识到我需要另一个 class,称之为 myOtherClass
,它将在 myClass
内部使用,但不会在其外部使用。我已经很多年没有修读计算机科学 class,所以我不记得我想要学习的术语。没有遗产在进行;只是 myClass
使用 myOtherClass
,实际上构建了一个 myOtherClass
对象树,我想正确封装所有内容。
我需要遵循的概念是什么?它在 C++ 中的具体含义是什么?如果我需要尝试使这个问题更清楚,请告诉我。
它被称为嵌套class。
class myClass
{
class myOtherClass {...}; // myOtherClass is a nested class inside
// myClass.
myOtherClass a; // a is member variable of myClass.
// Its type is myOtherClass.
};
听起来像是作曲。 class 拥有一个私有成员:
class Edible {};
class Food
{
private:
Edible eds;
};
请注意,这在某些方面类似于私有继承(尽管正如您提到的那样,您正在构建它们的树,但组合才是您想要的)。
MyClass 由 MyOtherClass 对象树组成。设计模式是一种组合。如果您实施了模板化树 class,您的代码可能如下所示:
#include "MyOtherClass.h"
class MyClass
{
public:
MyClass();
~MyClass();
private:
Tree<MyOtherClass> m_tree;
};
我有一个场景,我做了一个 class,称之为 myClass
,我意识到我需要另一个 class,称之为 myOtherClass
,它将在 myClass
内部使用,但不会在其外部使用。我已经很多年没有修读计算机科学 class,所以我不记得我想要学习的术语。没有遗产在进行;只是 myClass
使用 myOtherClass
,实际上构建了一个 myOtherClass
对象树,我想正确封装所有内容。
我需要遵循的概念是什么?它在 C++ 中的具体含义是什么?如果我需要尝试使这个问题更清楚,请告诉我。
它被称为嵌套class。
class myClass
{
class myOtherClass {...}; // myOtherClass is a nested class inside
// myClass.
myOtherClass a; // a is member variable of myClass.
// Its type is myOtherClass.
};
听起来像是作曲。 class 拥有一个私有成员:
class Edible {};
class Food
{
private:
Edible eds;
};
请注意,这在某些方面类似于私有继承(尽管正如您提到的那样,您正在构建它们的树,但组合才是您想要的)。
MyClass 由 MyOtherClass 对象树组成。设计模式是一种组合。如果您实施了模板化树 class,您的代码可能如下所示:
#include "MyOtherClass.h"
class MyClass
{
public:
MyClass();
~MyClass();
private:
Tree<MyOtherClass> m_tree;
};