+ Ответить в теме
Показано с 1 по 10 из 10

Тема: Наследование и реализация элементов класса

  1. #1
    dummy anastasiya.nimchenko is on a distinguished road
    Регистрация
    10.04.2018
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Наследование и реализация элементов класса

    Задание:
    1. Реализовать интерфейс животное.
    2. Описать 5 классов животных наследующих интерфейс.
    3. Реализовать класс Вольер.
    4. Сделать еще один класс А, в котором должны быть 2 поля:
    • массив интерфейсов животных (10 элементов в массиве по 2 одинаковых);
    • массив из 5 вольеров.
    5. В классе А сделать метод, который будет расселять 10 животных в 5 вольеров по парам.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Наследование и реализация элементов класса

    Готов помочь. Что именно не получается?
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  4. #3
    dummy anastasiya.nimchenko is on a distinguished road
    Регистрация
    10.04.2018
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Наследование и реализация элементов класса

    Цитата Сообщение от Romeo Посмотреть сообщение
    Готов помочь. Что именно не получается?
    Не знаю как поместить данные про двух животных разного пола в одну ячейку массива Вольер

  5. #4
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Наследование и реализация элементов класса

    Видимо, вольер должен содержать массив указателей животных, которые в нём живут. Именно указателей. Владельцем всех животных и всех вольеров будет класс А, там все эти объекты будут храниться по значению. Вольер же будет содержать массив указателей, причём указатели должны быть на базовый интерфейс, чтобы в вольер можно было поселить животное любого вида и любого пола.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  6. #5
    dummy anastasiya.nimchenko is on a distinguished road
    Регистрация
    10.04.2018
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Наследование и реализация элементов класса

    Цитата Сообщение от Romeo Посмотреть сообщение
    Видимо, вольер должен содержать массив указателей животных, которые в нём живут. Именно указателей. Владельцем всех животных и всех вольеров будет класс А, там все эти объекты будут храниться по значению. Вольер же будет содержать массив указателей, причём указатели должны быть на базовый интерфейс, чтобы в вольер можно было поселить животное любого вида и любого пола.
    вопрос все тот же: как поместить, теперь уже, два указателя в один вольер?

  7. #6
    developer Слива is on a distinguished road
    Регистрация
    19.03.2016
    Сообщений
    132
    Вес репутации
    3

    По умолчанию Re: Наследование и реализация элементов класса

    Цитата Сообщение от Romeo Посмотреть сообщение
    Видимо, вольер должен содержать массив указателей животных,
    - сделать двухмерный массив - строки - это вольеры, столбцы(2) - это животных.
    Последний раз редактировалось Слива; 12.04.2018 в 08:41. Причина: Изменил надпись.

  8. #7
    dummy anastasiya.nimchenko is on a distinguished road
    Регистрация
    10.04.2018
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Наследование и реализация элементов класса

    Можно хоть примерный пример реализации в коде.
    В теории все слишком непонятно.

  9. #8
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Наследование и реализация элементов класса

    Цитата Сообщение от Слива Посмотреть сообщение
    - можно еще структурой сделать.
    В данном случае можно и структурой, но в общем случае вольер может содержать не ровно два животных, так что я бы сразу обобщил.
    Цитата Сообщение от anastasiya.nimchenko Посмотреть сообщение
    Можно хоть примерный пример реализации в коде.
    В теории все слишком непонятно.
    Массив указателей на животных можно реализовать через вектор.
    Код cpp:
    1. class Aviary
    2. {
    3.    Aviary();
    4.    ~Aviary();
    5.  
    6.    void AddAnimal(IAnimal* animal)
    7.    {
    8.       m_animals.push_back(animal);
    9.    }
    10.  
    11. private:
    12.    std::vector<IAnimal*> m_animals;
    13. };
    Последний раз редактировалось Romeo; 11.04.2018 в 20:06.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  10. #9
    Moderator Куратор
    system architect
    Absurd is on a distinguished road
    Регистрация
    26.02.2004
    Адрес
    Pietari, Venäjä
    Возраст
    38
    Сообщений
    1,213
    Вес репутации
    17

    По умолчанию Re: Наследование и реализация элементов класса

    Цитата Сообщение от Romeo Посмотреть сообщение
    В данном случае можно и структурой, но в общем случае вольер может содержать не ровно два животных, так что я бы сразу обобщил.

    Массив указателей на животных можно реализовать через вектор.
    Код cpp:
    1. class Aviary
    2. {
    3.    Aviary();
    4.    ~Aviary();
    5.  
    6.    void AddAnimal(IAnimal* animal)
    7.    {
    8.       m_animals.push_back(animal);
    9.    }
    10.  
    11. private:
    12.    std::vector<IAnimal*> m_animals;
    13. };
    Наверное вольер должен содержать массив ячеек фиксированного размера, и каждой ячейке нужно иметь по два слота на животных.

    Код cpp:
    1. class Stall
    2. {
    3.    Stall(unsigned capacity):
    4.    :m_cells(capacity)
    5.    {}
    6.    ~Stall();
    7.  
    8.    void AddAnimal(IAnimal* animal) {
    9.      for (auto& cell: m_cells) {
    10.        if (cell.first && !cell.second && typeid(*cell.first) == typeid(animal) && ... compare sexes ...) {
    11.           cell.second = animal;
    12.           break;
    13.        }
    14.        if (!cell.second && ... ) {
    15.        }
    16.      }
    17.    }
    18.  
    19. private:
    20.    std::vector< std::pair< IAnimal*,  IAnimal*> > m_cells;
    21. };
    2B OR NOT(2B) = FF

  11. #10
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Наследование и реализация элементов класса

    Нет. 10 животных и 5 вольеров. Метод в классе А должен расселить эти 10 животных по 5 вольерам, то есть в каждый вольер попадает 2 животных.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

+ Ответить в теме

Похожие темы

  1. Наследование
    Подскажите как добавить функции из другого класса, в данном случае Fraction #include <stdafx.h> #include <conio.h> #include "Fraction.h" using...
    от Lotles в разделе C и C++
  2. Наследование
    Привет! Есть у меня одна задачка из лабораторной работы. Дело в том что на лекцие я не был по этой теме(Наследование), и потому прошу вашей...
    от lolopolosko в разделе C и C++
  3. Наследование
    Скажите, пожалуйста, как от класса Pair class Pair { public: Pair(){A=0;B=0;} ~Pair(){} private: int A,B; };
    от Monopo в разделе C и C++
  4. Как запретить наследование от класса?
    Привет всем. Есть класс А, и мы можем создать объект класса А. Надо сделать так чтобы не создавалось объект типа производного от А.
    от Vanush в разделе C и C++
  5. php5 реализация класса
    как реализовать класс (MyClass), чтоб он смог работать следующим образом: $vMyClass = new MyClass; $vMyClass.newProperty("thisProp"); echo...
    от itwork в разделе Perl, PHP, ASP ...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения