Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.docx
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
246 Кб
Скачать
☆

13. Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Наследование

Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Класс

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Объект

Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение).

Прототип

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

14 В Object Pascal экземпляры объектов могут быть только динамическими. Это означает, что в приведенном выше фрагменте переменная AMyObject на самом деле является указателем, содержащим адрес объекта.

Объект "появляется на свет" в результате вызова специального метода, который инициализирует объект – конструктора. Созданный экземпляр уничтожается другим методом – деструктором:

AMyObject := TMyObject.Create;

{ действия с созданным объектом }

...

AMyObject.Destroy;

Здесь объекта еще нет, но обратите внимание, что вызывается метод TMyObject.Create, а не AMyObject.Create. Есть такие методы (в том числе конструктор), которые успешно работают до (или даже без) создания объекта.

В Object Pascal конструкторов у класса может быть несколько. Общепринято называть конструктор create. Типичное название деструктора – Destroy.

type

TMyObject = class(TObject)

MyField: Integer;

Constructor Create;

Destructor Destroy;

Function MyMethod: Integer;

end;

Для уничтожения экземпляра объекта рекомендуется использовать метод Free, который первоначально проверяет указатель (не равен ли он Nil) и только затем вызывает Destroy:

AMyObject.Free ;

До передачи управления телу конструктора происходит создание объекта – под него отводится память, значения всех полей обнуляются. Далее выполняется код конструктора, написанный программистом для инициализации экземпляров данного класса. Таким образом, хотя синтаксис конструктора схож с вызовом процедуры (не определено возвращаемое значение), но на самом деле конструктор – это функция, возвращающая созданный и инициализированный объект.

15. В языках программирования инкапсуля́ция имеет одно из следующих значений, либо их комбинацию:

  • языковой механизм ограничения доступа к определённым компонентам объекта;

  • языковая конструкция, способствующая объединению данных с методами (или другими функциями), обрабатывающими этими данные.

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).

В то же время, в языках поддерживающих замыкания, инкапсуляция рассматривается как понятие не присущее исключительно объектно-ориентированному программированию. Также, реализации абстрактных типов данных (например, модули) предлагают схожую модель инкапсуляции.

Сокрытие реализации целесообразно применять в следующих целях:

  • предельная локализация изменений при необходимости таких изменений,

  • прогнозируемость изменений (какие изменения в коде нужно сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

16. Насле́дование — механизм объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.

Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса...

17. Полиморфи́зм (в языках программирования) — возможность объектов с одинаковой спецификацией иметь различную реализацию.

Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования[1].

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).

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

  • внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именами методов, типами аргументов и их количеством);

  • внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций).

18. Создание прикладных программ, или приложений, в Delphi выполняется в интегрированной среде разработки IDE (Integrated Development Environment). IDE служит для организации взаимодействия с программистом и включает в себя ряд окон, содержащих различные элементы управления. С помощью средств интегрированной среды разработчик может проектировать интерфейсную часть приложения, а также писать программный код, и связывать его с управляющими элементами. При этом вся работа по созданию приложения, включая отладку, происходит в IDE. Главные составные части среды программирования Интегрированная среда программирования Delphi состоит из следующих основных частей:

  1. Главное окно

  2. Дизайнер форм (Form Designer)

  3. Редактор исходного текста (Editor Window)

  4. Палитра компонентов (Component Palette)

  5. Инспектор объектов (Object Inspector)

В главном окне отображается Главное меню, Панель инструментов и Палитра компонентов (см. рисунок). Главное меню содержит обширный набор команд для доступа к функциям Delphi. Панель инструментов находится под Главным меню в левой части Главного окна и содержит 15 кнопок быстрого доступа для вызова часто используемых команд Главного меню. Палитра компонентов находится справа от Панели инструментов и содержит множество компонентов, размещаемых в создаваемых приложениях. Все компоненты делятся на группы, каждая из которых в Палитре компонентов располагается на отдельной странице (Standard, Additional, Win 32 и др.).

Рисунок - Приложение Delphi.

