Задачи на ООП в C++. Часть 5
Пусть класс Employee наследует
от класса User из данного
урока.
Переопределите в классе Employee
конструктор родителя, добавив в него
параметр с возрастом и зарплатой.
Сделайте геттеры для возраста и зарплаты.
Дан следующий код:
class User {
private:
int age;
public:
void setAge(int age) {
if (age >= 0) {
this->age = age;
} else {
std::cout << "need age more 0";
}
}
};
class Employee : public User {
public:
void setAge(int age) {
if (age <= 120) {
if (age >= 0) {
this->age = age;
} else {
std::cout << "need age more 0";
}
} else {
std::cout << "need age less 120";
}
}
};
В классе Employee исправьте
упростите сеттер возраста, использовав
оригинальный метод родителя.
Дан следующий класс-родитель:
class User {
private:
std::string name;
std::string surn;
public:
void setName(const std::string& name) {
this->name = name;
}
std::string getName() {
return this->name;
}
void setSurn(const std::string& surn) {
this->surn = surn;
}
std::string getSurn() {
return this->surn;
}
};
Сделайте класс Employee,
который будет наследовать
от этого родителя.
Создайте объект класса Employee
и вызовите унаследованные
сеттеры и геттеры.
В классе Employee сделайте
следующий метод:
std::string getFull() {
return this->name + " " + this->surn;
}
Убедитесь, что код метода приведет к ошибке.
Дан следующий код:
class User {
private:
std::string name;
public:
void setName(const std::string& name) {
this->name = name;
}
std::string getName() {
return this->name;
}
};
class Employee : public User {
public:
void setName(const std::string& name) {
if (name.size() > 0) {
this->name = name; // ошибка
}
}
};
в классе потомка переопределяется метод родителя. Исправьте проблемы в этом коде:.
Попробуйте в классе Employee
воспользоваться приватным методом
родителя.
Дан следующий код:
class User {
private:
std::string name;
public:
void setName(const std::string& name) {
this->name = name;
}
std::string getName() {
return this->name;
}
};
class Employee : public User {
public:
void setName(const std::string& name) {
if (name.size() > 0) {
this->name = name;
}
}
};
Перепишите через защищенное поле.