Реферат: Объекты Turbo Pascal 7.0 - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Объекты Turbo Pascal 7.0

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 42 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

- 19 - Объекты Turbo Pascal 7.0 Воронежский Государственный Педагогический У ниверситет Курсовая работа по информатике на тему : Объекты Turbo Pascal 7.0 Выполнил : студент 2-го курса физико-математического факультета отделения “физика” Головачёв Павел Владимирович Проверил : канд идат техничеких наук , доцент кафедры информатик и Кравец Вера Владимировна Воронеж 1999. Оглавление : 1. Объекты (введение ). 2. Основные принципы ООП. 3. Постановка учебной зада чи. 4. Создание объектов. 5. Использование объектов. 6. Список используемой лит ературы. Объекты Turbo Pascal 7.0. 1. Объекты. В основе того или иного языка программирования лежит некоторая руковод ящая идея , оказывающая существенное влияние н а стиль соответствующих программ. Исторически первой была идея структуриров ания программ , в соо тветствии с которо й программист должен был решить , какие име нно процедуры он будет использовать в сво ей программе , а затем выбрать наилучшие ал горитмы для реализации этих процедур . Появлен ие этой идеи было следствием недостаточной изученности алгоритмичес к ой стороны вычислительных процессов , стольхарактерной для ранних програмных разработок (сороковые — пя тидесятые годы ). Типичным примером процедурно-ориен тированного языка является Фортран – первый и всё ещё один из наиболее популярны х языков программирова н ия . Последоват ельное использование идеи процедурного структури рования программ привело к созданию обширных библиотек программирования , содержащих множество сравнительно небольших процедур , из которых , как из кирпичиков , можно строить «здание » программы. П о мере прогресса в области в ычислительной математики акцент в программирован ии стал смещаться с процедур в сторону организации данных . Оказалось , что эффективная разработка сложных программ нуждается в действенных способах контроля правильности испол ьзова н ия данных . Контрольдолжен осуще ствляться как на стадии компиляции , так и при прогоне программ , в противном случае , как показала практика , резко возрастают трудности создания крупных програмных проектов . Отчётливое осознание этой проблемы привело к создани ю Ангола -60, а позже Па скаля , Модулы -2, Си и множества других языко в программирования , имеющих более или менее развитые структуры типов данных . Логическим следствием развития этого направления стал модульный подход к разработке программ , хар актеризующийся с тремлением «спрятать» д анные и процедуры внутри модуля. Начиная с языка Симула -67, в программиро вании наметился новый подход , который получил название объектно-ориентированного программирования (в дальнейшем ООП ). Его руководящая идея заключается в стремле нии связать данные с обрабаты вающими эти данные процедурами в единое ц елое – объект . Характерной чертой объектов является инкапсуляция (объеди нение ) данных и алгоритмов их обработки , в результате чего и данные , и процедуры во многом теряют самостоятельное значени е . Фактически ООП можно рассматривать как модульное программирование ноаого уровня , когда вместо во многом случайного , механического объединения процедур и данных акцент делается на их смысловую связь. Какими мощными средствами располагает ООП нагля дно демонстрирует библиотека Turbo Vision , входящая в комплект поставки Турбо Паскаля . В этой работе рассмотрены основные идеи ООП и способы их использования. Следует заметить , что преимущества ООП в полной мере проявляются лишь при раз работке достаточно с ложных программ . Боле е того , инкапсуляция придаёт объектам соверше нно новое свойство «самостоятельности» , максималь ной независимости от остальных частей програм мы . Правильно сконструированный объект располагае т всеми необходимыми данными и процедурами их о бработки , чтобы успешно реали зовать тербуемые от него действия . Попытки использовать ООП для программирования несложны х алгоритмов , связанных , например , с рассчётным и вычислениями по готовым формулам , чаще в сего выглядят искуственными нагромождениями нену ж ных языковых конструкций . Такие п рограммы обычно не нуждаются в структуризации , расчленении алгоритма на ряд относительно независимых частей , их проще и естественнее разрабатывать традиционными способами Паскаля . При разработке сложных диалоговых программ программист вынужден структурировать программу , так как только в этом случае он может рассчитывать на успех : «критическо й массой» неструктурированных программ является объём в 1000-1200 строк исходного текста – отладка неструктурированных программ болшего объёма обычно сталкивается с чрезмерными трудностями . Структурирование программы ведёт , фактически , к разработке собственной библиотек и программирования – вот в этот момент на помощь приходят новые средства ООП. 2. Основные прин ципы ООП. Объ ектно-ориентированное программирование основано на «трёх китах» – трёх важне йших принципах , придающих объектам новые свой ства . Этими принципами являются инкапсуляция , наследование и полиморфизм. Инкапсуляция есть объединение в единое ц елое данных и алгорит мов обработки эт их данных . В рамках ООП данные называются полями объект а , а алгоритмы – объектными методами . Инкапсуляция позволяет в максимальной сте пени изолировать объект от внешнего окружения . Она существенно повышает надёжность разраба тываемых програм м , т.к . локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объёмами данных , причём количество и тип этих данных обычно тщательно контролирутся . В результате замена или модификация алгоритмов и данных , инкапсул ированных в о бъект , как правило , не влечёт за собой плохо прослеживаемых п оследствий для программы в целом (в целях повышения защищённости прграмм в ООП поч ти не используются глобальные переменные ). Другим немаловажным следствием инкапсуляции является лёгкость обмена о бъектами , п ереноса их из одной программы в другую . Можно сказать , что ООП «провоцирует» разраб отку библиотек объектов , таких как Turbo Vision . Наследование ес ть свойство объектов порождать своих потомков . Объект-потомок автоматически наследует от ро дителя все поля и методы , может допо лнять объекты новыми полями и заменять (пе рекрывать ) методы родителя или дополнять их. Принцип наследования решает проблему моди фикации свойств объекта и придаёт ООП в целом исключительную гибкость . При работе с объектами прогр аммист обычно подбирает объект , наиболее близкий по своим свойств ам для решения конкретной задачи , и создаё т одного или нескольких потомков от него , которые «умеют» делать то , что не реа лизовано в родителе. Последовательное проведение в жизнь принц ипа «нас ледуй и изменяй» хорошо согла суется с поэтапным подходом к разработке крупных програмных проектов и во многом с тимулирует такой подход. Полиморфизм – это свойство родственных объектов (т.е . об ъектов , имеющих одного общего родителя ) решать схожие по смыслу проблемы разными способами . В рамках ООП поведенческие свойств а объекта определяются набором вхожящих в него методов . Изменяя алгоритм того или иного метода в потомках объекта , программис т может придавать этим потомкам отсутствующие у родителя специфическ и е свойств а . Для изменения метода необходимо перекрыть его в по томке , т.е . объявить в потомке одноимённый метод и реализовать в нём нужные действия . В результате в объекте-родителе и объект е-потомке будут действовать два одноимённых метода , имеющие разную а лгоритмическую основу и , след овательно , придающие объектам разные свойства . Это и называется полиморфизмом объектов. В Турбо Паскале полиморфизм достигается не только описанным выше механизмом насл едования и перекрытия методов родителя , но и их виртуализац ией (см . ниже ), позволяющей родительск им методам обращаться к методам потомков. 3. Постановка уч ебной задачи. Знакомство с техникой ООП в этой работе иллюстрируется примерами , объединёнными рамками следующей у чебной задачи. Требуется разработать програ мму , кото рая создаёт на экране ряд графических изо бражений (точки , окружность , линия , квадрат ) и может перемещать эти изображения по экрану . Вид создаваемого программой экрана показан ниже. Для перемеще ния изображений в программе будут использоват ься клавиши управления курсором , клавиши Home , End , PgUr , PgDn (для пермещения по диагональным направл ениям ) и клавиша Tab для выбора перемещаемого объекта . Выход из програм мы – клавиша Esc . Техническая реализация программы потребует использования средств двух стандар тных библиотек – CRT и GRAPH . Чтобы не отвлекать внимание от основных проблем ООП , при описании реализации учебной задачи о собенности использования средств этих библи отек лишб очень кратко коментируются в те кстах программы. 4. Создание объе ктов. В Турбо Пас кале для создания объектов используется три зарезервированных слова : object , constructor , destructor и три стандартные директивы : private , public и virtual . Зарезервированное слово object используется для описания объекта . Описание объекта долж но помещаться в разделе описания типов : type MyObject = object поля объекта методы объекта end ; Если объект порождается от какого-ли бо родителя , имя родителя указы вается в круглых скобках сразу за словом object : type MyDescendantObject = object (MyObject) ............................................................ ............................................................ end ; Любой объект может иметь с колько угодно потомков , но только одного р одителя , что позволяет создавать иерархические деревья наследования объектов. Для данной учебной задачи создадим об ъект-родитель TGraphObject , в рамках которого инка псулир ованы поля и методы , общие для всех ос тальных объектов : type TGraphObj = object Private поля объекта будут скрыты от пользовател я X , Y : Integer ; координаты реперной точки Color: Word; цвет фигуры Public Constructor Init (aX, aY: Integer; aColor: Word); соз даёт экзепляр объекта Procedure Draw (aColor: Word); Virtual; вычерчива ет объект заданным цветом aColor Procedure Show ; показыв ает объект – вычерчивает его цветом Color Procedure Hide ; прячет объект – вычерчивает его цвет ом фона Procedure MoveTo (dX, dY: Integer); перемещ ает объект в точку с координатами X + dX и Y + dY end ; коне ц описания объекта TGraphObj В дальнейшем предполага ется создать объекты-потомки от TGraphObject , р еализующие все специфические свойства точки , линии , окружности и прямоугольн ика . Каждый из этих графических объект ов будет характеризоваться положением на экране (поля X и Y ) и цветом (по ле Color ). С помощью метода Draw он будет способен ото бражать себя на экране , а с помощью свойств “показать себя” (метод Show ) и “спрятать себя” (метод Hide ) смож ет перемещаться по экрану (метод MoveTo ). Учи тывая общность свойств графических объекто в , мы объявляем абстрактный объект TGraphObj , который не связан с конкретной графической фигурой . Он объединяет в с ебе все общие поля и методы реал ьных фигур и будет служить родителем для других объектов. Директива Private в описании объекта от крывает секцию описания скрытых полей и методов . Перечисленные в этой сек ции элементы об ъекта “не видны” программисту , если этот объект он получил в рамках библиотечного TPU - модуля . Скрываются обычно те поля и методы , к которым программист (в его же интересах !) не должен им еть непосредственного доступа . В данном примере он не может произвольн о менять координаты реперной точки ( X , Y ), т.к . это не приведёт к перемещению объе кта . Для изменения полей X и Y пр едусмотрены входящие в состав объекта методы Init и MoveTo . Скрытые поля и методы доступны в рамках той программной еди ницы (программы или мод уля ), где описан соответствующий объект . В дальней шем предполагается , что программа будет использовать модуль GraphObj с описанием объек тов . Скрытые поля будут доступны в модуле GraphObj , но недоступны в использу ющей его основной программе . Разумеется , в р амках реальной задачи созда ние скрытых элементов объекта вовсе н еобязательно . В объект TGraphObj они введены лишь для иллюстрации возможностей ООП. Директива public отменяет действие директив ы private , по этому все следующие за public элементы объекта дост упны в лю бой программной еденице . Директивы private и public могут произвольным обра зом чередоваться в перделах одного об ъекта. Варианты объявления объекта TGraphObj без использования механизма private ... public : type TGraphObj = object X,Y: I nteger; Color: Word; Constructor Init (aX,aY: Integer; aColor: Word); Procedure Draw (aColor: Word); Virtual; Procedure Show; Procedure Hide; Procedure MoveTo (dX,dY: Integer); end; Описани я полей ничем не отличают ся от описания обычных переменных . Полями могут быть любые структуры данных , в том числе и другие объекты . Исп ользуемые в данном примере поля X и Y содержат координату реперной (характ ерной ) точки нрафического объекта , а по ле Color — его цвет . Реперная точ ка характеризует текущее положение графической фигуры на экране и , в принципе , может быть любой её то чкой (в данном примере она совпадает с координатами точки в описываемом ниже объекте TPoint , с центром окружност и в объекте T С ircle , первым концом прямой в объекте TLine и с левым верхним углом прямоугольника в объекте TRect ). Для описания методов в ООП используются традиционные для Паскаля п роцедуры и функции , а так же особ ый вид процедур — конструкторы и деструкторы . Конструкторы предназначены для создан ия конкретного экземпляра объекта , ведь объект — это тип данных , т.е . “шаблон” , по кото рому можно создать сколько угодно раб очих экземпляров данных объектного типа (типа TGraphObj , например ). Зарезервированное слово constructor , используемое в заголовке ко нструктора вместо procedure , пр едписывает компилятору создать особый код пролога , с помощью которого настраива ется так называемая таблица виртуальных методов (см . ниже ). Если в объекте нет виртуальных методов , в нём може т не быть ни одного конструктора , н аоборот , если хотя бы один метод описан как виртуальный (с пос ледующим словом Virtual , см метод Draw ), в состав объекта должен входить хотя бы один конструктор и обращение к конструктору должно прежшествовать обращению к любому виртуальному методу. Типично е действие , реализуемое конструктором , состоит в наполнеии объек тных полей конкретными значениями . Следует заметить , что разные экземпляры одног о и того же объекта отличаются д руг от друга только содержимым объект ных полей , в то аремя как каждый из них ис п ользует одни и те же объектные методы . В данном примере конструктор Init объекта TGraphObj получает все необходимые для полного определения экземпляра данные через параме тры обращения aX, aY, aColor. Процедура Draw пред назначена для вычерчивания графическо г о объекта . Эта процедура будет реализо вываться в потомках объекта TGraphObj по- разному . Например , для визуализации точки следует вызвать процедуру PutPixel , дл я вычерчивания линии — процедуру Line и т.д . В объекте TGraphObj процедура Draw определена как в иртуальная (“вообра жаемая” ). Абстрактный объект TGraphObj не предназначен для вывода на экран , однако наличие процедуры Draw в этом объекте говорит о том , что любой потомок TGraphObj должен иметь собств енный метод Draw , с помощью которого о н может показать себя на экране. При трансляции объекта , содержащего виртуальные методы , создаётся так называ емая таблица виртуаль ных методов (ТВМ ), количество элементов которой равно количес тву виртуальных методов объекта . В это й таблице будут храниться адреса точе к вход а в каждый виртуальный метод . В данном примере ТВМ объекта TGraphObj хранит единственный элемент — адрес метода Draw . Первоначально элементы ТВМ не содержат конкретных адресов . Ес ли бы мы создали экземпляр объекта TGraphObj с помощью вызова его конструкт ор а Init , код пролога конструктора поместил бы в ТВМ нужный адрес родительского метода Draw . Далее мы создадим несколько потомков объекта TGraphObj . Каждый из них будет иметь собственный конструктор , с помощью котор ого ТВМ каждого потомка настраивается так , чтобы её единственный элемент содержал адрес нужного метода Draw . Такая процедура называется поздним связыванием объекта . Позднее связывание позволяет методям родителя обращаться к виртуальным методам своих потомков и использовать их для реализации специ фи чных для потомков действий. Наличие в объекте TGraphObj виртуального метода Draw позволяет легко реализоват ь три других метода объекта : чтобы показать объект на экране в методе Show , вызывается Draw с цветом aColor , рав ным значению поля Color , а чтобы спря тать графический объект , в методе Hide вызывается Draw со значением цвета GetBkColor , т.е . с текущим цветом фона . Рассмотрим реализацию перемещения объе кта . Если потомок TGraphObj (например, TLine ) хоч ет переместить себя на экране , он обращается к родител ьскому методу MoveTo . В этом методе сначала с помощью Hide объект стирается с э крана , а затем с помощью Show пока зываетя в другом месте . Для реализации своих действий и Hide , и Show обращаю тся к виртуальному методу Draw . Пос кольку вызов MoveTo происходит в рамках объекта TLine , используется ТВМ этого объекта и вызывается его метод Draw , вычерчивающий прямую . Если бы перемещала сь окружность , ТВМ содержала бы адрес метода Draw объекта TС ircle и визуализация-ст ирание объекта осуществлялась бы с по мощью этого м етода. Чтобы описать все свойства объект а , необходимо раскрыть содержимое объектных методов , т.е . описать соответствующие процедуры и функуии . Описание методов производится обычным для Паскаля способом в любом месте раздела описаний , но после описания объе кта . Наприме р : type TGraphObj = object ................................. ................................. end ; Constructor TGraphObj.Init; begin X:= aX; Y:= aY; Color:= aColor end ; Procedure TGraphObj.Dr aw; begin Эта процедура в родительском объекте ничего не делае т , поэтому экземплялры TGraphObj не способны отображать себя на экране . Чтобы потом ки объекта TGraphObj были способны отображать себя , они должны перекрывать этот м етод end; Procedure TGraphOb j.Show; begin Draw (Color) end ; Procedure TGraphObj.Hide; begin Draw (GetBkColor) end ; Procedure TGraphObj.MoveTo; begin Hide; X:= X+dX; Y:= Y+dY; end; Отмечу два обстояте льства . Во-первых , при описании методов и мя метода дополняется спереди им енем объекта , т.е . используется составное имя метода . Это необходимо по той простой причине , что в иерар хии родственных объектов любой из мет одов может быть перекрыт в потомках . Составные имена чётко указывают прин адлежность конкретной процедуры . Во-вторых , в любом объектном методе можно использовать инкапсулированные поля объекта почти так , как ели бы они был и определены в качестве глобальных пе ременных . Например , в конструкторе TGraph.Init пе ременные в левых частях оператор о в присваивания представляют собой объектны е поля и не должны заново описыв аться в процедуре . Более токо , описание Constructor TGraph.Init; var X,Y: Integer; ошибк а ! Color: Word; ошибка ! begin .......................... .......................... end; вызовет сообщение о двойном определении пере менных X, Y, Color (в этом и состоит отличие в использовании полей от г лобальных переменных : глобальные переменные можно переопре делять в процедурах , в то время как объектные поля переопределят ь нельзя ) . Стоит обратить внимание на то , что абс трактный объект TGraphObj не предназначен для выводя на экран , поэтому его мет од Draw ничего не делает . Однако методы Hide, Show, MoveTo “знают ” формат в ызова этого метода и реализуют необхо димые действия , обращаясь к реальным м етодам Draw своих будущих потомков четез соответствующие ТВМ . Это и ес ть полтморфизм объектов. Создадим простейшего потомка от Tgraphobj — объект TР oint , с п омощью которог о будет визуализироватьс я и перемещаться точка . Все основные действия , необходимые для этого , уже есть в объекте TGraphObj , поэтому в объекте TPoint перекрывается единственный метод — Draw : type TPoint = object (TGraphObj) Procedure Draw (aColor); Virtual ; end ; Procedure TPoint.Draw; begin PutPixel (X,Y,Color) показываем цветом Color пиксель с координатами X и Y end ; В новом объекте TР oint можно испол ь зовать любые методы объекта-родителя TGraphObj . Например , вызвать метод MoveTo , что бы переместить изображение точки на новое место . В этом случае родительский метод TGraphObj.MoveTo будет о бращаться к методу TPoint.Draw , чтобы спрятать и затем показать из ображение точки . Такой вызов станет доступен после обращения к конструктору Init объекта TР oint , который нужным образом настроит ТВМ объекта . Если вызвать TPoint.Draw до вызова Init , ег о ТВМ не будет содержать правильного адре са и программа “зависнет” . Чт обы создат объект-линию , необходимо ввести два новых поля для хранения к оординат другого конца . Дополнительные поля т ребуется наполнить конкретными значениями , поэтом у нужно перекрыть конструктор родотельского о бъекта : type TLine = object (TGraphObj ) dX, dY: Integer; Приращение коо рдинат второго конца Constructor Init (X1, Y1, X2, Y2: Integer; aColor: Word); Virtual ; end ; Constructor TLine.Init; Вызывает унаследов анный конструктор TGraphObj для инициации полей X, Y, Color. Затем инициирует поля dX, dY begin Вызываем унаследованный конструктор Inherited Init (X1, Y1, aColor); Инициируем поля dX, dY dX:= X2-X1; dY:= Y2-Y1 end ; Procedure Draw; begin SetColor (Color); Устанавливаем цвет Color Line (X, Y, X+dX, Y+dY) Вычерчиваем линию end ; В конструкторе TLine.Init для инициации полей X, Y, Color, унаследованных от ро дмтельского объекта , вызывается унаследованный конструктор TGraph.Init , для чего используется зарезервированное слово inherited (а нгл . — унаследованный ): Inherited Init (X1, Y1, aColor); C таким же у спехом мы могли бы использовать и составн ое имя метода : TGraphObj.Init (X1, Y1, aColor); Для инициации полей dX и dY вычисляется расстояние в пикселах по горизонтали и вертикали от первого конца прямой до её второго к онца . Это позволяет в методе TLine.Draw вычислить координаты второго конца по координатам перв ого и смещениям dX, dY . В результате простое изменение координ ат реперной точки X,Y в родительском методе TGraph.MoveTo перемещает всю фигур у по экрану. Теперь нетрудно реализовать объект TС ircle для создания и перемещения окружности : type TCircle = object (TGraphObj) R: Integer; Constructor Init (aX, aY, aR: Integer; aColor: Word); Procedure Draw (aColor: Virtual ); end ; Constructor TCircle.Init; begin Inherited Init (aX, aY, aColor); R:= aR end; Procedure TCircle.Draw; begin SetColor (aColor); устанавливает цвет Color Circle (X, Y, R) вычерчивает окружность end; В объекте Trect, с помощью которого создаётся и перемещается прямоугольник , учтём то обстоятельство , что для задания прямоугольни ка требуется указать четыре целочисленных пар аметря , т.е . столько же , сколько для задания линии . Поэтому объект TRect удобнее породить не от TGraphObj, а от TLine , чтобы испо льзовать его конструктор Init : tipe TRect = object (TLine) Procedure Draw (aColor: Word); end; Procedure TRect.Draw; begin SetColor (aColor); Rectangle (X, Y, X+dX, Y+dY) вычерчиваем прямоугольник end; Чтобы описания графических объектов не мешали созданию основной прогр аммы , оформим эти описания в отдельном мод уле GraphObj : Unit GraphObj; Interface интерфейсная часть модуля со держит только объявления объектов type TGraphObj = object ................................. ................................. end ; TPoint = object (TGraphObj) ................................................ ................................................ end ; TLin e = object (TGraphObj) .............................................. .............................................. end ; TCircle = object (TGraphObj) ............................................... ............................................... end ; TRect = object (Tline) ................................... ................................... end ; Implementation исполняемая часть содержит о писания всех объектных методов Uses Graph; Constr uctor TGraphObj.Init; .............................................. .............................................. end . В интерфейсной части модуля приводятся лишь объявления объектов , подобно тому как описываются другие типы данных , объявляемые в модуле доступными для внешних пр ограммных едениц . Расшифровка объектных методов помещается в исполняемую часть implementation , как если бы это были описания обычных интерфейсных процедур и функций . При описании методов можно опускать повторное описание в заголов к е параметров вызова . Если они всё же п овторяются , они должны в точности соответство вать ранее объявляемым параметрам в описании объекта . Например , заголовок конструктора TGraphObj.Init может быть таким : С onstructor TGraphObj.Init; или таким : С onstruc tor TGraphObj.Init (aX, aY: Integer; aColor: Word); 5. Использование Объектов. Идею инкапсуляции полей и алгоритмов можно применить не только к гр афическим объектам , но и ко всей прграмме в целом . Ничто не мешает нам создать объект-программу и “научить” его трём основным действиям : инициации ( Init ), выполнению основной ра боты ( Run ), заверше нию ( Done ). На э тапе инициации экран переволится в графически й режим работы и создаются и отображаются графические объекты (100 экземпляров TР oint и по одному э кземпля ру TLine, TCircle, TRect ). На этапе Run осуществляется сканирование клавиатуры и перемещение графических объектов . Наконец , на этапе Done экран переводится в текстовый режим и завершается работа всей программы. Назовём объект-программу именем TGraphApp и р азместим его в модуле GraphApp (пока не обращайте внимания на точки , скрывающие содержательную часть модуля — позднее будет представлен его полный текст ): Unit GraphApp; Intrface type TGraphApp = object Procedure Init; Procedure Run; Destructor Done; end ; Implementation Procedure TGraphApp.Init; ............................................ ............................................ end ; ............................................ ............................................ end . В этом случае основная программа буде т предельно простой : Program Graph_Objects; Uses GraphApp; var App: TGraphApp; begin App.Init; App.Run; App.Done end . В ней мы создаём единственный экземпляр App объекта-программы TGraphApp и обращаемся к трём его методам. Создание экземпляра объекта ничуть не отличается от создание экземпляра переменной любого другого типа . Просто в разделе о писания переменных мы указываем имя переменно й и её тип : var App: TGraphApp; Получив это указание , компилятор зар езервирует нужный объём памяти для размещения всех областей объекта TGraphApp . Чтобы обратиться к тому или иному объектному методу или полю , испо льзуется составное имя , причём первым указыва ется не имя объектного типа , а имя со ответствующей переменной : App.Init; App.Ryn; App.Done; Переменные объектного типа мог ут быть статическими или динамическими , т.е . располагаться в сегменте данных (статические ) или в куче (динамические ). В последнем с лучае мы могли бы использовать такую п рограмму : Program Graph_Objects; Uses GraphApp; type PGrapgApp = ^TGraphApp; var App: PGraphApp; begin App:= New (PGraphApp, Init) App^.Run; App^.Done end ; Для инициации динамической пер еменной App испо льзуется вызов фу нкции New . В этом случае первым п араметром указываеися имя типа инициируемой п еременной , а вторым осуществляется вызов мето да-конструктора , который нужен для настройки т аблицы виртуальных методов . Такой приём (распр еделение объектов в динамической памяти с одновременной инициацией их ТВМ ) характ ерен для техники ООП. Ниже приводится возможный вариант модуля GraphApp для да нной учебной прогаммы : Unit GraphApp; Interface Uses GraphObj; const NPoins = 100; коли че ство точек type объект-программа TGraphApp = object Points: array [1..NPoints] of TPoint; массив точек Line: TLine; лин ия Rect: TRect; прямоугольник Corcle: TCircle; окружность ActiveObj: Integer; активный объект Procedure Init; Procedure Run; Procedure Done; Procedure ShowAll; Procedure MoveActiveObj (dX, dY: Integer); end ; Implementation Uses Graph, CRT; Procedure TGraphApp.Init; Инициирует графический режим работы экрана . Создаёт и отображает NPoints экземпляров объекта TР oint, а так же экземпляры объектов TLine, TCircle и TRect var D, R, Err, k: Integer; begin инициируем графику D:= Detect; режи м автоматического определ ения типа графического адаптера InitGraph (D, R, ‘ \ tp\bgi ’ ); Иниции руем графический режим. Текстовая строка должна зад ава ть путь к каталогу с графи ческими драйверами Err:= GraphResult: проверяем успех инициации графики if Err<>0 then begin GraphErrorMsg (Err); Halt end; с оздаём точки for k:= 1 to NPoints do Points[k].Init (Random (GetMaxX), Random (GetMaxY), Random (15)+1); с оздаём другие объекты Line.Init (GetMaxX div 3, GetMaxY div 3, 2*GetMaxX div 3, 2*GetMaxY div 3, LightRed); Circ.Init (GetMax X div 2, GetMaxY div 2, GetMaxY div 5, White); Rect.Init (2*GetMaxX div 5, 2*GetMaxY div 5, 3*GetMaxX div 5, 3*GetMaxY div 5, Yellow); ShowAll; показываем все графические объекты ActiveObj:= 1 первым перемещаем прямоугольник end ; TGraphApp.Init -------------------------------------------------------------------------- Procedure TGraphApp.Run; выбирае т объект с по мощью Tab и перемещает его по экрану var Stop: Boolean; призна к нажатия Esc const D = 5; шаг смещения фигур begin Stop:= False; цикл спроса клавиату ры repeat case ReadKey of читаем код нажатой клавиши #27: Stop:= True; нажата Esc #9: begin нажата Tab inc (ActiveObj); if ActiveObj>3 then ActiveObj:= 3 end ; #0: case ReadKey of #71: MoveActiveObj (-D, -D); влево и вверх #72: MoveActiveObj ( 0, -D); вверх #73: MoveActiveObj ( D, -D); впрво и вверх #75: MoveActiveObj (-D, 0 ); влево #77: MoveActiveObj ( D, 0 ); вправо #79: MoveActiveObj (-D, D); влево и вниз #80: MoveActiveObj ( 0, D); вниз #81: MoveActiveObj ( D, D); вправо и вниз end end; ShowAll; Until Stop end ; TGraphApp.Run -------------------------------------------------------------------------- Destructor TGraphApp.Done; закрывает граф ический режим begin CloseGraph end; TGraphApp.Done -------------------------------------------------------------------------- Procedure TGraphApp.ShowAll; показывает все графические о бъекты var k: Integer; begin for k:= 1 to NPoints do Points[k].Show; Line.Show; Rect.Show; Cofc.Show end ; -------------------------------------------------------------------------- Procedure TGraphApp.MoveActiveObj; перемещает акти вный графический объект begin case ActiveObj of 1: Rect.MoveTo (dX, dY); 2: Circ.MoveTo (dX, dY); 3: Line.MoveTo (dX, dY) end end; end. В реализации объекта TGraphApp используется дестру ктор Done . Следует иметь в виду , что в отличие от конструктора , осуществляющего настройку ТВМ , деструктор не связан с какими-то специфичными действиями : для компилятора слова destructor и procedure — синонимы . Введение в ООП деструкторов носит , в основном , стилистическую направле нность — просто п роцедуру , разрушающую экземпляр объекта , принято называть дестр уктором . В реальной практике ООП с деструк торами обычно связывают процедуры , которые не только прекращают работу с объектом , но и освобождают выделенную для него динами ческую п амять . В заключении следует сказать , что форм алистика ООП в рамках реализации этой тех нологии в Турбо Паскале предельно проста и лаконична . Введение лишь шести зарезервиров анных слов , из которых действительно необходи мыми являются три ( object, constructor , virtual ), весьма небольшая пла та за мощный инструмент создания совреммнного програмного обеспечения. Список испол ьзуемой литературы : · Блашкин И.И ., Буров А. А . Новые возможности Turbo-Pascal 6.0. — Спб. : Изд-во “Макет” , 1992. · Бородич Ю.С . и др . Паскаль для персональных компьютеров : Справ . пособие / Ю.С.Бородич , А.Н.Вальвачев , А.И.Кузьмич . — Мн .: Выш . шк .: БФ ГИТМП “НИКА” , 1991. · ВасильевП.П . Турбо Паскал ь — мой друг : М .: Компьютер , ЮНИТИ , 1995. · Дж ордейн Р . Спра вочник программиста персональных компьютеров тип а IBM PC, XT, AT: Пер . с англ ./ Предисл . Н.В.Гайского . — М .: Финансы и статистика , 1991. · Зуев Е.А . Язык програ ммирования Turbo Pascal 6.0. — М .: Унитех , 1992. · Мизрохи . Turbo Pascal и объек тно-ориентированное программирование . — М .: Финансы и статистика , 1992. · Справочник по процедура м и функциям Borland Pascal with Objects 7.0. — Киев : “Диалектика” , 1993. · Фаронов В.В . Программиров ание на персональных ЭВМ в среде Турбо-Пас каль . — М .: Из д-во МГТУ , 1990. · Фёдоров А . Особенности программирования на Borland Pascal. — Киев : “Диалектика” , 1994. · Хершель Р . Турбо Пас каль / 2-е изд ., перераб . — Вологда : МП “М ИК” , 1991. · POWER TOOLS PLUS. Процедуры поддержки для Turbo Pascal 4.0.: Справочное руководство пользовате ля . Техническая документация.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Настоящий мужчина обязан хотя бы раз в жизни покрасить себе ногти молотком.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Объекты Turbo Pascal 7.0", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru