110 |
С т р а н и ц а
Совет
Когда
функции-члены и объекты используются эффективно, ваш код будет читаться
больше как проза или поэзия, нежели как куча операторных символов
столпотворённых вместе.
Помимо красоты и читабельности, каково значение написания
функций-членов?
Вне объекта Player, с помощью единственной строки кода, мы сейчас можем
делать больше, чем просто уменьшать элемент hp на 15. Мы можем также делать
другие вещи как уменьшение hp игрока, такие как: принимать в учётную запись
броню игрока; проверять, неуязвим ли игрок или иметь другие эффекты, когда
игроку наносится урон. То, что происходит, когда игроку нанесён урон, должно
получаться от функции damage().
Теперь представим, что у игрока есть класс брони. Давайте добавим поле в struct
Player для класса брони:
struct Player
{
string name;
int hp;
int armorClass;
};
Нам понадобилось бы уменьшить урон полученный игроком, с помощью класса
брони (armor) игрока. Так что теперь мы написали бы формулу, чтобы уменьшать
hp. Мы можем сделать это не объектно-ориентированным способом, прямо войдя
в поле данных объекта player:
player.hp -= 15
– player.armorClass; // не ООП
Или мы можем сделать это объектно-ориентированным способом, написав
функцию-член, которая меняет данные элементов объекта player как надо.
Внутри
объекта player, мы можем написать функцию-член damage():
struct Player
{
string name;
int hp;
int armorClass;
void damage( int dmgAmount )
{
hp -= dmgAmount - armorClass;
}
};
Достарыңызбен бөлісу: