Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Лабораторная работа №8 Решение задачи на создание и уничтожение объекта.
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания объектов. Закрепить полученные на лекции знания. Написать и отладить программу Теория: Принципы ООП:
Для создания объектов используют 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 Объект – точка
Вариант№2 Объект – 2 линии. ( − | )
Вариант№3 Объект – треугольник.
Вариант№4 Объект – прямоугольный треугольник.
Вариант№5 Объект – квадрат.
Вариант№6 Объект – вертикальный прямоугольник.
Вариант№7 Объект – горизонтальный прямоугольник.
Вариант№8 Объект – круг.
Контрольные вопросы:
Лабораторная работа №9 Решение задачи на создание и уничтожение объектов с помощью конструкторов и деструкторов. Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания и уничтожения объектов с помощью конструкторов и деструкторов. Закрепить полученные на лекции знания. Написать и отладить программу. Теория: Объект создается конструктором и уничтожается деструктором. aMyObject: = tMyClass.Create; Следует обратить внимание на то, что для создания объекта aMyObject вызывается метод класса tMyClass.Create. Конструктор класса успешно работает и до создания объекта. Однако большинство обычных методов (в частности все виртуальные и динамические методы). Вызывать до инициализации объекта не следует. В Delphi конструкторов у класса может быть несколько. Общепринято называть конструктор Create, а название деструктора - Destroy. type Для уничтожения объекта в Delphi рекомендуется использовать не деструктор, а метод Free, который первоначально проверяет указатель, и только затем вызывает деструктор Destroy: procedure tObject.Free; До передачи управления телу конструктора происходит собственно создание объекта: под него отводится память, значения всех полей обнуляются. Далее выполняется код конструктора, написанный программистом для инициализации объектов данного класса. Таким образом, несмотря на то, что синтаксис конструктора схож с вызовом процедуры (отсутствует возвращаемое значение), на самом деле конструктор - это функция, возвращающая созданный и проинициализированный объект. Примечание. Конструктор создает новый объект только в том случае, если перед его именем указано имя класса. Если указать имя уже существующего объекта, он поведет себя по-другому: не создаст новый объект, а только выполнит код, содержащийся в теле конструктора. Чтобы правильно проинициализировать в создаваемом объекте поля, относящиеся к классу - предку, нужно сразу же при входе в конструктор вызвать конструктор предка при помощи зарезервированного слова inherited:
constructor tMyClass.Create;
Как правило, в коде программ, написанных на Delphi, практически не встречается вызовов конструкторов и деструкторов. Дело в том, что любой компонент, попавший при визуальном проектировании в приложение из палитры компонентов, включается в определенную иерархию. Эта иерархия замыкается на форме (класс tForm): для всех ее составных частей конструкторы и деструкторы вызываются автоматически, незримо для программиста. Кто создает и уничтожает формы? Это делает приложение (объект с именем Application). В файле проекта (с расширением DPR) вы можете увидеть вызовы метода Application.CreateForm, предназначенного для этой цели. Что касается объектов, создаваемых динамически (во время выполнения программы), то здесь нужен явный вызов конструктора и метода Free. Задание: Создать собственный объект с помощью конструкторов и деструкторов и использовать его в программе.
Вариант№1 Объект – овал
Вариант№2 Объект – ломаная линия ( ^ ).
Вариант№3 Объект – прямоугольный треугольник
Вариант№4 Объект –круг.
Вариант№5 Объект – треугольник равнобедренный, прямоугольный
Вариант№6 Объект – прямоугольник
Вариант№7 Объект – квадрат.
Контрольные вопросы: Как создать объект с помощью конструктора? Как удалить объект с помощью деструктора? Лабораторная работа №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;
Задание: Создать потомка для ранее созданного объекта Контрольные вопросы:
Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 767; Нарушение авторского права страницы