ОФОРМЛЕНИЕ КУРСОВОЙ РАБОТЫ

Текст выполняется на листах формата А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 Диагональная штриховка, в клетку