Основы Объектно-ориентированного проектирования и программирования. Теория и практика 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основы Объектно-ориентированного проектирования и программирования. Теория и практика



Класс

Суть подхода к объектно-ориентированному проектированию и программированию состоит в том, что вводится понятие класса, как развитие понятия модуля с определенными свойствами и поведением, характеризующимися обязанностями класса. Delphi предусматривает толькоинструментарий создания классов; сами же классы создаются разработчиками ПО. В Delphi7 …имеется свыше 400 стандартных классов – компонентов (библиотека), разработанных программистами фирмы Borland, используя важное свойство классов – наследование, однако пользователь может создавать свои новые классы. Новый класс может наследовать свойства, методы и события класса, на основе которого он создан (родительского класса). Таким образом, классами называются функционально законченные фрагменты программ, служащие образцами для создания себе подобных экземпляров. Будучи однажды созданными, они могут быть включены в другие программы или в разные места одной и той же программы, что обеспечивает высокую производительность при программировании.

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

Структура описания класса

Type< Имя класса >= class(<Имя класса-родителя >)

Private

< Частные описания >;

Protected

< Защищенные описания >;

Public

< Общедоступные описания >;

Published

< Опубликованные описания >;

end;

Разделы private и protected содержат защищенные описания, доступные внутри модуля, в котором они находятся, а Public содержит общедоступные описания, видимые в любом месте программы, где доступен сам класс. Раздел published содержит опубликованные описания в дополнение к общедоступным описаниям, и порождают информацию о типе времени выполнения(Run-Time Type information-RTTI). Одно из назначений раздела published – обеспечение доступа к свойствам объектов при конструировании приложений. В Инспекторе объектов (это одно из окон интегрированной среды, см. ниже) видны те свойства, которые являются опубликованными. Если published не указан, то по умолчанию он является опубликованным.

Как было сказано ранее, разработчиками среды создано множество классов, включенных в библиотеку, используя важное свойство классов – наследование, однако пользователь может создавать свои новые классы.

Пример фрагмента описания пользовательского класса

Type

TMyClass=class

aIntField:intger;

aStrField:String;

Данные – Поля

……..

End; (подобно описанию записей в Pascal), где поля - уникальные для каждого экземпляра данные, обладающие своим типом, например, имя пользовательского класса – TMyClass от предка class, а данные - это поля aIntField (целого типа) и aStrField (строкового типа)

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

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

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

· Полиморфизм.

Инкапсуляцией называется объединение данных и логики их обработки в одно целое, название которому объект. Так, например класс TForm инкапсулирует все необходимое для создания Windows - окна, а TString - обеспечивает работу с таблицей и т. д.

Наследование. Любой класс может быть порожден от другого класса, при этом он (порожденный класс) наследует поля, методы и свойства своего родителя, а также может создавать свои. Например, наследование: TChildClass=class(ParentClass) указывает на то, что порожденный новый класс наследует поля, свойства и методы класса – родителя. Таким образом, появляется возможность создавать сложные структуры классов.

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

Класс представляет собой единство трех сущностей полей, методов и свойств. Назначение полей класса – хранение информации об объекте. Методы - это процедуры и функции для обработки полей. Свойства занимают промежуточное положение между полями и методами. С одной стороны, свойства можно использовать как поля, присваивая им различные значения с помощью оператора присваивания, с другой стороны - внутри класса доступ к значениям свойств выполняется методами класса. Объединение этих сущностей в единое называется инкапсуляцией – одним из основных принципов ООП. Задача, решаемая с использованием методики ООП, описывается в терминах объектов и операций над ними, а программа при таком подходе представляет собой набор объектов и связей между ними.

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

· Совокупность данных и способов работы с ними.

· Совокупность свойств и методов, а также событий, на которые он реагирует.

 

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

 

Программирование в современных средах строится на тесном взаимодействии двух процессов:

· Конструирование визуального проявления программы, т. есть ее окна. Таким окном в указанной технологии является форма, в которую внедряются другие объекты – компоненты (визуальные,

· невизуальные, диалоги). В ИСР Delphi7 библиотека визуальных компонентов представлена линейкой с набором страниц, каждая из которых содержит определенный набор пиктограмм компонентов (кнопки, списки, поля, таблицы и т. д.).

