
- •Экзаменационные вопросы Дисциплина: «Технология разработки программных продуктов»
- •Определение технологии конструирования программного обеспечения. Технология программирования. Программная инженерия.
- •Требования к программному средству.
- •Существенные черты программных средств как сложных систем.
- •Характеристики качества программного изделия.
- •Структура жизненного цикла. Большой жизненный цикл.
- •Структура жизненного цикла. Малый жизненный цикл.
- •Классический жизненный цикл пи. Водопадная модель. Классический жизненный цикл
- •Макетирование.
- •Стратегии конструирования по: инкрементная модель.
- •Стратегии конструирования по: быстрая разработка приложений.
- •Стратегии конструирования по: спиральная модель.
- •Руководство проектом. Планирование расписания работ.
- •Руководство проектом. Ввод, распределение ресурсов, анализ полученного расписания. Ввод и распределение ресурсов для выполнения проекта
- •Анализ полученного расписания
- •Руководство проектом. Контроль за исполнением проекта.
- •Особенности ценообразования программных продуктов.
- •Конструктивная модель стоимости: затратный подход.
- •Конструктивная модель стоимости: рыночный подход.
- •Конструктивная модель стоимости: доходный подход.
- •Проектирование программного изделия. Основные этапы.
- •Системный анализ. Требования при разработке технического задания. Техническое задание
- •Общие положения
- •Содержание разделов технического задания
- •Стадии разработки программ: эскизный проект.
- •Стадии разработки программ: технический проект.
- •Стадии разработки программ: рабочий проект.
- •Виды схем и их особенности.
- •Модульно – иерархическое построение программы. Основные принципы структурной методологии.
- •Типовая структура модуля.
- •Модуль. Виды связности.
- •Модуль. Виды сцепления.
- •Сцепление по управлению
- •Общие правила проектирования программного средства: связь по управлению.
- •Общие правила проектирования программного средства: связь по информации.
- •Стиль программирования
- •Стандарты структурного программирования.
- •Внешнее проектирование модулей.
- •Проектирование и кодирование логики модулей.
- •Проектирование программных средств: разработка архитектуры.
- •Проектирование программных средств: процедурная разработка.
- •Принципы объектно-ориентированного программирования: инкапсуляция.
- •Принципы объектно-ориентированного программирования: полиморфизм.
- •Принципы объектно-ориентированного программирования: наследование.
- •Объектно-ориентированный подход в программировании: области доступности элементов класса.
- •Сущность объектного подхода к разработке программных средств: классы, объекты, методы.
- •Основные принципы создания пользовательского интерфейса.
- •Типичные ошибки разработки интерфейса.
- •Современные компоненты интерфейса пользователя. Размещение информации на экране
- •Выделение элементов интерфейса яркостью
- •Использование цвета при проектировании эргономичного интерфейса
- •Непротиворечивость и стандартизация
- •Тексты и диалоги
- •Средства управления графического интерфейса пользователя.
- •Изображения (Иконки)
- •Ментальная модель пользовательского интерфейса.
- •Модель пользователя.
- •Модель программиста.
- •Основные принципы создания меню. Меню
- •Основные принципы создания меню
- •Предотвращение, обнаружение и исправление ошибок.
- •Обработка ошибок в формах ввода
- •Средства организации и работы с графикой.
- •Файлы проекта Delphi.
- •Структура модуля программы Delphi.
- •Окна программы Delphi.
- •Библиотека визуальных компонентов vcl и ее базовые классы.
- •Управление свойствами визуальных компонент в процессе выполнения.
- •Организация ветвлений при разработке программ.
- •Средства организации и обработки событий.
- •Средства организации и работы с файлами.
- •Подпрограммы работы с файлами
- •Компоненты tOpenDialog и tSaveDialog
- •Средства организации и работы с модулями.
Предотвращение, обнаружение и исправление ошибок.
Ошибки могут быть классифицированы как:
ошибки, которые основаны на неправильном понимании действия или порядка действий;
ошибки, которые возникли случайно, непреднамеренно, например опечатка при вводе текста;
Также ошибки второго вида могут быть разделены еще на шесть видов:
ошибки неточности выбора опции (например, пользователь случайно нажал кнопку "выход" и программа закрылась);
ошибки управления данными (например, присвоение ошибочного имени файла из-за неточности отображения последнего);
ошибки ассоциативного характера (например, сохранение файла с именем какого-либо человека, так как пользователь думал о нем в момент сохранения);
ошибка потери активности, когда пользователь забывает необходимую последовательность действий для продолжения работы;
ошибка режима или состояния - когда пользователь думает, что он находится в одном состоянии, но - фактически в другом, например режим вставки взамен режима печати поверх текста в текстовом процессоре;
Пользователь всегда будет делать ошибки, даже в отличной программной системе, поэтому в разрабатываемой системе всегда должна быть предусмотрена защита от ошибок. Техника защиты от ошибок включает в себя следующие аспекты:
принудительные действия в системе, которые предотвращают или затрудняют появление ошибок;
обеспечение хороших и информативных сообщений об ошибках;
использование обратимых действий, которые позволяют пользователям исправлять их собственные ошибки;
обеспечение нормальной диагностики системы, в процессе которой пользователю объясняется, в чем суть ошибки и пути ее исправления;
Обработка ошибок в формах ввода
Основные принципы:
обеспечить возможность посимвольного редактирования введенных записей для исправления ошибок ввода (опечаток);
если ошибка была обнаружена системой, желательно вернуть курсор в поле с ошибочными данными и каким-либо образом выделить это поле визуально;
обеспечить значимые сообщения об ошибках, использующие стиль языка пользователя и соответствующую терминологию;
обеспечьте сообщения об ошибках, которые объясняют и предлагают пути ее устранения;
Средства организации и работы с графикой.
Класс TCanvas.
Обеспечивает пространство (холст, канву) для создания, хранения и модификации графических объектов. Модуль graphics.
Класс TCanvas является основой графической подсистемы Delphi. Канва обеспечивает:
· Загрузку и хранение графических изображений
· Создание новых и изменение хранимых изображений с помощью пера, кисти, шрифта
· Рисование и закраску различных фигур, линий, текстов
· Комбинирование различных изображений
Класс TCanvas имеет два дочерних класса - TControlCanvas и TMetafileCanvas, которые помогают в прорисовке управляющих элементов и в создании для объекта метафайла.
Свойства класса TCanvas :
Свойство Тип Описание
Brush TBrush Определяет цвет и стиль заполнения замкнутых фигур и фона.
Свойство Brush (кисть) присуще многим оконным объектам, включая Canvas. Его можно читать, чтобы определить цвет и стиль заполнения фона окна. Это свойство только для чтения. Однако, атрибуты объекта Brush можно изменять, используя свойства Color и Style. Кроме того все свойства объекта могут быть изменены методом Assign.
Свойство Style определяет шаблон, которым кисть заполняет фон объекта. Но если для кисти задано свойство Bitmap, то свойство Style игнорируется.
Возможные значения свойства Style: bsSolid, bsCross, bsClear, bsDiagCross, bsBDiagonal, bsHorizontal,
bsFDiagonal, bsVertical.
ClipRect Trect Определяет доступную область рисования на канве и область,
подлежащую перерисовке при событии OnPaint.
Свойство только для чтения.
Свойство канвы ClipRect определяет доступную область рисования на канве и область, нуждающуюся в перерисовке. Вне области ClipRect рисовать невозможно.
При обработке события формы OnPaint это свойство определяет ту часть канвы, вне которой перерисовка не требуется. Использование этого свойства позволяет сократить затраты времени на перерисовку.
CopyMode Longint Определяет режим копирования графического изображения на канву.
Font TFont Определяет атрибуты шрифта, которым выводится текст
Свойство Font является объектом типа TFont. Изменение шрифта можно осуществить или созданием нового объекта типа TFont, или изменением свойств Color, Height, Name, Pitch, Size, Style существующего объекта. См. подробнее методы свойства и события объекта Font и его установки по умолчанию в разделе TFont.
Pen TPen Определяет свойства пера, рисующего линии и фигуры.
Свойство канвы Pen определяет атрибуты пера, используемого для рисования линий и фигур. Это свойство является объектом типа TPen (см. описание этого типа для получения дополнительной информации). Атрибуты объекта типа TPen определяют цвет, ширину, стиль линий и режим рисования пера. Присвааивание свойства Pen может производиться методом Assign.
Свойство пера Style определяет вид линии. Это свойство может принимать следующие значения:
psSolid Сплошная линия
psDash Штриховая линия
psDot Пунктирная линия
psDashDot Штрих-пунктирная линия
psDashDotDot Линия, чередующая штрих и два пунктира
psClear Отсутствие линии
psInsideFrame Сплошная линия, но при Width > 1 допускающая цвета, отличные от палитры Windows
Все стили со штрихами и пунктирами доступны только при Width = 1. В противном случае линии этих стилей рисуются как сплошные.
Стиль psInsideFrame - единственный, который допускает произвольные цвета. Цвет линии при остальных стилях округляется до ближайшего из палитры Windows.
PenPos Tpoint Определяет текущую позицию пера.
Свойство канвы PenPos определяет переменной типа TPoint положение пера на канве. Координаты пера, определенные этим свойством, задают начальную точку рисования линии методом LineTo.
Свойство PenPos изменяется методом MoveTo и некоторыми методами рисования (например, методом LineTo). Непосредственная установка PenPos эквивалентна применению метода MoveTo.
Тип TPoint используется для многих свойств и обычно определяет экранные координаты левого верхнего угла прямоугольной области. X определяет горизонтальную координату, а Y - вертикальную.
Pixels Tcolor Определяет цвета пикселей.
TextFlags LongInt Определяет способ вывода текста на канву.
Методы класса TCanvas :
Метод Описание
Arc Рисует дугу окружности или эллипса.
Метод Arc рисует дугу окружности или эллипса с помощью текущих параметров пера Pen. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки.
В Windows NT направление рисования можно изменить на направление по часовой стрелке вызовом функции SetArcDirection.
Chord Рисует замкнутую фигуру, ограниченную дугой окружности или эллипса и хордой.
Метод Chord рисует замкнутую фигуру: дугу окружности или эллипса, замкнутую хордой, с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (
X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Хорда соединяет точки (X3, Y3) и (X4, Y4) .
CopyRect Копирует часть изображения с другой канвы на данную
Draw Рисует графическое изображение в указанную позицию канвы
Метод Draw рисует изображение, содержащееся в объекте, указанном параметром Graphic, сохраняя исходный размер изображения в его источнике и перенося изображение в область канвы объекта TCanvas, верхний левый угол которой определяется параметрами X и Y. Источник изображения может быть битовой матрицей, пиктограммой или метафайлом. Если источник - объект типа TBitmap, то перенос изображения производится в режиме, установленном свойством канвы CopyMode.
DrawFocusRect Рисует изображение прямоугольника в виде, используемом для отображения рамки фокуса, операцией XOR
Ellipse Рисует окружность или эллипс
Метод Ellipse рисует окружность или эллипс с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс.
FillRect Заполняет указанный прямоугольник канвы, используя текущее значение кисти Brush.
Метод FillRect заполняет прямоугольник канвы, указанный параметром Rect, используя текущее значение Brush. Заполняемая область включает верхнюю и левую стороны прямоугольника, но не включает правую и нижнюю стороны. При использовании FillRect параметр Rect часто задается функцией Rect.
FloodFill Закрашивает текущей кистью замкнутую область канвы, определенную цветом
Метод FloodFill закрашивает текущей кистью Brush замкнутую область канвы, определенную цветом и начальной точкой закрашивания (X, Y). Точка с координатами X и Y является произвольной внутренней точкой заполняемой области, которая может иметь произвольную форму. Граница этой области определяется сочетанием параметров Color и FillStyle. Параметр Color указывает цвет, который используется при определении границы закрашиваемой области, а параметр FillStyle определяет, как именно по этому цвету определяется граница. Если FillStyle = fsSurface, то заполняется область, окрашенная цветом Color, а на других цветах метод останавливается. Если FillStyle = fsBorder, то наоборот, заполняется область окрашенная любыми цветами, не равными Color, а на цвете Color метод останавливается.
FrameRect Рисует на канве текущей кистью прямоугольную рамку
Метод FrameRect рисует на канве прямоугольную рамку вокруг области Rect, используя установку текущей кисти Brush. Толщина рамки - 1 пиксель. Область внутри рамки кистью не заполняется. Отличается от метода Rectangle тем, что рамка рисуется цветом кисти (в методе Rectangle - цветом пера Pen) и область не закрашивается (в методе Rectangle закрашивается).
LineTo Рисует на канве прямую линию, начинающуюся с текущей позиции пера и кончающуюся указанной точкой
Метод LineTo рисует на канве прямую линию, начинающуюся с текущей позиции пера PenPos и кончающуюся точкой (X, Y), исключая саму точку (X, Y). Текущая позиция пера PenPos перемещается в точку (X, Y). При рисовании используются текущие установки пера Pen.
MoveTo Изменяет текущую позицию пера на заданную, ничего не рисуя
Метод MoveTo изменяет текущую позицию пера PenPos на заданную точкой (X, Y). Это эквивалентно непосредственной установке свойства PenPos. При перемещении пера методом MoveTo ничего не рисуется.
Pie Рисует сектор окружности или эллипса
Метод Pie рисует замкнутую фигуру - сектор окружности или эллипса, с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Рисуются прямые, ограничивающие сегмент и проходящие через центр эллипса и точки (X3, Y3) и (X4, Y4).
Polygon Рисует замкнутую фигуру с кусочно-линейной границей
Метод Polygon рисует на канве замкнутую фигуру (полигон, многоугольник) по множеству угловых точек, заданному массивом Points. Первая из указанных точек соединяется прямой с последней. Этим метод Polygon отличается от метода Polyline, который не замыкает конечные точки. Рисование проводится текущим пером Pen. Внутренняя область фигуры закрашивается текущей кистью Brush.
Метод позволяет рисовать фигуру по точкам, хранящимся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надо нарисовать полигон всего по нескольким точкам, то передавать их в метод Polygon удобно с помощью функции Point.
Polyline Рисует кусочно-линейную кривую
Метод Polyline рисует на канве кусочно-линейную кривую по множеству точек, заданному массивом Points. Отличие метод Polyline от метода Polygon заключается в том, что метод Polygon замыкает конечные точки, а метод Polyline - нет. Рисование проводится текущим пером Pen. Метод не изменяет текущей позиции PenPos пера Pen.
Метод позволяет рисовать кусочно-линейный график функции, хранящийся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надо нарисовать кривую всего по нескольким точкам, то передавать их в метод Polyline удобно с помощью функции Point.
То, что делает метод Polyline, можно сделать и с помощью методов MoveTo и LineTo, подведя сначала перо к первой точке а затем последовательно выполняя LineTo. Различие будет заключаться в том, что метод Polyline не изменит текущую позицию пера, а методы MoveTo
и LineTo изменят.
Rectangle Рисует прямоугольник
Метод Rectangle рисует на канве текущим пером Pen прямоугольник, верхний левый угол которого имеет координаты (X1, Y1), а нижний правый - (X2, Y2). Прямоугольник закрашивается текущей кистью Brush.Рисование прямоугольника без рамки можно осуществить методом FillRect. Прямоугольник со скругленными углами рисуется методом RoundRect. Прямоугольник без внутренней закраски рисуется методом FrameRect.
RoundRect Рисует прямоугольник со скругленными углами
Метод RoundRect рисует на канве прямоугольную рамку со скругленными углами, используя текущие установки пера Pen и заполняя площадь фигуры текущей кистью Brush. Рамка определяется прямоугольником с координатами углов (X1,Y1) и (X2,Y2). Углы скругляются с помощью эллипсов с шириной X3 и высотой Y3.
Если задать ширину эллипса X3 = X2 - X1, то верхняя и нижняя границы рамки окажутся целиком скругленными (без прямолинейной части). Если Y3 = Y2 - Y1, то же самое произойдет с левой и правой границами рамки. Если же оба измерения эллипса не меньше размеров рамки, то будет рисоваться просто эллипс. Но, конечно, для рисования эллипса лучше использовать метод Ellipse. Если один из размеров эллипса задать нулевым, то будет рисоваться прямоугольная рамка. Но, конечно, для такой рамки лучше использовать метод Rectangle.
StretchDraw Рисует графическое изображение в указанную прямоугольную область канвы, подгоняя размер изображения под заданную область
Метод StretchDraw рисует на канве изображение, содержащееся в объекте, указанном параметром Graphic, в прямоугольную область, указанную параметром Rect. При этом размер изображения подгоняется под размер заданной области. Этим метод StretchDraw отличается от метода Draw, который оставляет размер неизменным.
Объект Graphic может быть типа битовой матрицы, пиктограммы или метафайла. Если объект - битовая матрица типа TBitMap, то при переносе изображения учитывается режим копирования, установленный свойством канвы CopyMode.
TextExtent Возвращает длину и высоту в пикселях текста, который предполагается написать на канве текущим шрифтом
TextHeight Возвращает высоту в пикселях текста, который предполагается написать на канве текущим шрифтом
TextOut Пишет указанную строку текста на канве, начиная с указанной позиции
Функция TextOut пишет строку текста Text на канве, начиная с позиции с координатами (X, Y). Надпись делается в соответствии с текущими установками шрифта Font. Фон надписи определяется установками текущей кисти. Текущая позиция PenPos пера Pen перемещается к концу выведенного текста.
Для выравнивания позиции текста на канве можно использовать методы, дающие перед выводом высоту и длину текста в пикселях: методы TextExtent, TextHeight и TextWidth.
Если цвет кисти в момент вывода текста отличается от того, которым закрашена канва, то текст получится выведенным в цветной прямоугольной рамке. Но ее размеры будут точно равны размерам надписи. Если требуется более красивая рамка с отступом от текста или если надо ограничить выводимый текст размерами определенной рамки, следует применять метод TextRect.
TextRect Пишет указанную строку текста на канве, начиная с указанной позиции и усекая текст, выходящий за пределы указанной прямоугольной области
Функция TextRect пишет строку текста Text на канве, начиная с позиции с координатами (X, Y) - это левый верхний угол надписи. Часть текста, не помещающаяся в прямоугольную область Rect, усекается. Надпись делается в соответствии с текущими установками шрифта Font. Пространство внутри области Rect закрашивается текущей кистью Brush.
TextWidth Возвращает длину в пикселях текста, который предполагается написать на канве текущим шрифтом
События класса TCanvas.
Событие Описание
OnChange Событие после изменения изображения
OnChanging Событие перед изменением изображения
Класс TPainBox – окно для рисования.
Назначение компонента TPaintBox –дать вам простое окно с канвой для рисования роизвольных изображений. Канва содержится в свойстве Canvas компонента, графические инструменты в свойствах Font, Pen, Brush, а собственно рисование осуществляется в обработчике событий onPaint.