Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Работа с иерархией объектов: наследование и полиморфизм

Автор:   •  Июль 28, 2023  •  Лабораторная работа  •  1,370 Слов (6 Страниц)  •  125 Просмотры

Страница 1 из 6

     

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра Вычислительной техники

ОТЧЕТ

по лабораторной работе № 1

по дисциплине «Алгоритмы и структуры данных»

Тема: «Работа с иерархией объектов: наследование и полиморфизм»

Студенты гр.

Преподаватель

Санкт-Петербург

2021

Содержание

Задание        3

Добавленные классы        3

Переопределённые функции-члены        3

Недоступные функции-члены        3

Результат работы        3

Список использованной литературы        7


  1. Цель работы

Изучить иерархию и наследование классов в языке С++.

  1. Задание

Вариант 2: Добавить фигуру номер 15 (параллелограмм с крестом) на позиции 1, 14 (галстук и шишак).

  1. Добавленные классы

Для выполнения поставленной задачи был добавлен класс cross_parallelogram, унаследованный от класса reflectable. Поскольку параллелограмм нужно отразить, то наследование требуется именно от этого

класса, а не от класса shape.

  1. Переопределённые функции-члены

Для выполнения задания были переопределены следующие функции:

  • north(), south(), east(), west(), neast(), seast(), nwest(), point swest() –

 для получения координат вершин параллелограмма

  • move() – для того, чтобы перемещать параллелограмм
  • draw() – для вывода параллелограмма на экран

  1. Недоступные функции-члены

Доступны все функции-члены.

  1. Результат работы

Пример работы программы представлен на рисунках 1-3.

[pic 1]

Рис.1.

[pic 2]

Рис. 2.

[pic 3]

Рис. 3.

Вывод: Проведя данную лабораторную работу, было изучено, как можно работать с иерархией классов, как наследовать классы и как оптимизировать работу с объектами. Были получены знания о работе с наследуемыми классами и принципах их дополнения функциями-членами.


Текст программы

#include "screen.h"

#include "shape.h"

#include <iostream>

using namespace std;

//put shape p below shape q

void down(shape& p, const shape& q)

{

        point n = q.south();

        point s = p.north();

        p.move(n.x - s.x, n.y - s.y - 1);

}

class myshape : public rectangle { // Моя фигура ЯВЛЯЕТСЯ

        int w, h; // прямоугольником

        line l_eye; // левый глаз – моя фигура СОДЕРЖИТ линию

        line r_eye; // правый глаз

        line mouth; // рот

public:

        myshape(point, point);

        void draw();

        void move(int, int);

        void resize(double);

        line eye(int n) {

                if (n == 0) return l_eye;

                else return r_eye;

        }

};

myshape::myshape(point a, point b)

        : rectangle(a, b), //Инициализация базового класса

        w(neast().x - swest().x + 1), // Инициализация данных

        h(neast().y - swest().y + 1), // - строго в порядке объявления!

        l_eye(point(swest().x + 2, swest().y + h * 3 / 4), 4),

        r_eye(point(swest().x + w - 6, swest().y + h * 3 / 4), 4),

        mouth(point(swest().x + 2, swest().y + h / 4), w - 4)

{ }

void myshape::draw()

{

        rectangle::draw(); //Контур лица (глаза и нос рисуются сами!)

...

Скачать:   txt (8.5 Kb)   pdf (565.4 Kb)   docx (293.7 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club