Предмет: Информатика, автор: madnage

Помогите решить задание на с++
Класс МУЗЫКАНТ + классы ЛИЧНОСТЬ, ЗРИТЕЛЬ.
Реализовать схему наследования классов и корректно распределить по классам данные: имя, фамилия, пол, год рождения, инструмент, рейтинг, место в зале, стаж (количество концертов).
Интерфейс посетителя концерта IVisitor с методом void visit(). Для музыканта
посещение концерта означает наращивание количества концертов на 1, а также
изменение рейтинга на некоторую величину (по результатам концерта). Для зрителя посещение означает назначение ему первого свободного места (список свободных мест хранится в файле; при резервировании места оно удаляется из списка в файле). В main() создать 1 музыканта и 3 зрителей, продемонстрировать полиморфизм visit().

Ответы

Автор ответа: vita05710
0

class Person {

protected:

string firstName;

string lastName;

char gender;

int yearOfBirth;

public:

Person(string firstName, string lastName, char gender, int yearOfBirth)

: firstName(firstName), lastName(lastName), gender(gender), yearOfBirth(yearOfBirth) {}

virtual void visit() = 0; // pure virtual function

};

class Musician : public Person {

private:

string instrument;

int rating;

int numberOfConcerts;

public:

Musician(string firstName, string lastName, char gender, int yearOfBirth,

string instrument, int rating, int numberOfConcerts)

: Person(firstName, lastName, gender, yearOfBirth),

instrument(instrument), rating(rating), numberOfConcerts(numberOfConcerts) {}

void visit() override {

++numberOfConcerts;

// change rating according to results of the concert

}

};

class Viewer : public Person {

private:

int placeInHall;

public:

Viewer(string firstName, string lastName, char gender, int yearOfBirth, int placeInHall)

: Person(firstName, lastName, gender, yearOfBirth), placeInHall(placeInHall) {}

void visit() override {

// assign viewer the first free seat and remove it from the list in the file

}

};

int main() {

Musician musician("John", "Smith", 'M', 1990, "guitar", 5, 10);

Viewer viewer1("Jane", "Doe", 'F', 1980, 1);

Viewer viewer2("Bob", "Johnson", 'M', 1985, 2);

Viewer viewer3("Alice", "Williams", 'F', 1995, 3);

musician.visit();

viewer1.visit();

viewer2.visit();

viewer3.visit();

return 0;

}

Похожие вопросы