Дизайнер форм в Delphi служит для создания визуального интерфейса программы (рис. 9). Дизайнер Форм первоначально состоит из одного пустого окна, которое заполняется компонентами, выбранными в Палитре компонентов. Редактор исходного текста (Редактор кода) представляет собой текстовый редактор, с помощью которого можно создавать и редактировать программный код (рис. 9). Инспектор объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента (рис. 9). Первая страница – это список свойств, вторая – список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то обычно делается это в Инспекторе объектов. Страница событий связана с Редактором кода. Если дважды щелкнуть мышкой на правую сторону какого-либо пункта, то соответствующий данному событию код автоматически запишется в Редактор. Сам Редактор немедленно получит фокус, и появится возможность добавить код обработчика данного события.

Организация проекта, основные файлы проекта Проект в Delphi состоит из форм, модулей, установок параметров проекта, ресурсов и т.д. Вся эта информация размещена в файлах: файл проекта (.dpr); файл модуля (.pas); описание формы (.dfm); описание ресурсов (.res); параметры проекта (.dof); параметры среды (.cfg); исполняемый файл (.exe). Типичная головная программа приложения имеет вид: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Текст модуля имеет вид. unit Unit1; interface {Список подключаемых модулей} uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; {Объявление класса формы} type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; {Сюда могут включаться объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей} implementation {$R *.dfm} {Сюда могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.} end.

19.(18)

20. Конструктор форм (Form Designer) предназначен для разработки внешнего вида формы Вашего приложения. Это очень удобный инструмент визуального проэктирования. С его помощью можно за считанные минуты разработать форму любой сложности. Я не буду здесь рассказывать об очевидных приемах работы. Сконцентрирую Ваше внимание на несколько завуалированных, не очевидных и мало известных приемах. И так... Всем известно, что с помощью мыши можно разместить на форме любой компонент с палитры, а также перемещать уже размещенные компоненты. Но что же делать, если нужно переместить компонент, который полностью закрыт дочерним компонентом (например TPanel, на котором размещен TMemo с выравниванием alClient)? Для перемещения такого компонента (в нашем случае панели TPanel) нужно просто начать перетаскивать дочерний компонент (TMemo) и нажать клавишу Esc. Прейти от выделенного элемента к родительскому в аналогичном случае можно с пощью той же клавиши Esc. Очень часто необходимо выделить саму форму (для самых разных целей), но также часто вся клиентская часть формы полностью закрыта дочерними елементами. Для ее выделения можно конечно воспользоваться инспектором объектов (о нем я расскажу в другой статье), но это иногда очень неудобно. Проще щелкнуть мышью по любому элементу на форме, удерживая клавишу Shift. Всем известно, что любой элемент имеет свойства Top и Left, с помощью которых задаются координаты элементов. Эти координаты отсчитываются от верхнего левого угла клиентской части родительского элемента (например формы). Изменить свойства Top и Left можно с помощью перетаскивания мышью, задавая нужные значения в Инспекторе объектов, или с помощью... клавиатуры - клавишами стрелок, удерживая клавишу Ctrl. Если же прижать Shift, то с помощью стрелок можно точно регулировать размеры компонента. Клавиши Ctrl+Shift+стрелки перемещают компонент по узлам сетки (шаг которой задается в меню Tools>Environment Options на закладке Preferences). Часто бывает нужно выровнять несколько компонентов одновременно (или "уровнять" их размеры). Для этого полезно использовать команду Allign... (или Size...) контекстного меню формы или меню Edit. После окончания проектирования полезно зафиксировать все компоненты на форме, чтобы случайно не сдвинуть их. Для этого существует команда Lock Controls меню Edit. Кроме того, Конструктор форм имеет уникальный набор подсказок (хинтов): при изменении размеров элемента в подсказке отображаются текущие размеры элемента (это, к сожалению, справедливо только при изменении размеров мышью); при "наезде" мыши на компонент в хинте можно увидеть имя и тип компонента; при перемещении компонента (опять же, только мышью) в посказке видно его текущее положение (свойства Left и Top). И последнее. В Delphi-5 появилась новая возможность: форма может сохраняться (в *.dfm файле) не только в двоичном виде, но и в текстовом. Это наиболее актуально, если Вы будете использовать проекты Delphi-5 в более ранних версиях Делфи, т.к. более ранние версии просто не поймут этот формат. В этом случае Вам необходимо в контекстном меню формы (форм?) убрать флажек Text DFM, или убрать в окне Environment Options на закладке Preferences флаг New form as Text (это значение по умолчанию). Здесь, кстати, находятся и другие параметры, касающиеся материала данной статьи.