Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Объектный тип в Турбо-Паскале

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

type TImage = object {объект - изображение TImage} X, Y: integer; { координаты левого верхнего угла изображения} RX, RY: integer; {размеры изображения по осям X, Y} V: boolean; {признак видимости изображения} end;

Для объявления типа "объект" было использовано ключевое слово Object. Переменная типа TImage может объявляться статически (в секции Var) или динамически (с помощью соответствующего указателя и процедуры New). Обращение к полям объектного типа осуществляется с использованием составного имени или оператора With.
В соответствии с концепциями ООП объект содержит не только данные (в нашем примере X, Y, RX, RY, V), но и правила их преобразования, оформленные в виде процедур и функций, например:

type PImage=^TImage; {указатель на объект-изображение} TImage=object {объект-изображение - предок для символа и строки} X,Y: integer; {координаты левого верхнего угла изображения} RX, RY: integer; {размеры изображения по осям X,Y} V: boolean; {признак видимости изображения} procedure Init(A,B:integer); {инициализирует координаты X,Y} procedure On; {делает изображение видимым} procedure Off; {делает изображение невидимым} procedure Move(Dx,Dy:integer); {передвигает изображение на экране} function GetX:integer; {определяет координату X} function GetY:integer; {определяет координату Y} procedure PrintImage; {выводит изображение на экран} end;

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

Приведем тексты некоторых подпрограмм - методов:

procedure TImage.Init(A,B: integer); begin X:=A; Y:=B; V:=FALSE; end; procedure TImage.On; begin end; {пустая процедура} procedure TImage.Move(Dx,Dy: integer); begin Off; {погасить изображение} X:=X+Dx; Y:=Y+Dy; {переместить изображение} On; {включить изображение} end; function TImage.GetX:integer; begin GetX:=X; end; procedure TImage.PrintImage; begin end; {пустая процедура}

Теперь можно определить в программе экземпляры объекта, например:

Var TIm: TImage; PIm: PImage;

и в дальнейшем оперировать с экземплярами объектов, используя объявленные методы:

TIm.Init(1,1); New(PIm); PIm^.Init(1,1); PIm^.Mov(-1,0); {движение на одну позицию влево}

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

<== предыдущая лекция | следующая лекция ==>
Алгоритмическая и объектная декомпозиция | Способы наследования и переопределения
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 672; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.