- •1.Общая часть
- •Описание предметной области
- •1.4 Описание языка
- •1.4.1.2. Среда программирования Delphi
- •1.4.1.3. Классы Delphi
- •1.4.1.4. Объекты Delphi
- •1.4.1.8. Абстракция в Delphi
- •1.4.2. Операторы Delphi
- •1.4.1.5. Инкапсуляция в Delphi
- •1.4.1.6. Наследование в Delphi
- •1.4.1.7. Полиморфизм в Delphi
- •1.4.3. Выражения в Delphi
- •1.4.4. Структура программы написанной на Delphi
- •1.4.5. Свойства объектов в Delphi
- •2.1.3.3 Требование к условиям эксплуатации
- •2.1.3.4 Требование к техническим средствам.
- •2.3. Текст программы
- •2.4.2. Функциональное назначение
- •2.4.3. Описание логической структуры
1.4 Описание языка
1.4.1.1 Delphi
Delphi— императивный, структурированный, объектно-ориентированныйязык программирования, диалект ObjectPascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка ObjectPascal. Начиная с 2007 года уже язык Delphi (производный от ObjectPascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились classhelpers, перегрузки операторов и другое.
ObjectPascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в ObjectPascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством ObjectPascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».
1.4.1.2. Среда программирования Delphi
Embarcadero Delphi , ранее Borland Delphi и CodeGear Delphi, — интегрированная среда разработки ПО для Microsoft Windows на языке Delphi (ранее носившем название Object Pascal),созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая EmbarcaderoTechnologies. Embarcadero Delphi является частью пакета Embarcadero RAD Studio и поставляется в четырёх редакциях: Starter, Professional, Enterprise и Architect.
1.4.1.3. Классы Delphi
TMyClass=class(TObject)
TMyClass — имя класса;
class — ключевое слово, начинающее определение класса;
TObject — класс-предок, если есть наследование;
Private — Описанные в этой секции элементы не доступны извне (за пределами класса, но доступны в пределах модуля).
Protected — Описанные в этой секции элементы доступны только классу и всем его потомкам.
Public — Описанные в этой секции элементы доступны всем.
Published — Описанные в этой секции элементы доступны всем и отображаются в ObjectInspector'e.
1.4.1.4. Объекты Delphi
В программе представители класса — объекты, объявляются в разделе var. Следует обратить особое внимание на то, что в ObjectPascal объект — динамическая структура. Переменная-объект содержит не данные, а ссылку на данные объекта. Поэтому программист должен позаботиться о выделении памяти для этих данных и задании для них начальных значений.
Выделение памяти и инициализация объекта осуществляются с помощью специального метода класса — конструктора, которому обычно присваивают имя create (создать). Чтобы подчеркнуть особую роль и поведение конструктора, вместо ключевого слова procedure в заголовке конструктора используется слово constructor. Выделение памяти для данных объекта происходит присваиванием результата применения метода-конструктора к типу (классу) объекта. Помимо выделения памяти, конструктор, как отмечено выше, решает задачу присваивания полям объекта начальных значений, т. е. осуществляет инициализацию объекта. Реализация конструктора несколько необычна. Во-первых, в теле конструктора нет привычных операторов New, обеспечивающих выделение динамической памяти (всю необходимую работу по выделению памяти выполняет компилятор). Во-вторых, формально конструктор не возвращает значения, хотя в программе обращение к конструктору осуществляется как к методу-функции.
После объявления и инициализации объект можно использовать, например установить значение поля объекта. Доступ к полю объекта осуществляется указанием имени объекта и имени поля, которые отделяются друг от друга точкой. Хотя объект является ссылкой, однако правило доступа к данным с помощью ссылки, согласно которому после имени переменной, являющейся ссылкой, надо ставить значок ^, на объекты не распространяется. Если в программе некоторый объект больше не используется, то можно освободить память, занимаемую полями этого объекта. Для выполнения этого действия используют метод-деструктор free.
