ОФОРМЛЕНИЕ КУРСОВОЙ РАБОТЫ
Текст выполняется на листах формата А4 (210х297 мм) по ГОСТ 2.301 с применением печатающих устройств вывода ЭВМ (ГОСТ 2.004). На компьютере текст должен быть оформлен в текстовом редакторе.
Тип шрифта: Times New Roman.
Шрифт основного текста – обычный, размер 14 пт.
Шрифт заголовков подразделов – полужирный, размер 14 пт.
Межсимвольный интервал – обычный.
Межстрочный интервал – одинарный. Выравнивание текста по ширине.
Абзацный отступ должен быть одинаковым по всему тексту и равен 15 мм.
Текст работы выполняется на листах формата А4, без рамки, с соблюдением следующих размеров полей:
а) левое – не менее 30 мм;
б) правое – не менее 10 мм;
в) верхнее и нижнее – не менее 20 мм.
Страницы следует нумеровать арабскими цифрами, соблюдая сквозную нумерацию по всему тексту.
Номер страницы проставляют в центре нижней части листа без точки.
Опечатки, описки и графические неточности, обнаруженные в процессе выполнения, допускается исправлять подчисткой или закрашиванием белой краской и нанесением на том же месте исправленного текста. Помарки и следы не полностью удаленного прежнего текста не допускаются.
Объем работы должен составлять не менее 25 страниц основной части. Изложение должно быть последовательным, логичным, конкретным.
ПРИМЕРНЫЕ ТЕМЫ КУРСОВЫХ РАБОТ
- Динамическое распределение памяти и его значимость в реализации ООП парадигмы.
- Шаблоны проектирования.
- Перегружаемые методы. Способы реализации и назначение.
- Обзор технологий OLE и COM.
- История возникновения объектно-ориентированного подхода.
- Наследование. Преимущества повторного использования кода
- Понятие класса. Основное назначение. Принципы создания классов.
- Визуальное программирование.
- Обзор созданных библиотек для упрощенного создания оконных приложений.
- Интегрированные сред разработки ПО и ООП.
ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Библиотека визуальных компонентов VCL и ее базовые классы
Все классы библиотеки визуальных компонентов произошли от группы базовых классов, которые лежат в основе иерархии VCL. Самый общий предок компонентов — это класс TObject, инкапсулирующий простейший объект. Как известно, каждый объект наследует свойства и методы родительского класса. К объекту можно добавить новые свойства и методы, но нельзя удалить унаследованные. Объект-наследник в свою очередь может стать родительским для нового класса, который унаследует возможности всех своих предков.
Поэтому иерархия базовых классов VCL продумана чрезвычайно тщательно — ведь на их основе создано все множество компонентов, используемых в Delphi. Особое место среди базовых классов, помимо TObject, занимают TComponent (от него происходят все компоненты) и TControl (от него происходят все элементы управления).
Класс TObject
Класс TObject является родоначальником всей иерархии классов VCL. Он реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. Из-за большого разнообразия его потомков, круг общих для всех классов операций весьма невелик.
В первую очередь — это создание экземпляра объекта и его уничтожение. Любой объект выполняет эти две операции в обязательном порядке.
Процесс создания объекта включает выделение области адресного пространства, установку указателя на экземпляр объекта, задание начальных значений свойств и выполнение установочных действий, связанных с назначением объекта. В общем случае две последние операции могут не выполняться.
Указатель на экземпляр объекта передается в переменную объектного типа, которая в дальнейшем будет идентифицировать объект в программном коде приложения. В приведенном выше фрагменте кода переменная объектного типа SomeList объявлена как экземпляр типа TStrings. При создании экземпляра этого типа конструктор Create возвращает в переменную SomeList указатель на выделенную для нового объекта область памяти. Для этого применяется метод Newinstance, который вызывается в конструкторе автоматически:
class function Newinstance: TObject; virtual;
Объект класса TObject обеспечивает выполнение этого процесса для любого порожденного от него объекта. А уже внутри конструктора, который унаследован от класса TObject, можно предусмотреть инициализацию переменных и выполнение дополнительных операций.
Объявление конструктора выглядит следующим образом:
constructor Create;
В конструкторах потомков это объявление может перекрываться, но при необходимости вызвать конструктор предка используется оператор inherited:
constructor TSomeObject.Create;
begin
inherited Create;
end;
Для уничтожения экземпляра объекта в классе TObject предназначены методы Destroy и Free:
Абстрактный класс TОbjeсt является базовым классом, от которого произошли все остальные классы.
Разработчикам компонентов вовсе не обязательно создавать свои компоненты как непосредственные потомки класса TОbjeсt. Библиотека VCL предоставляет широкий выбор классов потомков класса TОbjeсt, и создаваемые компоненты могут быть производными от них. Эти уже существующие классы обеспечивают большинство функциональных возможностей, которые могут понадобиться новым компонентам. Лишь при создании классов, не являющихся компонентами, имеет смысл делать их потомками класса TОbjeсt.
Методы Create() и Destroy() класса TОbjeсt предназначены для выделения и освобождения памяти для экземпляра объекта. Конструктор TОbjeсt.Create() возвращает указатель на созданный объект. Класс TОbjeсt содержит несколько полезных функций, позволяющих получить информацию об объекте.
Библиотека VCL использует в основном внутренние вызовы методов класса TОbjeсt, что позволяет получить необходимую информацию о типе класса, его имени, базовых классах (предках) для экземпляра любого класса, поскольку все они являются потомками TОbjeсt.
Класс TControl
Класс TControl определяет свойства, методы и события, общие для большинства визуальных компонентов. Например, класс TControl позволяет визуальным компонентам отображаться на экране. Класс TControl содержит такие позиционные свой ства, как Top и Left, свойства размеров Width и Height, значения которых определяют размеры элемента по горизонтали и вертикали. Имеются и некоторые другие свойства: ClientRect, ClientWidth и ClientHeight.
Класс TControl содержит свойства, отвечающие за внешний вид и доступ к ком поненту: Visible, Enabled и Color. В свойстве Font даже можно задать шрифт, используемый для текста, помещаемого в компонент TControl. Этот текст выводится с помощью свойств Text и Caption.
В классе TControl впервые появляются некоторые стандартные события: события мыши — OnClick, OnDblClick, OnMouseDown, OnMouseMove и OnMouseUp, а также со бытия перетаскивания с помощью мыши — OnDragOver, OnDragDrop и OnEndDrag.
Сам по себе класс TControl не очень полезен на своем уровне иерархии. Прямые потомки этого класса никогда не создаются.Компонент TControl может иметь родительский компонент. Он обязательно должен принадлежать классу TWinControl (в VCL) или TWidgetControl (в CLX). Родительские элементы управления должны быть оконными (windowed) элементами управления. Для этого в класс TControl введено свойство Parent.
Таблица 1.
Некоторые события класса TForm:
Событие | Описание |
OnActivate | Cобытие наступает, когда форма становится активной, т.е. получает фокус, например при щелчке на ней. |
OnClose | Событие наступает при закрытии формы после события OnCloseQuery. |
OnCloseQuery | Первое событие при закрытии формы. В его обработчике можно прервать закрытие. |
OnCreate | Первое событие при создании формы. В его обработчике можно настроить форму и ее компоненты. |
OnDiactivate | Событие наступает когда форма перестает быть активной. |
OnDestroy | Последнее событие при закрывании формы и удалении ее из памяти. |
OnHelp | Событие наступает при запросе пользователем помощи. |
OnHide | Событие наступает перед тем, как форма становится невидимой. |
OnPaint | Событие наступает перед прорисовкой формы. |
OnShortCut | Событие наступает при нажатии клавиши пользователем |
OnShow | Наступает перед тем, как форма становится видимой. |
onKeyDown | когда при нажатии на кнопку на клавиатуре она оказалась в нижнем положении |
onKeyUp | когда при отпускании клавиатурной кнопки она оказалась в верхнем положении |
onKeyPress | возникает при нажатии на клавиатурную кнопку. От событий onKeyDown и onKeyUp- оно отличается типом используемого параметра Key |
onMouseDown | когда при нажатии кнопки мышки она оказалась в нижнем положении |
onMouseUp | когда при отпускании кнопки мышки она оказалась в верхнем положении |
onMouseMove | возникает при перемещении указателя мышки над компонентом |
Художник в своей работе использует карандаши и кисти. Методы, обеспечивающие вычерчивание на поверхности холста графических примитивов, тоже используют карандаш и кисть. Карандаш применяется для вычерчивания линий и контуров, а кисть — для закрашивания областей, ограниченных контурами.
Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойства Реn (карандаш) и Brush (кисть), которые представляют собой объекты типа ТРеn и TBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.
Карандаш
Карандаш используется для вычерчивания точек, линий, контуров геометрических фигур: прямоугольников, окружностей, эллипсов, дуг и др. Вид линии, которую оставляет карандаш на поверхности холста, определяют свойства объекта треп, которые перечислены в табл. 2.
Таблица 2.
Свойства объекта ТРеn (карандаш)
Свойство | Определяет |
Color | Цвет линии |
Width | Толщину линии |
Style | Вид линии |
Mode | Режим отображения |
Свойство Color задает цвет линии, вычерчиваемой карандашом. В табл. 3 перечислены именованные константы (тип TColor), которые можно использовать в качестве значения свойства Color.
Таблица 3.
Значение свойства Color определяет цвет линии
Константа | Цвет | Константа | Цвет |
clBlack | Черный | clSilver | Серебристый |
clMaroon | Каштановый | clRed | Красный |
clGreen | Зеленый | clLime | Салатный |
clOlive | Оливковый | clBlue | Синий |
clNavy | Темно-синий | clFuchsia | Ярко-розовый |
clPurple | Розовый | clAqua | Бирюзовый |
clTeal | Зелено-голубой | clWhite | Белый |
clGray | Серый |
Свойство width задает толщину линии (в пикселах). Например, инструкция canvas.Pen.width: =2 устанавливает толщину линии в 2 пиксела.
Свойство style определяет вид (стиль) линии, которая может быть непрерывной или прерывистой, состоящей из штрихов различной длины. В табл. 4 перечислены именованные константы, позволяющие задать стиль линии. Толщина пунктирной линии не может быть больше 1. Если значение свойства Pen.width больше единицы, то пунктирная линия будет выведена как сплошная.
Таблица 4.
Значение свойства Реn. Туре определяет вид линии
Константа | Вид линии |
psSolid | Сплошная линия |
psDash | Пунктирная линия, длинные штрихи |
psDot | Пунктирная линия, короткие штрихи |
psDashDot | Пунктирная линия, чередование длинного и короткого штрихов |
psDashDotDot | Пунктирная линия, чередование одного длинного и двух коротких штрихов |
psClear | Линия не отображается (используется, если не надо изображать границу области, например, прямоугольника) |
Кисть
Кисть (canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами, перечисленными в табл. 5.
Таблица 5.
Свойства объекта TBrush (кисть)
Свойство | Определяет |
Color | Цвет закрашивания замкнутой области |
Style | Стиль (тип) заполнения области |
Область внутри контура может быть закрашена или заштрихована. В первом случае область полностью перекрывает фон, а во втором — сквозь незаштрихованные участки области будет виден фон.
В качестве значения свойства Color можно использовать любую из констант типа TColor (см. список констант для свойства Pen.Color в табл. 4).
Константы, позволяющие задать стиль заполнения области, приведены в табл. 6.
Таблица 6.
Значения свойства Brush, style определяют тип закрашивания
Константа | Тип заполнения (заливки) области |
bsSolid | Сплошная заливка |
bsClear | Область не закрашивается |
bsHorizontal | Горизонтальная штриховка |
bsVertical | Вертикальная штриховка |
bsFDiagonal | Диагональная штриховка с наклоном линий вперед |
bsBDiagonal | Диагональная штриховка с наклоном линий назад |
bsCross | Горизонтально-вертикальная штриховка, в клетку |
bsDiagCross | Диагональная штриховка, в клетку |