Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Afanasjeva

.pdf
Скачиваний:
37
Добавлен:
20.04.2015
Размер:
909.09 Кб
Скачать

{Возвращает цвет точки) Function GetVislble: Boolean;

{Возвращает признак светимости точки} end; {Конец описания объекта ТРOINT)

В этом примере описывается объект TPOINT, представляющий собой данные и методы (процедуры и функции), необходимые для работы с графическими точками на экране ПК. Как видим, каждая точка характеризуется некоторым набором данных (своими координатами X и У, цветом COLOR и признаком светимости VISIBLE). Над этими данными определены все необходимые алгоритмические действия. С помощью этих переменных можно осуществлять все предусмотренные в объекте действия, например, для переменных типа TPOINT можно высветить или погасить любую точку, переместить ее по экрану, изменить цвет.

13.3. Наследование

Достоинства объектно–ориентированного программирования проявляются только в случае, если все объекты расположить в виде иерархической структуры, в которой отражены наследование свойств родительских (выше расположенных) объектов дочерними (ниже расположенными) объектами, или потомками.

Наследование – это такое отношение между объектами, когда дочерний объект повторяет структуру и поведение другого объекта (родителя).

Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс – потомком, наследником или производным классом.

При объектно-ориентированном программировании необходимо как можно полно описать методы каждого объекта, определить отношение между ними, т. е. наследование, и, если необходимо, переопределить методы объекта родителя.

Любой объект может быть объявлен потомком ранее описанного объекта. В этом случае он наследует все данные и методы объектародителя и может дополнять их своими данными и методами.

При объявлении объекта-потомка за словом OBJECT в круглых скобках указывается имя объекта–родителя. У объекта может быть сколько угодно потомков, но только один родитель. При объявлении объектапотомка TLINE перечислены лишь те данные и методы, которых недостает

221

в объекте–родителе TPOINT, остальные TLINE автоматически наследует от своего родителя.

Пример 13.3. type

TLine = object (TPoint)

X, Y Integer; {Координаты начала линии} Color word; {Цвет линии)

Visible Boolean; (Признак светимости) XE.YE: Integer; {Координаты второго конца) Procedure SetLocation(NewX, NewY: integer); {Задает новое положение начала линии) Procedure SetColor(NewColor: word); {Устанавливает цвет линии)

Procedure SetVIsible(Vis: Boolean); {Выводит или гасит линию}

Procedure GetLocation(var XLoc, YLoc: integer); {Возвращает координаты начала линии} Function GetColor: word;

{возвращает цвет линии} Function GetVisible: Boolean;

{Возвращает признак светимости линии} Procedure SetLIneLocationfxl.X1,Y1,x2 ,y2: integer); {Задает новое положение линии на экране}

Procedure GetLineLocatlon(var x11,y1l,x2l,y2l):integer); {Возвращает координаты линии}

Procedure SetLineVisible(vis: Boolean); {Выводит или гасит линию)}

end; {Конец описания объекта TLIne }

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

Наследование распространяется на любые объекты, в том числе и объекты–потомки: если в качестве родителя указано имя объекта, который сам по себе является потомком, новый объект наследует все свойства своего родителя и все свойства своих прародителей. Таким образом, наследование обеспечивает создание дерева родственных объектов.

222

Как и любое другое дерево, дерево объектов имеет «корень» объект, являющийся прародителем всех других объектов иерархии, и «ветви» – порожденные от него потомки. По мере передвижения от корня к ветвям и перехода с ветви на ветвь объекты разрастаются в своих размерах, присоединяя к себе все новые и новые поля и методы. Если иерархия объектов хорошо продумана, на каждом ее уровне к объектуродителю добавляются только необходимые поля и методы.

Механизм наследования это, пожалуй, самое мощное свойство ООП. Без наследования объекты превращаются в простую комбинацию данных и подпрограмм, не дающую качественных преимуществ по сравнению с традиционными для Паскаля процедурами и модулями.

13.4. Полиморфизм

Объект-потомок может не только дополнять поля и методы родителя, но и заменять методы родителя на новые (заменять поля родителя нельзя!). Например, вместо правила SETLINEVISIBLE мы могли бы в объекте TLINE объявить правило SETVISIBLE, которое в этом случае перекроет (заменит собой) одноименное правило объекта–родителя TPOINT. В результате, к разным родственным объектам TPOINT и TLINE можно было бы применять одноименные правила SETVISIBLE, обеспечивающие сходные в смысловом отношении действия – показать или сделать невидимым графический объект. Свойство, позволяющее называть разные алгоритмические действия одним именем, называется

полиморфизмом.

Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Задания для самостоятельного выполнения

В соответствии с вариантом задания самостоятельно разработать объект и наследника. Для каждого варианта приведен рекомендуемый перечень операций над объектами.

1.Объект «Студент». Действия над объектами: начисление стипендии, получение информации об успеваемости, вывод личных данных, перевод на следующий курс, операции сравнения объектов, присваивание.

2.Объект «Дата и время суток». Действия над объектами: сравнение объектов, арифметические операции над объектами, вывод на экран данных, присваивание.

223

3.Объект «Цена в рублях и копейках». Действия над объектами класса: сравнение объектов, арифметические операции над объектами, вывод на экран данных, присваивание.

