
lab 3 Zhovtyak
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Старший преподаватель |
|
|
|
Д.В. Куртяник |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ. ПОЛИМОРФИЗМ. |
по курсу: ОСНОВЫ ПРОГРАММИРОВАНИЯ |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4016 |
|
01.05.2021 |
|
М.О.Жовтяк |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2021
Вариант 17
Цель лабораторной работы: изучение видов наследования и способов их применения; изучение способов использования виртуальных функций, абстрактных классов; получение навыков объектно-ориентированного программирования на языке C++.
Задание на программирование: используя технологию объектно-ориентированного программирования разработать программу.
Мой индивидуальный вариант: Спортивная игра – Инвентарь – Комбинации.
Моя общая структура классов:
КОД ПРОГРАММЫ:
Главный файл lab3.сpp:
#include <iostream>
#include "sportgame.h"
using namespace std;
int main()
{
golf test1;
test1.play();
cout << "\n \n";
hokkey test2;
test2.play();
}
Файл с классами sportgame.h:
#pragma once
#include <string>
using namespace std;
//базовый класс
class sportgame
{
protected:
//количество игроков
int number;
//время года
string period;
public:
//конструктор
sportgame();
//получение количества игроков
int get_number();
//деструктор
~sportgame(){};
//виртуальная функция
virtual void play();
};
//мяч
class ball : public sportgame
{
protected:
int size_ball = 10;
public:
//виртуальная функция
virtual void play();
//получение размера мяча
int get_size();
};
//клюшка
class putter : public sportgame
{
protected:
//длина клюшки
int length_putter = 5;
public:
//виртуальная функция
virtual void play();
//получение длины клюшки
int get_length();
//cохр кол-ва игроков
int number1();
//сохр времени года
string period1();
};
//шайба
class puck : public sportgame
{
protected:
//диаметр клюшки
int diameter = 7;
public:
//виртуальная функция
virtual void play();
//получение длины клюшки
int get_diameter();
};
//гольф
class golf : public ball, public putter
{
private:
//количество очков
int score = 5;
public:
//виртуальная функция
virtual void play();
//получение кол-ва очков
int get_score();
};
//хоккей
class hokkey : public puck, public putter
{
private:
//количество очков
int score = 3;
public:
//виртуальная функция
virtual void play();
//получение кол-ва очков
int get_score();
};
Файл с реализацией методов sportgame.cpp:
#include "sportgame.h"
#include <iostream>
#include <string>
//базовый класс
int sportgame::get_number()
{
return number;
}
sportgame::sportgame()
{
number = 10;
period = "summer";
}
void sportgame::play()
{
cout << "?";
}
//1-й уровень
void ball::play()
{
cout << "It's just a ball!" << number;
}
int ball::get_size()
{
return size_ball;
}
void putter::play()
{
cout << "It's just a putter!";
}
int putter::get_length()
{
return length_putter;
}
int putter::number1()
{
return number;
}
string putter::period1()
{
return period;
}
void puck::play()
{
cout << "It's just a puck!";
}
int puck::get_diameter()
{
return diameter;
}
//2-й уровень
void golf::play()
{
cout << "Now, lets play golf! It's " << period1() << " now and there are " << number1() << " of us. \n The size of ball is " << get_size() << " and the length of putter is " << get_length() << ". \n So you got " << get_score() << " scores of 5. You win :)";
}
int golf::get_score()
{
return score;
}
void hokkey::play()
{
cout << "So, lets play hokkey! It's " << period1() << ", but we live in Norilsk. \n There are " << number1() << " of us. \n The diameter of puck is " << get_diameter() << " and the length of putter is " << get_length() << ".\n So you got " << get_score() << " scores of 5. You lost :(";
}
int hokkey::get_score()
{
return score;
}
Скриншот работы программы:
Вывод: Я научился создавать наследственные классы, использовать виртуальные функции в ней, перекрывая родительский метод. Я повысил свой навык работы в объектно-ориентированном программировании, используя язык С++.