· Написание кода, придающего элементам этого окна и программы функциональность.

Конструирование проекта

Форма – служит основой всех разрабатываемых приложений. Ее окно – контейнер для всех видов коипонентов Форме в Delphi соответствует класс TForm. При добавлении формы в проект создаются автоматически модуль формы, в котором она описывается как наследник класса TForm, и файл содержащий информацию о параметрах самой формы и внедренных в нее компонентах.

Ее окно имеет свойства, присущие всем окнам Windows.

Окно формы

Окно формы это проект Windows – окна будущей программы. Вся область на этапе конструирования заполнена точками координатной сетки для упорядоченного размещения компонентов. На начальной стадии это окно пусто, Рис 2. 2. 1.

Рис 2.2.1. Окно пустой формы

 

Форма имеет определенный набор свойств. Конструирование окна (внедрение в него компонентов) является прекрасным достоинством визуального программирования.

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

Рис. 2.2.2. Иерархия компонентов Delphi

Все компоненты, которые могут быть внедрены в форму, представляют палитру компонентов. Каждый компонент, как класс, является наследником класса TСomponent(базовый для компонентов), управляющего применением к ним возможностей визуального программирования:

· возможность переноса компонента в форму – создание экземпляра данного класса, управление свойствами компонента с помощью визуального построителя и Инспектора объектов.

· Принадлежность. При создании экземпляра ему определяется его владелец, например, форма.

· Сохраняемость и восстанавливаемоесть. Определяется классом TРersistent(постоянный).

· Поддержка технологии COM, позволяющей преобразовывать компоненты Delphi в объекты ActiveX и импорт из ActiveX в Delphi.

Визуальные компоненты (ЭУ – элементы управления) имеют взаимодействие с пользователем, визуальное представление и управляются TСontrol (наследником TСomponent) с целью определения им свойств, методов и событий, такими как расположение на экране, выравнивание друг относительно друга, применяемые шрифты и др.

Не визуальные компоненты не показаны на экране во время выполнения программы, а отображаются в окне формы в виде пиктограмм, добавляемых в поддержку некоторых технологий, например BDE(), ADO(), а также при взаимодействии программ через сети. Не взаимодействуют с пользователем.

Диалоговые компоненты. Это не визуальные компоненты. Вызываются методом Execute, описанным в классе TСommonDialog, отображают диалоговое окно взаимодействия с пользователем.

Ниже в таблицах приведены основные компоненты ввода/вывода текстовой и графической информации.

 

Организация ввода/вывода данных и основные свойства компонентов, представленных в нижеследующих таблицах

Организация ввода/вывода данных включает использование ряда групп компонентов:

· Ввода – вывода(Edit, MaskEdit, SpinEdit, Label, MontCalendar, DateTimePicker), редактирования простых данных (ввод строк и чисел), редактирование логических значений;

· Работа со списками ListBox, ComboBox, ColorBox, CheckListBox для ввода, хранения, выбора и передачи данных;

· Работа с многострочными редакторами (Memo,RichEdit) для ввода, выбора и передачи многострочных данных с возможностью форматирования;

· Работа с компонентами (StringGrid, DrawGrid, ValueListEditor) для ввода, редактирования, обработки и передачи данных, представленных в табличной форме;

· Редактирование логических значений с помощью переключателей(RadioButton, CheckBox).

· Изменение числового значения в заданном диапазоне(ScrollBar – полоса скроллинга, TrackBar – выбор числового значения с помощью бегунка).

· Работа с файлами (запись в файл, чтение из файла).

Компоненты Edit, MaskEdit, Label, LabelEdit относятся к одному классу, вследствие чего имеют множество схожих свойств, а также и свои функциональные особенности. UpDown используют для настройки пределов редактирования значения и шага его изменения(Min, Max, Increment). MaskEdit(англ. -строка маскированного ввода ) используют для ввода информации по заданному шаблону (маске).

Остановимся на основных свойствах известных Вам компонентов ввод/вывода Edit, Label, Memo, ListBox, StringGrid. Иные компоненты будем рассматривать по ходу лабораторных работ.

Основные свойства рассматриваемых компонентов:

Edit, Label –Caption.