4.Объект «Цветной заполненный круг». Действия над объектами: вывод изображения на экран и удаление изображения (в графическом режиме), перемещение объекта по экрану, изменение цвета и вида заполнения, масштабирование, сравнение объектов, присваивание.

5.Объект «Цветной заполненный прямоугольник». Действия над объектами: вывод изображения на экран и удаление изображения (в графическом режиме), перемещение объекта по экрану, изменение цвета и вида заполнения, масштабирование, сравнение объектов, присваивание.

6.Объект «Цветной заполненный треугольник». Действия над объектами: вывод изображения на экран и удаление изображения (в графическом режиме), перемещение объекта по экрану, изменение цвета и вида заполнения, масштабирование, сравнение объектов, присваивание.

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

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

9.Объект «Цветная заполненная трапеция». Действия над объектами: вывод изображения на экран и удаление изображения (в графическом режиме), перемещение объекта по экрану, изменение цвета и вида заполнения, масштабирование, сравнение объектов, присваивание.

10.Объект «Сотрудник». Действия над объектами: получение информации о месте работы, занимаемой должности и стаже работы, изменение должности, начисление заработной платы, вывод личных данных, операции сравнения объектов, присваивание.

11.Объект «Цветной заполненный сектор». Действия над объектами: вывод изображения на экран и удаление изображения (в графическом режиме), перемещение объекта по экрану, изменение цвета и вида заполнения, масштабирование, сравнение объектов, присваивание.

12.Объект «Абитуриент». Действия над объектами: получение и изменение информации о факультете и шифре специальности, вывод личных данных, получение информации о наличии медали, операции сравнения объектов, присваивание

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

1.Для чего используется механизм ООП?

2.Что такое объект?

224

3.Что такое инкапсуляция?

4.Что такое наследование?

5.Что такое полиморфизм?

6.Что такое методы объекта?

7.Как описываются объекты в Turbo Pascal?

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Аляев, Ю. А. Практикум по алгоритмизации и программированию на языке Паскаль: учебное пособие / Ю. А. Аляев, В. П. Гладков, О. А. Козлов. – М. : Финансы и статистика, 2004. – 528 с.

2.Антонов, А. В. Системный анализ : учебник для вузов / А. В. Антонов. – 2-e изд., стер. – М. : Высш. шк., 2006. – 453 с.

3.Вирт, Н. Алгоритмы и структуры данных / Н. Вирт. – М. : ДМК Пресс, 2011. – 272 с.

4.Гагарина, Л. Г. Алгоритмы и структуры данных : учебное пособие / Л. Г. Гагарина. – М. : Финансы и статистика: ИНФРА–М, 2009. – 303 с.

5.Голицына, О. Л. Основы алгоритмизации и программирования / О. Л. Го-

лицына, И. И. Попов. – М. : Форум, 2010. – 432 с.

6. Епанешников, А. М. Программирование в среде Turbo Pascal 7.0 / А. М. Епанешников, В. А. Епанешников. – 4–е изд., испр. и доп. –

М. : Диалог–Мифи, 2004. – 368 с.

7.Каймин, В. А. Информатика : учебник / В. А. Каймин. – М. : Проспект, 2011. – 270 с.

8.Перегудов, Ф. И. Введение в системный анализ / Ф. И. Перегудов, Ф. П. Тарасенко. – М. : Высшая школа, 1997. – 389 с.

9.Могилев, А. В. Информатика / А. В. Могилев, Н. И. Пак, Е. К. Хеннер ; под ред. Е. К. Хеннера. – М. : Академия, 2009. – 848 с.

10.Моргун, А. Н. Программирование на языке Паскаль. Основы обработки структур данных / А. Н. Моргун, И. А. Кривель. – М. : Вильямс, 2006. – 576 с.

11.Немнюгин, С. А. Turbo Pascal. Программирование на языке высокого уровня: учебник для вузов / С. А. Немнюгин. – 2–e изд. – СПб. : Питер, 2007. – 543 с.

12.Программирование на языке Паскаль / под ред. О. Ф. Усковой. – СПб. :

Питер, 2003. – 333 с.

13.Семакин, И. Г. Основы алгоритмизации и программирования / И. Г. Семакин, А. П. Шестаков. – М. : Академия, 2011. – 400 с.

14.Симонович, С.В. Информатика : универсальный курс / С. В. Симонович. –

СПб. : Питер, 2007. – 432 с.

15.Фаронов, В. В. Turbo Pascal 7.0 : учебный курс / В. В. Фаронов. –

М. : КноРус, 2009. – 368 с.

225

Учебное издание

АФАНАСЬЕВА Татьяна Васильевна, КУВАЙСКОВА Юлия Евгеньевна, ФАСХУТДИНОВА Венера Арифзяновна

АЛГОРИТМЫ И ПРОГРАММЫ

Учебное пособие

Редактор М.В. Штаева

ЛР №020640 от 22.10.97.

Подписано в печать 15.11.2011. Формат 60×84/16. Усл. печ. л. 13,25. Тираж 150 экз. Заказ 1181.

Ульяновский государственный технический университет 432027, г. Ульяновск, ул. Сев. Венец, 32.

Типография УлГТУ, 432027, г. Ульяновск, ул. Сев. Венец, 32.

226

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]