Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП у Фридлянда. МО - 2 курс. Методичка по лабе №1.RTF
Скачиваний:
19
Добавлен:
25.05.2014
Размер:
59.7 Кб
Скачать

Объектно-ориентированное программирование(ооп)

Методические указания к лабораторной работе №1

Задание.

Имеется 4 вида фигуры: точка, круг, квадрат и правильный треугольник. Требуется создать программу, которая содержала бы список из выше приведенных фигур и рисовала бы их на экране. Каждый экземпляр какого-либо вида фигуры обладает координатами центра, относительно которого экземпляр будет рисоваться. Если список не пуст, то один элемент списка обязательно должен быть активным, то есть:

1. при отображении он должен каким-либо образом выделяться

2. с данным элементом пользователь может проводить различные операции:

а. удалить

b. подвинуть на экране (влево, вправо, вверх, вниз)

с. повернуть на какой-либо угол (для квадрата и треугольника)

d. изменить размер

e. изменить цвет

Программа должна позволять пользователю выбирать вид фигуры и создавать фигуру текущего вида, которая будет добавляться в список.

Первое, что требуется, - это правильно создать дерево иерархии классов. Иными словами, каждый вид фигуры (точка, круг, квадрат и правильный треугольник) - это класс. Самая простая фигура - это точка, она и будет базовым классом. Логично предположить, что дочерним классом для точки будет круг. От класса Круг можно перейти к классу Правильный многоугольник, потомками которого будут классы Квадрат и Правильный треугольник.

Наше дерево:

TPset

|

TCircle

|

TRightFigure

/ \

TSquare Triangle

Опишем базовый класс.

1. Класс Точка (TPset)

Поля: координаты, цвет

Методы: создать точку - конструктор, удалить - деструктор, нарисовать, подвинуть, показать и стереть.

TPset = object

private { приватные поля }

X : integer; { координата X }

Y : integer; { координата Y }

Color : integer; { цвет }

public

constructor Create(aX, aY, aColor : integer); {создать}

procedure Paint(aColor : integer); {нарисовать}

procedure Show; {показать}

procedure Hide; {стереть}

destructor Destroy; {удалить}

procedure Shift(dX, dY : integer); {подвинуть}

end;

Так как данный класс базовый, то мы должны определить в классе TPset виртуальные методы и поля для наследуемых классов.

Поля :размер и угол

Методы для полей : установить размер фигуры и повернуть ее.

Виртуальные методы - методы, которые переопределяются в наследуемых классах. К таким методам в нашем случае относится рисование фигуры, то есть:

type

PPset = ^TPset;

TPset = object

private { приватные поля и методы }

X : integer; { координата X }

Y : integer; { координата Y }

Color : integer; { цвет }

Size : integer; { размер }

Angle : integer; { угол }

{!!!} procedure Paint(aColor : integer); virtual; {нарисовать }

publiс

procedure Show; {показать }

procedure Hide {стереть }

constructor Create(aX, aY, aColor :integer); {создать }

destructor Destroy; {удалить }

procedure Shift(dX, dY : integer); {подвинуть }

procedure ChangeSize(ToLarge : boolean);

{изменить размер }

procedure Rotate(aAngle : Integer); {повернуть }

end;

2. Класс Круг

PCircle = ^TCircle;

TCircle = object(TPset)

private { приватные поля методы }

{!!!} procedure Paint(aColor : integer); virtual; {нарисовать }

public

constructor Create(aX, aY, aColor, aSize: integer); { создать }

end;

3. Класс Правильная Фигура

PRightFigure = ^TRightFigure;

TRightFigure = object(TCircle)

private { приватные поля методы }

SumSides : integer;

{!!!} procedure Paint(aColor : integer); virtual; {нарисовать }

public

constructor Create(aX, aY, aColor, aSize, aSumSides: integer); {создать }

end;

4. Класс Квадрат

PSquare = ^TSquare

TSquare = object(TRightFigure)

public

constructor Create(aX, aY, aColor, aSize : integer); {создать }

end;

5. Класс Правильнный треугольник

PTriangle = ^TTriangle;

TTriangle = object(TRightFigure)

public

constructor Create(aX, aY, aColor, aSize : integer); {создать }

end;