Object Pascal - диалект языка программирования Pascal. Энциклопедия языков программирования. Факториал: Пример для версий. Borland Delphi 2. Этот пример практически полностью повторяет пример для Turbo Pascal, единственное изменение — добавление строк.
Исторически первой была идея процедурного структурирования программ, в соответствии с которой программист должен был решить, какие именно . В Object Pascal в качестве ограничителей комментария могут также. Зарезервированные слова не могут использоваться в программе ни для каких .
![Object Pascal Программу Object Pascal Программу](http://www.delphiplus.org/images/delphi6-object-pascal-107.jpg)
Object Pascal – это строго типизированный язык высоко уровня, который. 8 Видимость членов объекта; 9 Примеры программ "Hello World".
- Операторы языка Object Pascal - язык программирования Delphi - циклы.
- Изучаем Delphi - Введение в Object Pascal: алфавит языка, зарезервированные слова, структура программы, данные и значения, типы данных, .
![Object Pascal Программу Object Pascal Программу](https://videouchilka.ru/wp-content/uploads/2011/11/Delphi.png)
![Object Pascal Программу Object Pascal Программу](http://www.softportal.com/scr/10585/turbo-pascal-school-pak-mid-2.png)
Объект (OBJECT) - Pascal. В основе того или иного языка программирования лежит некоторая руководящая идея, оказывающая существенное влияние на стиль соответствующих программ. Исторически первой была идея процедурного структурирования программ, в соответствии с которой программист должен был решить, какие именно процедуры он будет использовать в своей программе, а затем выбрать наилучшие алгоритмы для реализации этих процедур.
Последовательное использование идеи процедурного структурирования программ привело к созданию обширных библиотек программирования, содержащих множество сравнительно небольших процедур, из которых, как из кирпичиков, можно строить “здание” программы. По мере прогресса в области вычислительной математики акцент в программировании стал смещаться с процедур в сторону организации данных. Оказалось, что эффективная разработка сложных программ нуждается в действенных способах контроля правильности использования данных. Контроль должен осуществляться как на стадии компиляции, так и при прогоне программ, в противном случае, как показала практика, резко возрастают трудности создания крупных программных проектов.
Отчетливое осознание этой проблемы привело к созданию Алгола—6. Паскаля, Модулы—2, Си и множества других языков программирования, имеющих более или менее развитые структуры типов данных. Начиная с языка Симула—6. ООП). Его руководящая идея заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое — объект. Характерной чертой объектов является инкапсуляция (объединение) данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение. Фактически объектно—ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.
Какими мощными средствами располагает объектно—ориентированное программирование наглядно демонстрирует библиотека Turbo Vision, входящая в комплект поставки Турбо Паскаля. Следует заметить, что преимущества ООП в полной мере проявляются лишь при разработке достаточно сложных программ. Основные принципы ООПОбъектно—ориентированное программирование основано на китах” — трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование, полиморфизм.
Инкапсуляция. Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы — объектными методами.
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т. Объект — потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их. Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость.
При работе с объектами программист обычно подбирает объект, наиболее близкий по своим свойствам для решения конкретной задачи, и создает одного или нескольких потомков от него, которые “умеют” делать то, что не реализовано в родителе. Последовательное проведение в жизнь принципа “наследуй и изменяй” хорошо согласуется с поэтапным подходом к разработке крупных программных проектов и во многом стимулирует такой подход. Полиморфизм. Полиморфизм - это свойство родственных объектов (т. В результате в объекте — родителе и объекте — потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов. В Турбо Паскале полиморфизм достигается не только описанным выше механизмом наследования и перекрытия методов родителя, но и их виртуализацией (см. Требуется разработать программу, которая создает на экране ряд графических изображений (точки, окружность, линия, квадрат) и может перемещать эти изображения по экрану.
Для перемещения изображений в программе будут использоваться клавиши управления курсором, клавиши Ноте, End, Pg. Up, Pg. Dn (для перемещения по диагональным направлениям) и клавиша Tab для выбора перемещаемого объекта. Выход из программы — клавиша Esc. Техническая реализация программы потребует использования средств двух стандартных библиотек — CRT и GRAPH.
Создание объектов. В Турбо Паскале для создания объектов используются три зарезервированных слова: object, constructor, destructor и три стандартные директивы: private, public и virtual. Зарезервированное словоobject используется для описания объекта. Описание объекта должно помещаться в разделе описания типов: type. My. Object = object. Каждый из этих графических объектов будет характеризоваться положением на экране (поля Х и У) и цветом (поле.
Color). С помощью метода Draw он будет способен отображать себя на экране, а с помощью свойств “показать себя” (метод Show) и “спрятать себя” (метод Hide) сможет перемещаться по экрану (метод Move. To). Учитывая общность свойств графических объектов, мы объявляем абстрактный объект TGraph.
Obj, который не связан с конкретной графической фигурой. Он объединяет в себе все общие поля и методы реальных фигур и будет служить родителем для других объектов. Директива. Private в описании объекта открывает секцию описания скрытых полей и методов. Перечисленные в этой секции элементы объекта “не видны” программисту. В нашем примере он не может произвольно менять координаты реперной точки . Для изменения полей Х и Y предусмотрены входящие в состав объекта методы Init и Move. To. Скрытые поля и методы доступны в рамках той программной единицы (программы или модуля), где описан соответствующий объект.
Директиваpublic отменяет действие директивыprivate, поэтому все следующие заpublic элементы объекта доступны в любой программной единице. Директивыprivate и public могут произвольным образом чередоваться в пределах одного объекта. Вариант объявления объекта TGraph. Obj без использования механизма private.
TGraph. Obj = object. X,Y: Integer. Constructor Init(a. X,a. Y: Integer; a.
Color: Word). Procedure Draw(a. Color: Word); Virtual. Procedure Show. Procedure Hide.
Procedure Move. To(d. X, d. Y: Integer). Описания полей ничем не отличаются от описания обычных переменных. Полями могут быть любые структуры данных, в том числе и другие объекты. Используемые в нашем примере поля Х и У содержат координату реперной (характерной) точки графического объекта, а поле Color — его цвет. Реперная точка характеризует текущее положение графической фигуры на экране и, в принципе, может быть любой ее точкой. Для описания методов в ООП используются традиционные для Паскаля процедуры и функции, а также особый вид процедур — конструкторы и деструкторы.
Конструкторы предназначены для создания конкретного экземпляра объекта, ведь объект — это тип данных, т. Если в объекте нет виртуальных методов, в нем может не быть ни одного конструктора, наоборот, если хотя бы один метод описан каквиртуальный (с последующим словом Virtual, см. В нашем примере конструктор Init объекта TGraph. Obj получает все необходимые для полного определения экземпляра данные через параметры обращенияа. Х, а. У и a. Color.
Процедура Draw предназначена для вычерчивания графического объекта. Эта процедура будет реализовываться в потомках объекта TGraph. Obj до- разному. Например, для визуализации точки следует вызвать процедуру Put. Pixel, для вычерчивания линии — процедуру Line и т. В объекте TGraph. Obj процедура Draw определена как виртуальная (“воображаемая”). Абстрактный объект TGraph.
Obj не предназначен для вывода на экран, однако наличие процедуры Draw в этом объекте говорит о том, что любой потомок TGraph. Obj должен иметь собственный метод Draw, с помощью второго он может показать себя на экране. При трансляции объекта, содержащего виртуальные методы, создается так называемая таблица виртуальных методов (ТВМ).
В этой таблице будут храниться адреса точек входа в каждый виртуальный метод. В нашем примере ТВМ объекта TGraph. Obj хранит единственный элемент - адрес метода Draw. Наличие в объекте TGraph. Obj виртуального метода Draw позволяет легко реализовать три других метода объекта: чтобы показать объект на экране в Методе Show, вызывается Draw с цветом a. Color, равным значению поля color, а чтобы спрятать графический объект, в методе Hide вызывается Draw со значением цвета Get.
Bk. Color, т. е. Если . TGraph. Obj Например, TLine) хочет переместить себя на экране, он обращается к родительскому методу Move. To. В этом методе сначала с помощью Hide объект стирается с экрана, а затем с помощью Showпоказывается в другом месте. Чтобы описать все свойства объекта, необходимо раскрыть содержимое объектных методов, т. Описание методов производится обычным для Паскаля способом в любом месте раздела описаний, но после описания объекта. Например: type. TGraph.
Obj = object. .. Во- первых, при описании методов имя метода дополняется спереди именем объекта, т. Это необходимо по той простой причине, что в иерархий родственных объектов любой из методов может быть перекрыт в потомках. Составные имена четко указывают . Во- вторых, в любом объектном методе можно использовать инкапсулированные поля объекта почти так, как если бы они были определены в качестве глобальных переменных. Например, в конструкторе f. Graph. Init переменные в левых частях операторов присваивания представляют собой объектные поля и не должны заново описываться в процедуре.
Более того, описание. Constructor TGraph. Obj. Init. X,Y: Integer; < i>. Однако методы Hide, Show и Move.
To “знают” формат вызова этого метода и реализуют необходимые действия, обращаясь к реальным методам Draw своих будущих потомков через соответствующие ТВМ. Это и есть полиморфизм объектов. Создание объекта . Все основные действия, необходимые для этого, уже есть в объекте TGraph. Obj, поэтому в объекте TPoint перекрывается единственный метод — Draw. TPoint = object(TGraph. Obj)Procedure Draw(a.
Color); Virtual. Procedure TPoint. Draw. Put. Pixel(X,Y,Color).