Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Лабораторная работа №8 Решение задачи на создание и уничтожение объекта.



Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания объектов. Закрепить полученные на лекции знания. Написать и отладить программу

Теория:

Принципы ООП:

  1. Инкапсуляция - объединение в единое целое данных и алгоритмов обработки этих данных;
  2. Наследование - свойство объектов порождать своих потомков;
  3. Полиморфизм – свойство родственных объектов решать схожие по смыслу проблемы разными способами.

Для создания объектов используют 3 зарезервированных слова: object, constructor, destructor и 2 стандартные директивы: private, public.

Object – для описания объекта:

Type

Имя объекта = object

private {поля объекта}

{методы объекта}

public {поля объекта}

{методы объекта}

end;

private- описание скрытых полей и методов;

public- поля и методы доступны в любой программной единице.

Например: Создать модуль с объектом «Линия» и методами «Нарисовать», «Переместить» и «Удалить».

UNIT Linia;

INTERFACE

Type

TLene = object

Private

x1, y1, x2, y2: integer; {координаты линии}

color: word; {цвет линии}

Public

Procedure Draw (ax1, ay1, ax2, ay2: integer; aColor: word);

Procedure Perem;

Procedure Udal;

End;

IMPLEMENTATION

Uses graph;

Procedure TLene.Draw;

var dg, dm: integer;

Begin

dg: =detect; InitGraph(dg, dm, ’’);

x1: =ax1; y1: =ay1; y2: =ay2; x2: =ax2;

color: =aColor; setcolor(aColor);

line(x1, y1, x2, y2);

line(x2, y2, x2+60, y2);

End;

Procedure TLene.Perem;

Begin

ClearDevice; SetColor(color);

Line(x1+30, y1+30, x2+30, y2+30);

Line(x2+30, y2+30, x2+90, y2+30);

End;

Procedure TLene.Udal;

Begin

ClearDevice; ReadLn; CloseGraph;

End;

END.

Основная программа: Использование модуля и объекта

Program Object_Line;

Uses crt, Linia;

Var x, y, xs, ys: integer;

Color: word;

objLine: TLene; {объект типа TLene }

Begin

ClrScr;

Readln(x, y, xs, ys, color);

objLine.Draw(x, y, xs, ys, color); {вызов процедуры Draw для объекта}

objLine.Perem; {вызов процедуры Perem}

objLine.Udal; {вызов процедуры Udal}

End.

Задание: Создать собственный объект и использовать его в программе.

Вариант№1

Объект – точка

  1. Свойства - координаты точки, цвет точки;
  2. Методы – нарисовать, переместить, удалить

Вариант№2

Объект – 2 линии. ( − | )

  1. Свойства - координаты начала и конца, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№3

Объект – треугольник.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№4

Объект – прямоугольный треугольник.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№5

Объект – квадрат.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№6

Объект – вертикальный прямоугольник.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№7

Объект – горизонтальный прямоугольник.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№8

Объект – круг.

  1. Свойства - координаты центра, радиус, цвет линии;
  2. Методы – нарисовать, переместить, удалить

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

  1. Как создать объект?
  2. Как использовать методы объекта?
  3. Что такое Private и Public?

 

Лабораторная работа №9 Решение задачи на создание и уничтожение объектов с помощью конструкторов и деструкторов.

Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания и уничтожения объектов с помощью конструкторов и деструкторов. Закрепить полученные на лекции знания. Написать и отладить программу.

Теория:

Объект создается конструктором и уничтожается деструктором.

aMyObject: = tMyClass.Create;
//
// действия с созданным объектом
//
aMyObject.Destroy;

Следует обратить внимание на то, что для создания объекта aMyObject вызывается метод класса tMyClass.Create. Конструктор класса успешно работает и до создания объекта. Однако большинство обычных методов (в частности все виртуальные и динамические методы). Вызывать до инициализации объекта не следует.

В Delphi конструкторов у класса может быть несколько. Общепринято называть конструктор Create, а название деструктора - Destroy.

type
tMyClass=class(tObject)
fMyFiled: integer;
Constructor Create;
Destructor Destroy;
function MyMethod: integer;
end;

Для уничтожения объекта в Delphi рекомендуется использовать не деструктор, а метод Free, который первоначально проверяет указатель, и только затем вызывает деструктор Destroy:

procedure tObject.Free;

До передачи управления телу конструктора происходит собственно создание объекта: под него отводится память, значения всех полей обнуляются. Далее выполняется код конструктора, написанный программистом для инициализации объектов данного класса. Таким образом, несмотря на то, что синтаксис конструктора схож с вызовом процедуры (отсутствует возвращаемое значение), на самом деле конструктор - это функция, возвращающая созданный и проинициализированный объект.

Примечание. Конструктор создает новый объект только в том случае, если перед его именем указано имя класса. Если указать имя уже существующего объекта, он поведет себя по-другому: не создаст новый объект, а только выполнит код, содержащийся в теле конструктора.

Чтобы правильно проинициализировать в создаваемом объекте поля, относящиеся к классу - предку, нужно сразу же при входе в конструктор вызвать конструктор предка при помощи зарезервированного слова inherited:

 

constructor tMyClass.Create;
Begin
inherited Create;
// Код инициализации tMyClass
End;

 

Как правило, в коде программ, написанных на Delphi, практически не встречается вызовов конструкторов и деструкторов. Дело в том, что любой компонент, попавший при визуальном проектировании в приложение из палитры компонентов, включается в определенную иерархию. Эта иерархия замыкается на форме (класс tForm): для всех ее составных частей конструкторы и деструкторы вызываются автоматически, незримо для программиста. Кто создает и уничтожает формы? Это делает приложение (объект с именем Application). В файле проекта (с расширением DPR) вы можете увидеть вызовы метода Application.CreateForm, предназначенного для этой цели. Что касается объектов, создаваемых динамически (во время выполнения программы), то здесь нужен явный вызов конструктора и метода Free.

Задание: Создать собственный объект с помощью конструкторов и деструкторов и использовать его в программе.

 

Вариант№1

Объект – овал

  1. Свойства - координаты центра, радиусы, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№2

Объект – ломаная линия ( ^ ).

  1. Свойства – координаты начала и конца, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№3

Объект – прямоугольный треугольник

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№4

Объект –круг.

  1. Свойства - координаты начала и конца, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№5

Объект – треугольник равнобедренный, прямоугольный

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№6

Объект – прямоугольник

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№7

Объект – квадрат.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

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

Как создать объект с помощью конструктора?

Как удалить объект с помощью деструктора?

Лабораторная работа №10 Решение задачи на создание наследника.

Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания объектов. Закрепить полученные на лекции знания. Написать и отладить программу

Теория:

Если объект порождается от какого-либо родителя, имя родителя указывается в круглых скобках сразу за словом object.

Type

Имя_потомка = object (имя_родителя)

….

End.

Например: создадим потомка от TPixel – объект TLine? С помощью которого будет рисоваться линия.

Type TLine = object (TPixel)

Procedure Draw (x, y, dx, dy, aColor: integer);

End;

Procedure TLine.Draw;

Begin

SetColor(Color);

Line(x, y, x+dx, y+dy);

End;

 

Задание: Создать потомка для ранее созданного объекта

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

  1. Как создать объект?
  2. Как породить потомка?
  3. Как использовать методы объекта?

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-31; Просмотров: 727; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.039 с.)
Главная | Случайная страница | Обратная связь