лабораторные на Pasca (Кудрявцев)l
.pdfОсновные понятия объектно-ориентированного программирования |
245 |
|
|
Если названного по имени правила не оказывается у объекта данно- го уровня, то поиск его продолжается у родителя на более высоком уровне в дереве иерархии. Если и у корневого объекта дерева не находится правила с заданным именем, то компилятор выдает со- общение об ошибке. Для обращения к статическому правилу роди- теля необходимоуказать тип родителя и, через точку, имя правила.
Статические правила сильно привязаны к типу объекта, для которо- го они были введены. Этого недостатка лишены виртуальные пра- вила. Подобно динамическим переменным виртуальные правила не имеют полного определения в памяти до непосредственного вы- полнения программы. При их объявлении добавляется зарезервиро- ванное слово Virtual:
Procedure Show; virtual;
Следует помнить, что, однажды определив правило как виртуаль- ное, необходимо определять его таковым и для всех объектов- потомков.
Следующий шаг – придание свойства динамичности самим объек- там. Это можно сделать, вводя указатели на экземпляры объектов, например:
Type PStudentType=^StudentType; PDataType=^DataType;
var
PNamStd: PStudentType; PDataStd: PDataType;
Обращение к динамическим объектам становится возможным толь- ко после выделения памяти в куче (Heap). Это можно сделать, ис- пользуя стандартную процедуру New:
New(PDataStd);
После этого обращение к экземпляру объекта производится с по- мощью соответствующей переменной-указателя PDataStd^. Так, чтобы проинициализировать поля экземпляра объекта PDataStd^, достаточно выполнить следующее обращение:
PDataStd^.Init(‘Иванов’,’Петр’,’543’,2,4,3);
Необходимость инициализации любого объекта и некоторая шаб-
лонность необходимых для этого действий привели к появлению в Турбо Паскале двух новых зарезервированных слов Constructor и Destructor. В синтаксис стандартных процедур New и Dispose добав-
Основные понятия объектно-ориентированного программирования |
247 |
|
|
Grup: Str;
Constructor Init(Fm,Nm,Gr: Str); Destructor Done; virtual; Procedure Show; virtual; Procedure ShowClrScr;
end;
PDataType=^DataType;
DataType=object(StudentType) DataMath: Data;
DataPhis: Data;
DataInf: Data;
Constructor Init(Fm,Nm,Gr: Str; Mt,Ph,Inf: Data); Destructor Done; virtual;
Procedure Show; virtual; end; IMPLEMENTATION
Constructor StudentType.Init(Fm,Nm,Gr: Str); Begin
Famaly:=Fm;
Name:=Nm;
Grup:=Gr;
End;
Procedure StudentType.Show; Begin
Writeln;
Writeln('ФАМИЛИЯ: ',Famaly); Writeln('ИМЯ: ',Name); Writeln('ГРУППА: ',Grup); End;
Constructor DataType.Init(Fm,Nm,Gr: Str; Mt,Ph,Inf: Data); Begin
StudentType.Init(Fm,Nm,Gr);
DataMath:=Mt;
DataPhis:=Ph;
DataInf:=Inf;
End;
Procedure DataType.Show; Begin
StudentType.Show; Writeln('МАТАНАЛИЗ: ',DataMath); Writeln('ОБЩАЯ ФИЗИКА: ',DataPhis); Writeln('ИНФОРМАТИКА: ',DataInf); End;
Procedure StudentType.ShowClrScr; Begin
ClrScr;
249
Лабораторная работа № 23
ЭЛЕМЕНТЫ TURBO VISION
Рассмотренный в предыдущей работе пример создания программы с использованием основных методов ООП (объектно-ориентиро- ванного программирования), несмотря на его простоту и невырази- тельность, демонстрирует, тем не менее, многие преимущества та- кого подхода:
1.Становится совершенно прозрачной структура исполняемой части программы. Программа, написанная с использованием прин- ципов ООП, должна выполнить три основных действия: инициали- зировать объект (процедура Init), показать объект (процедура Show), закрыть объект (процедура Done).
2.Создание объекта отделено от написания кода программы. Для того, чтобы использовать созданный объект, совсем не нужно знать, как выглядят включенные в него методы, то есть как устроен блок IMPLEMENTATION соответствующего модуля — вполне доста- точно сведений о том какие поля имеются у объекта и какими ме- тодами он располагает. В этом смысле “объект” в ООП действи- тельно объект – он имеет определенную “форму” и “знает, как себя вести”.
3.Если имеющийся объект чем-то Вас не устраивает, нет нужды менять код модуля, который этот объект описывает. Принцип на- следования позволяет изменять объекты, расширяя их. Вы создаете объект-потомок, добавляя новые поля и перекрывая унаследован- ные методы.
Ясно, что указанные преимущества могут проявиться в полной ме- ре лишь при написании сложных программ, требующих многократ- ного повторения сходных действий. Примером таких программ мо- гут служить программы, требующие разветвленного пользователь- ского интерфейса – системы меню, строк-подсказок, окон помощи, окон ввода данных и так далее. Понятно, насколько бы упростилось создание подобных программ, если бы в нашем распоряжении име- лась библиотека соответствующих объектов. Turbo Vision и есть та- кая библиотека! Если Вы работаете в текстовом режиме (хотя Turbo Vision не исключает, естественно, графических возможностей Паскаля), то в этой библиотеке Вы найдете все, что нужно для соз-
Элементы Turbo Vision |
251 |
|
|
ремещаться с помощью курсорных клавиш или литерных «горя- чих» клавиш (без Alt).
Внизу расположена строка статуса, которая содержит наиболее
часто употребляемые команды и может использоваться для вывода различного рода сообщений и подсказок о текущем состоянии сис- темы (ее статусе).
При выборе команды New в меню File панель экрана перекрывается окном. Окно имеет рамку с именем и управляющие кнопки вверху. Левая закрывает окно (при ее нажатии мышкой), правая – изменяет размеры, раскрывая окно на полный экран или сворачивая до прежних размеров. Нажав клавишу мыши на верхней стороне рам- ки, Вы можете мышью перемещать окно по экрану. Потянув мыш- кой за правый нижний угол окна, можно изменять его размеры.
При отсутствии мышки те же действия можно выполнить и с кла- виатуры. Для этого можно войти в меню Window (Окно) или сразу воспользоваться “горячей” клавишей Ctr+F5, после чего курсорны-
ми клавишами можно перемещать окно или изменять его размеры (при нажатой клавише Shift). Обратите внимание на то, как при этом изменяется статусная строка. Клавиша F5 распахивает окно на полный экран или восстанавливает его прежние размеры (разумеет- ся, если они были меньше полных). Закрыть окно можно командой Close из меню Window или комбинацией клавиш Alt+F3.
С помощью команды New из меню File Вы можете раскрыть какое угодно число новых окон. Расположить на экране их можно либо каскадом (Cascade из меню Windows) либо мозаикой (Tile). Переход от окна к окну осуществляется командой Next, клавишей F6 или нажатием клавиши Alt и цифры, соответствующей номеру окна (по- следнее возможно лишь для первых 9 окон, остальные не нумеро- ваны). Естественно, что нужное окно можно выбрать и мышкой (IDE – «мышиная» система, все действия с помощью мыши осуще- ствляются проще и быстрее).
Окно имеет полосу прокрутки (скроллинга), позволяющую про-
сматривать большие тексты. Скроллинг – сам по себе видимый элемент. Вместе с вертикальной и горизонтальной полосами про- крутки скроллинг составляет с окном единое целое, объединяясь в группу видимых элементов.
252 |
Лабораторная работа № 23 |
|
|
Войдя, например, в меню Options и выбрав в нем команду Linker, Вы получите еще один пример видимого элемента – диалоговое окно. Оно окрашено в другой цвет и содержит некоторый текст, управ- ляющие кнопки и другие элементы. Существуют различные типы диалоговых окон, с которыми мы познакомимся позже.
Управляющие кнопки могут быть нажаты мышкой. Одна из кнопок выделена цветом надписи (в нашем случае – кнопка Ok) и является кнопкой по умолчанию – она нажимается клавишей Enter. Сменить кнопку по умолчанию можно клавишей Tab.
После знакомства с основными элементами Turbo Vision можно пе- рейти к написанию Вашей первой программы, воспользовавшись рекомендациями разработчиков Turbo Vision.
Как уже отмечалось, основным объектом при составлении про- грамм в Turbo Vision является TАpplication (он описан в модуле АPP.TPU). Это абстрактный объект, который сам ничего не делает. Если выполнить программу:
program MyFirst; uses App;
var
MyApp: TApplication; BEGIN
MyApp.Init;
MyApp.Run;
MyApp.Done;
END.
то можно увидеть этот объект в «чистом виде» – он создает панель экрана и активизирует клавишу выхода Alt+X. Кроме того, из при- веденного примера видно, что в Turbo Vision принято соглашение называть процедуру инициализации объекта Init, процедуру вывода на экран – Run и процедуру закрытия объекта – Done. Эти три про- цедуры и составляют исполняемую часть практически любой про- граммы в Turbo Vision. На самом деле метод Run сложнее – он включает в себя не только вывод объектов на экран, но и обработку событий.
Поскольку объект TApplication слишком прост, Вам придется моди- фицировать его, то есть создавать объекты-потомки, расширяя его поля и перекрывая его методы. Посмотрим, прежде всего, как из-