Лабораторная работа №15

Лабораторная работа № 15.

Программная реализация принципов наследования, полиморфизма и разработка конструкторов/деструкторов

Цель работы

Изучение принципов объектно-ориентированного программирования: наследования, полиморфизма, разработка конструкторов и деструкторов.

Теоретические сведения

Наследование — механизм создания нового класса на основе существующего, при котором новый класс перенимает свойства и методы базового класса.

Полиморфизм — возможность объектов с одинаковым интерфейсом иметь различную реализацию.

Конструкторы — специальные методы для создания и инициализации объектов.

Деструкторы — методы для корректного удаления объектов.

Задания

Задание 1. Реализация наследования

Создать иерархию классов:

·                     Базовый класс Animal

·                     Производный класс Dog

·                     Производный класс Cat

pascal

type

  Animal = class

  private

    name: string;

  public

    constructor Create(n: string);

    procedure Speak; virtual;

  end;

 

  Dog = class(Animal)

  public

    constructor Create(n: string);

    procedure Speak; override;

  end;

 

  Cat = class(Animal)

  public

    constructor Create(n: string);

    procedure Speak; override;

  end;

 

constructor Animal.Create(n: string);

begin

  name := n;

end;

 

procedure Animal.Speak;

begin

  writeln('Животное издает звук');

end;

 

constructor Dog.Create(n: string);

begin

  inherited Create(n);

end;

 

procedure Dog.Speak;

begin

  writeln('Гав-гав');

end;

 

constructor Cat.Create(n: string);

begin

  inherited Create(n);

end;

 

procedure Cat.Speak;

begin

  writeln('Мяу-мяу');

end;

Задание 2. Реализация полиморфизма

Создать систему классов с переопределением методов:

·                     Базовый класс Shape

·                     Производный класс Circle

·                     Производный класс Rectangle

pascal

type

  Shape = class

  public

    procedure Draw; virtual;

  end;

 

  Circle = class(Shape)

  private

    radius: real;

  public

    constructor Create(r: real);

    procedure Draw; override;

  end;

 

  Rectangle = class(Shape)

  private

    width, height: real;

  public

    constructor Create(w, h: real);

    procedure Draw; override;

  end;

 

procedure Shape.Draw;

begin

  writeln('Рисуем фигуру');

end;

 

constructor Circle.Create(r: real);

begin

  radius := r;

end;

 

procedure Circle.Draw;

begin

  writeln('Рисуем круг радиусом ', radius);

end;

 

constructor Rectangle.Create(w, h: real);

begin

  width := w;

  height := h;

end;

 

procedure Rectangle.Draw;

begin

  writeln('Рисуем прямоугольник ', width, 'x', height);

end;

Задание 3. Разработка конструкторов и деструкторов

Создать класс с различными типами конструкторов:

pascal

type

  Person = class

  private

    name: string;

    age: integer;

  public

    constructor Create; overload;

    constructor Create(n: string); overload;

    constructor Create(n: string; a: integer); overload;

    destructor Destroy; override;

    procedure ShowInfo;

  end;

 

constructor Person.Create;

begin

  name := 'Неизвестно';

  age := 0;

end;

 

constructor Person.Create(n: string);

begin

  name := n;

  age := 0;

end;

 

constructor Person.Create(n: string; a: integer);

begin

  name := n;

  age := a;

end;

 

destructor Person.Destroy;

begin

  writeln('Объект уничтожен');

  inherited;

end;

 

procedure Person.ShowInfo;

begin

  writeln('Имя: ', name, ', Возраст: ', age);

end;

Порядок выполнения работы

1.                  Изучить теоретические сведения.

2.                  Разработать алгоритмы для каждого задания.

3.                  Написать программы с учетом требований к реализации ООП.

4.                  Протестировать программы на различных наборах данных.

5.                  Оформить отчет.

Требования к отчету

1.                  Титульный лист

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

3.                  Теоретическая часть

4.                  Листинги программ

5.                  Результаты тестирования

6.                  Ответы на контрольные вопросы

Контрольные вопросы

1.                  Что такое наследование в ООП?

2.                  Какие виды наследования существуют?

3.                  Что такое полиморфизм и для чего он используется?

4.                  Какие модификаторы доступа существуют в Pascal?

5.                  Что такое конструктор и для чего он нужен?

6.                  Какие типы конструкторов существуют?

7.                  Что такое деструктор и когда он вызывается?

8.                  Как происходит наследование конструкторов?

9.                  Что такое виртуальные методы?

10.              Как реализуется переопределение методов?

11.              В чем разница между абстрактным и конкретным классом?

12.              Как работает механизм динамического связывания?

13.              Какие проблемы решает инкапсуляция?

14.              Как правильно организовать иерархию классов?

15.              Какие существуют способы создания объектов?

16.              Как происходит управление памятью при работе с объектами?

17.              Что такое интерфейс класса?

18.              Как реализовать множественное наследование?

19.              В чем преимущества использования ООП?

20.              Какие существуют ограничения при работе с классами?



Последнее изменение: пятница, 28 Ноябрь 2025, 09:46