ListBox – Items, Add, MultiSelect, Selected, SelCount – SelectedCount( количество выбранных элементов).

Memo – Lines, Add.

StringGrid, как и все указанные компоненты для работы с данными в табличной форме, имеют следующие возможности:

· Отображение таблиц с возможностью изменения видимой области, если вся информация не может быть сразу выведена на экран.

· Редактирование текстовых значений в ячейках.

· Изменение высоты строк и ширины столбцов.

Организацию фиксированных строк и столбцов, не перемещаемых во время прокрутки видимой области. Компонент StringGrid представляет таблицу, содержащую строки и столбцы. Назначение – отображение в таблице текстовой информации. В StringGrid возможно отображение и графической информации. Таблица может иметь полосы прокрутки, при этом заданное число первых столбцов и строк может не прокручиваться. Свойства FixedCols, FixedRows, FixedColor определяют число фиксированных столбцов и строк, а также цвет фона фиксированных ячеек таблицы.


 

 
 


 

 

 

Рис. 2.2.3. Представление фиксированных строк и столбцов в таблице

 

Вертикальная стрелка указывает на фиксированный 0- й столбец, а левая – на фиксированную нулевую строку, рис. 2. 2. 3.

Свойства ColCount и RowCount определяют соответственно количество столбцов, строк в таблице. ColWidths – ширина для каждого столбца(по умолчанию в пикселях), RowHeight –высота строки, применяемая при инициализации таблицы и добавлении ячеек. В данной схеме размещения присутствует три столбца(0, 1, 2) и 12(0 – 11) строк.

Свойство Options представляет собой множество свойств таблицы, определяющих поведение строк и столбцов таблицы, такие как: разделительные линии в фиксированных и не фиксированных ячейках, перемещение столбцов и строк и т. д. В Options важным свойством является goEditing со значением = True, позволяющим редактировать значения в ячейках таблицы. В основном компонент StringGrid используется для того, чтобы была возможность использовать для обработки значения, размещенные в ячейках. Для этого используются свойства Col и Row, определяющие индексы столбцов и строк. А свойство Cells [ACol,ARow:integer]:string – двумерный массив элементов таблицы размером ColCount* RowCount, нумерующийся с 0. Например, NewTabl.Cells [0,0] указывает на ячейку в нулевом столбце и нулевой строке таблицы с именем NewTabl. А Cells [i,j] обозначает ячейку в i й колонке (столбце) и j –й строке.

Рассмотрев основные компоненты ввода/вывода, следует обратить внимание на классификацию типов и на функции преобразования типов, см. Приложение 1.


Страница Standard

Компонент Тип Описание
Метка Label Основное свойство – Caption. Доступно изменение цвета метки и шрифта. Используется для размещения текста на формах и других контейнерах.
Поле редактирования. Edit Основное свойство-Text. Используется для отображения однострочных текстовтовых данных.
Окно многострочного редактора текста. Memo Основное свойство-Lines Используется для отображения многострочных текстовтовых данных.
Окно списка. ListBox Основное свойство-Items. Позволяется выбор элементов списка.
Панель Panel Используется как контейнер для группирования органов управления и других малых контейнеров.
Фрейм Frame Используется как контейнер других компонентов.
Линейки прокрутки (скроллинга) ScrollBar Используется для создания зон отображения с прокруткой.
Окно списка с полем редактирования. ComboBox Основное свойство-Items. Объединяет функции ListBox и Edit.
Группа радиокнопок. RadioGroup Используется для создания групп радиокнопок.

Страница Additional

Компонент Тип Описание
Таблица DrawGrid Используется для отображения в строках и столбцах изображений.
Таблица StringGrid Таблица с массивом строк и столбцов. Основное свойство-Cells.
Кнопки BitBtn SpeedButton Кнопка с надписью(BitBtn), SpeedButton с зависимой, независимой фиксацией. Могут объдиняться в группу при одной нажатой кнопке.
Изображение Image Для рисования и вывода изображений из графических файлов(BMP,WMF,JPG).
Диаграммы и графики Chart Для создания диаграмм и графиков.

Страница Samples

