Наследование и реализация элементов класса
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-
- Сообщения: 4
- Зарегистрирован: 10 апр 2018, 20:31
Задание:
1. Реализовать интерфейс животное.
2. Описать 5 классов животных наследующих интерфейс.
3. Реализовать класс Вольер.
4. Сделать еще один класс А, в котором должны быть 2 поля:
• массив интерфейсов животных (10 элементов в массиве по 2 одинаковых);
• массив из 5 вольеров.
5. В классе А сделать метод, который будет расселять 10 животных в 5 вольеров по парам.
1. Реализовать интерфейс животное.
2. Описать 5 классов животных наследующих интерфейс.
3. Реализовать класс Вольер.
4. Сделать еще один класс А, в котором должны быть 2 поля:
• массив интерфейсов животных (10 элементов в массиве по 2 одинаковых);
• массив из 5 вольеров.
5. В классе А сделать метод, который будет расселять 10 животных в 5 вольеров по парам.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Готов помочь. Что именно не получается?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 4
- Зарегистрирован: 10 апр 2018, 20:31
Не знаю как поместить данные про двух животных разного пола в одну ячейку массива ВольерRomeo писал(а):Готов помочь. Что именно не получается?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Видимо, вольер должен содержать массив указателей животных, которые в нём живут. Именно указателей. Владельцем всех животных и всех вольеров будет класс А, там все эти объекты будут храниться по значению. Вольер же будет содержать массив указателей, причём указатели должны быть на базовый интерфейс, чтобы в вольер можно было поселить животное любого вида и любого пола.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 4
- Зарегистрирован: 10 апр 2018, 20:31
вопрос все тот же: как поместить, теперь уже, два указателя в один вольер?Romeo писал(а):Видимо, вольер должен содержать массив указателей животных, которые в нём живут. Именно указателей. Владельцем всех животных и всех вольеров будет класс А, там все эти объекты будут храниться по значению. Вольер же будет содержать массив указателей, причём указатели должны быть на базовый интерфейс, чтобы в вольер можно было поселить животное любого вида и любого пола.
- сделать двухмерный массив - строки - это вольеры, столбцы(2) - это животных.Romeo писал(а):Видимо, вольер должен содержать массив указателей животных,
-
- Сообщения: 4
- Зарегистрирован: 10 апр 2018, 20:31
Можно хоть примерный пример реализации в коде.
В теории все слишком непонятно.
В теории все слишком непонятно.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
В данном случае можно и структурой, но в общем случае вольер может содержать не ровно два животных, так что я бы сразу обобщил.Слива писал(а):- можно еще структурой сделать.
Массив указателей на животных можно реализовать через вектор.anastasiya.nimchenko писал(а):Можно хоть примерный пример реализации в коде.
В теории все слишком непонятно.
Код: Выделить всё
class Aviary
{
Aviary();
~Aviary();
void AddAnimal(IAnimal* animal)
{
m_animals.push_back(animal);
}
private:
std::vector<IAnimal*> m_animals;
};
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Romeo писал(а):В данном случае можно и структурой, но в общем случае вольер может содержать не ровно два животных, так что я бы сразу обобщил.
Массив указателей на животных можно реализовать через вектор.Код: Выделить всё
class Aviary { Aviary(); ~Aviary(); void AddAnimal(IAnimal* animal) { m_animals.push_back(animal); } private: std::vector<IAnimal*> m_animals; };
Наверное вольер должен содержать массив ячеек фиксированного размера, и каждой ячейке нужно иметь по два слота на животных.
Код: Выделить всё
class Stall
{
Stall(unsigned capacity):
:m_cells(capacity)
{}
~Stall();
void AddAnimal(IAnimal* animal) {
for (auto& cell: m_cells) {
if (cell.first && !cell.second && typeid(*cell.first) == typeid(animal) && ... compare sexes ...) {
cell.second = animal;
break;
}
if (!cell.second && ... ) {
}
}
}
private:
std::vector< std: :p air< IAnimal*, IAnimal*> > m_cells;
};
2B OR NOT(2B) = FF
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Нет. 10 животных и 5 вольеров. Метод в классе А должен расселить эти 10 животных по 5 вольерам, то есть в каждый вольер попадает 2 животных.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.