c++
Необходимо реализовать библиотеку, экспортирующую следующие классы:
1. Интерфейс IMilitaryMan (военный), содержащий виртуальный деструктор и единственный чисто-виртуальный метод void Serve() (служить).
2. Класс Soldier (солдат), наследующий IMilitaryMan и реализующий его интерфейс. Реализация метода Serve() должна увеличивать количество выполненных поручений солдатом. В конструкторе класса должно устанавливаться начальное количество поручений (jobCount) солдата, равное 0.
3. Класс Officer (офицер) наследующий IMilitaryMan и имеющий подчинённых. Военные (как офицеры, так и солдаты), находящиеся в подчинении офицера, передаются ему в конструкторе в виде массива. Реализация метода Serve() должна делегировать выполнение поручения подчинённым. Деструктор класса Officer должен выполнить освобождение подчинённых.

Необходимо реализовать как минимум следующие тесты для проверки классов Soldier и Officer:
1. Создать экземпляр класса Soldier, присвоить его переменной militaryMan типа IMilitaryMan & и убедиться, что при вызове метода militaryMan.Serve() будет увеличено количество выполненных поручений у солдата.
2. Создать экземпляр класса Officer с экземплярами классов подчинённых ему военных: двух солдат и одного офицера, у которого в подчинении находится ещё четыре солдата. Присвоить созданный экземпляр класса Officer переменной militaryMan типа IMilitaryMan & и убедиться, что при вызове метода militaryMan.Serve() у всех шести солдат будет увеличено количество выполненных поручений.
3. Убедиться, что деструкторы подчинённых вызываются при вызове деструктора Officer. Для этого разрешается использовать (экспортировать библиотекой) глобальную переменную с общим количеством существующих на данный момент экземпляров военных.
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.