Компонент Тип Описание
Окно редактирования со счетчиком. SpinEdit Окно редактирования в комбинации с кнопкой - счетчиком.
Календарь Calendar Отображение календаря на указанный месяц в стандартном формате.
Таблица цветов ColorGrid Для создания таблицы цветов, из которой можно выбрать требуемый цвет.

Страница Dialogs

Компонент Тип Описание
OpenDialog Диалог для выбора имени файла.
SaveDialog Диалог для выбора имени файла при записи.
OpenPictureDialog Диалог для выбора имени графического файла.
SavePictureDialog Диалог для выбора имени графического файла при записи.
ColorDialog Диалог для выбора цвета.

 

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

Отдельные экземпляры компонентов, вставляемые в форму, получают имя класса с порядковым числовым индексом. По используемому в Delphi соглашению все имена классов начинаются с буквы Т. Например, TForm1 от стандартного класса TForm, Button1 –экземпляр стандартного класса Tbutton и т. д.

 

Пример описания класса

Type

TForm1 = class(TForm)

SpeedButton1: TSpeedButton;

BitBtn1: TBitBtn;

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

Chart1: TChart;

 

Procedure TForm1. SpeedButton1Click(Sender:TObject);

Procedure TForm1.BitBtn1Click(Sender:TObject);

Procedure TForm1.Button1Click(Sender:TObject);

Procedure TForm1.Button2Click(Sender:TObject);

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

End;

Для связи подпрограмм с классом, методами которого они являются, название класса указывается перед именем самой процедуры и отделяется от него точкой, Tform1.

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

Пояснение к предыдущему примеру:

Строка TForm1 = class(TForm) определяет новый класс TForm1, созданный по образцу стандартного класса TForm. который описывает пустое Windows – окно, а TForm1 описывает окно с уже вставленными в него компонентами, см. поля. При этом, левая часть показывает компонент, а после точки - принадлежность к его стандартному классу. Как видно из фрагмента, в форму внедрены 4 кнопки(экземпляры), имеющие свой стандартный класс.

Компонент (кнопка) SpeedButton1 - экземпляр класса TSpeedButton.

Компонент (кнопка) BitBtn1 - экземпляр класса TBitBtn.

Класс TButton в данном примере имеет два экземпляра - Button1, Button2. Компонент (многострочный редактор) Memo1 – экземпляр класса TMemo. Компонент (диаграмма)Chart1 - экземпляр класса TChart.

Каждый из выше описанных методов (заголовки процедур обработки событий), автоматически попадает в раздел описания типов, как только будет произведен двойной щелчок по объекту (в данном фрагменте – по кнопкам), либо OnClick - в Events (Инспектора объектов среды). Рассмотрим один из заголовков методов описания класса -

Procedure TForm1.Button2Click(Sender:TObject);

Вслед за именем процедуры TForm1.Button2Click располагается в скобках параметр вызова Sender:Tobject, передающийся во все обработчики событий и имеющий тип Tobject. Tobject является ключевым классом,см. Рис. 2, наследниками которого являются все классы в Delphi – программе, в том числе и компоненты. Tobject обеспечивает фундаментальные основы поведения всех объектов, инкапсулируя методы, которые:

· Создают и разрушают экземпляры класса, реагируя на создание и разрушение.

· Возвращают информацию об объектах и классах и времени выполнения.

· Поддерживают обработку событий объектами.

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

Глобальные объекты

С любой запускаемой программой связываются от 2 до 5 глобальных объектов:

· Application(Программа)

· Screen(Экран)

· Printer(Принтер)

· Session(Сеанс)

· Clipboard(Буфер обмена).

Все указанные объекты объявляются глобальными переменными в наиболее часто используемых модулях:

Application и Screen - в модуле Forms,

Printer – в Printers,

Session –в DBTables,

Clipboard – в Clipbrd.

 

Основы создания приложений

При проектировании любого приложения Delphi строит программу, основываясь на модульном принципе. Конструирование компонентов осуществляется в окне дизайнера, связанном с формой(Form1 – Окно формы), называемой главной и принадлежащей конкретной программе. Однако, программа может использовать и другие формы для решения локальных в ней задач. Окно формы, как и другие окна Windows, имеет заголовок. Оно является контейнером для внедрения в него компонентов, для их удобного размещения окно покрыто сеткой.



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 457; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.104.248 (0.08 с.)