好的,这是我的问题。我有以下类:正确获取OOP
class Job {
bool isComplete() {}
void setComplete() {}
//other functions
};
class SongJob: public Job {
vector<Job> v;
string getArtist() {}
void setArtist() {}
void addTrack() {}
string getTrack() {}
// other functions
};
// This were already implemeted
现在我想实现一个VideoJob并从作业派生它。但这是我的问题。我也有以下功能巫婆它设置为只与SongJob工作:
void process(SongJob s)
{
// not the real functions
s.setArtist();
..............
s.getArtist();
.............
s.getArtist();
...............
s.setArtist()
}
在这里,我只是希望它表明该函数只使用派生类对象的方法。因此,如果我有另一个派生于Job的对象,我需要将参数更改为Job,但是编译器不会知道什么是Thoose函数,我不知道要测试每个人是什么类型的对象,然后将它投射出来,所以我可以调用正确的功能。
因此,将所有函数放在基类中是可以的,因为那样我就没有问题了,但我不知道这是否正确OOP,如果一个类处理歌曲,另一个类处理视频,我好的oop意味着有2个clases。
如果我没有说清楚,请说出来,我会尝试更好地解释。
换句话说,我想用polymorfism。
所以如果SonjJob有一个容器来存储歌曲和VideoJob一个来存储视频,这些容器我应该把它们也放在基类中?我认为派生类不会有任何数据:) – Kobe
我知道关于oop细节,我的问题是我需要在C++和java中做这个,所以我需要用两种语言来思考:)但是你的解释是非常好。谢谢 – Kobe
@vBx:不,你可以将这些容器放入类中。他们是不同的,因为一个商店*只有*视频,而其他商店*只*歌曲。这不是一个共同点,而是一个区别,所以它不属于基类。 –