Task2. SequenceGenerator FullOPP
Здравейте,
Уж като гледах лекцията и разбрах за pure-virtual methods, но нещо в това упражнение не разбирам как да се използва generateSequence() в класовете FibonacciGenerator и SqrtGenerator.
Прави ли се някаква имплементация на generateSequence() в самия клас SequenceGenerator или само в другите?
И как се достъпват startInteger и endInteger от FibonacciGenerator и SqrtGenerator, ако те наследяват SequenceGenerator и следователно техните конструктори викат конструктора на SequenceGenerator?
Примерно как да използвам startInteger и endInteger, които се дават в SqrtGenerator(4,10) и отиват в конструктора на SequenceGenerator? После как да ги използвам за generateSequence()?
class SqrtGenerator : public SequenceGenerator{
public:
SqrtGenerator(int startInteger, int endInteger):
SequenceGenerator(startIndex,endIndex){
}
double* generateSequence(){
int index = 0;
std::stringstream ss;
for(int i=startIndex; i<endIndex; i++){
nums[index] = sqrt(i);
ss << "Sqrt(" << i << ")";
numNames[index] = ss.str();
index++;
}
return nums;
}
};
Мерси Жоро :)
Жоро, а грешно ли е само SequenceGenerator да има полета startIndex, endIndex, а наследяващите генератори да да имат само ctor, който "вика" ctor на SequenceGenerator-a и метода GenerateSequence() който ползва наследените полета и генерира поредицата?
Не бих казал че е грешно, защото никъде в условието не пише, че това трябва да е pure-virtual class (т.е. ООП интерфейс). Аз така бих го направил и бих пренесъл общите неща в наследяващ го абстрактен клас, който вече да наследя с конкретните Sqrt и Fibonacci, но това е по-скоро въпрос на стил, не е толкова на добри и лоши практики (разбира се зависи от това какво се иска в проекта, но предвид, че в случая не е уточнено, може да се направи както прецените)