Лабораторная работа по "Информатике"
Автор: Дмитрий Болотов • Июнь 16, 2019 • Лабораторная работа • 1,036 Слов (5 Страниц) • 626 Просмотры
Цель работы:
Научиться создавать классы с учетом правил предметной области. Уяснить необходимость скрытия некоторых свойств класса модификаторами private и protected.
Общее задание:
Создать класс, имеющий заданные свойства, обеспечить доступ к свойствам (запись и чтение значений свойств) с учетом заданных ограничений. Все конструкторы класса так же должны обеспечивать создание объекта с учетом заданных ограничений. Написать программу, демонстрирующую сохранение ограничений при любых действиях внешней программы над объектом.
Задание по варианту:
№ | Класс | Свойства | Правила ПО |
1 | Монстр | Здоровье, сила | Суммарное значение здоровья и силы должно лежать в диапазоне от 2 до 150, каждое свойство должно лежать в диапазоне от 1 до 100. Если задаваемое значение не будет соответствовать условию, то автоматически присвоить ближайшее разрешенное. |
Решение:
#include
#include
#include
using namespace std;
class Monster
{
public:
Monster()
{
this->health=1;
this->power=1;
};
Monster(int health=1,int power=1)
{
SetProperty(health,power);
}
void SetProperty(int health=1,int power=1)
{
if(health+power>150)
{
this->health=compare(health);
if(power>50)
this->power=50;
else
this->power=compare(power);
}
else
{
this->health=compare(health);
this->power=compare(power);
}
}
int getHealth()
{
return health;
}
int getPower()
{
return power;
}
int compare(int property)
{
if(property>100)
{
return 100;
}
else if(property<1)
{
return 1;
}
else
{
return property;
}
}
private:
int health;
int power;
};
int main()
{
setlocale(0,"");
Monster creep(0, 2);
cout << "Monster creep;" << endl
<< "Health: " << creep.getHealth() << " "
<< "Power: " << creep.getPower() << "." << endl << endl;
Monster boss(600, 8300);
cout << "Monster boss(600, 8300);" << endl
<< "Health: " << boss.getHealth() << " "
...