C++ 如何在c+;中实现两个类之间的关联+;?
这三个阶级之间的关系是这样的 学生每学期选修一门课。这门课对这学期来说并不特殊。学生可以在任何学期选择。这是这些物体之间的三元关系C++ 如何在c+;中实现两个类之间的关联+;?,c++,oop,C++,Oop,这三个阶级之间的关系是这样的 学生每学期选修一门课。这门课对这学期来说并不特殊。学生可以在任何学期选择。这是这些物体之间的三元关系 这三类之间存在着三元关联。如何实现这三个类之间的关联?或者,一般来说,实现类之间的关联的方法有哪些(C++或java)? 一种方式可以是集装箱船,即将另一类的对象作为一个类的成员。e、 g.(假设一名学生修5门课程) 有许多方法可以实现关联。在您的情况下,您可以: class student{ //other members course courseLi
这三类之间存在着三元关联。如何实现这三个类之间的关联?或者,一般来说,实现类之间的关联的方法有哪些(C++或java)? 一种方式可以是集装箱船,即将另一类的对象作为一个类的成员。e、 g.(假设一名学生修5门课程)
有许多方法可以实现关联。在您的情况下,您可以:
class student{
//other members
course courseList[5];
};
班级学生{
};
班级课程{
性病:病媒学生;
};
班级学期{
矢量课程;
};
在更复杂的情况下,您可能需要一个复杂的数据结构、一棵树或一个哈希表来表示关系。如果没有更多细节,很难说清楚,但从现实生活中的例子可以想象,有些课程是在一个学期内开设的,有些学生会选修一些课程。
学生
班级不需要知道任何关于课程
s的信息,而课程
班级也不需要知道任何关于学生
的信息。两人都不需要了解学期
s。一篇自然的作文是给一个学期
一张课程的地图
给一个学生
的列表:
class student {
};
class course {
std::vector<student> students;
};
class semester {
std::vector<course> courses;
};
班级学期
{
公众:
//访问者:课程列表、学生列表、学生列表
//一个给定的课程…都可以从地图上获得。
私人:
地图注册;
};
这里我为学生使用
std::set
,因为学生在每门课程中都是独一无二的。同样,对于std::map
:课程在一个学期中是独一无二的。当然,这些约束可以手动应用于其他非唯一数据结构之上。在这种情况下,我的建议是将学期作为课程描述的一部分。然后看看如何使用多重映射将学生与学期特定课程相结合
对于关系数据库来说,这似乎是一个很好的问题,根据应用程序的不同,您可能希望将数据关系分包到数据库。这实际上取决于这些类如何交互的细节。但总的来说,保持低耦合。投票结束不是建设性的,因为没有进一步的需求规范,这个问题就太模糊了。
class student {
};
class course {
std::vector<student> students;
};
class semester {
std::vector<course> courses;
};
class semester
{
public:
// accessors: list of courses, list of students, list of students for
// a given course... all obtainable from map.
private:
std::map<course, std::set<student>> enrollment;
};