Смекни!
smekni.com

Проектирование и разработка классов средствами языка программирования С++Builder6/0 (стр. 3 из 4)

Данные поля имеют модификатор доступа private, следовательно, являются скрытыми.

Конструкторы и методы:

Конструктор wind (). Осуществляет инициализацию полей данного класса нулями.

Конструктор wind (int dd1, int V1). Инициализирует поля класса двумя параметрами соответственно.

Метод ShowWind. Является функцией типа String, возвращающей строку, содержащую значения полей dd и V соответственно, имеющую вид: dd град. - V км/ч" (значения полей dd и V предварительно переводятся в тип String).

Метод ShowDirect. Является функцией типа int, возвращающей значение поля dd (направление).

Метод ShowSpeed (). Является функцией типа int, возвращающей значение поля V (скорость).

Метод Components. Является функцией типа void. Осуществляет вычисление составляющих скорости u и v. Содержит параметры: w (тип wind) - переменная, по значениям полей которой будет осуществляться вычисление характеристик, v (ссылка на тип float) - возвращает значение составляющей v, u (ссылка на тип float) - возвращает значение составляющей u. Вышеперечисленные функции имеют модификатор доступа public, т.е. являются общедоступными.

2.3 Описание использованных компонентов библиотеки VCL

Компонент StringGrid.

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

Компонент StringGrid предназначен в первую очередь для отображения таблиц текстовой информации.

Основные свойства:

System:: AnsiStringCells [intACol] [intARow] - строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow.

Classes:: TString*Cols [intIndex] - список строк и связанных с ними объектов, содержащихся в столбце с индексом Index.

Classes:: TStrings*Rows [intIndex] - список строк и связанных с ними объектов, содержащихся в строке с индексом Index.

System:: TObject*Objects [intACol] [intARow] - объект, связанный со строкой, содержащейся в ячейке с индексами столбца и строки ACol и ARow.

ColCount - количество колонок таблицы.

RowCount - количество строк таблицы.

FixedCols - количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте.

FixedRows - количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте.

Options. goEditing - признак допустимости редактирования содержимого ячеек таблицы. True - редактирование разрешено, False - запрещено.

Options. goTab - оазрешает (True) или запрещает (False) использование клавиши <Таb> для перемещения курсора в следующую ячейку таблицы.

Options. GoAlways-ShowEditor - признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью.

DefaultColWidth - ширину колонок таблицы.

DefaultRowHeight - высоту строк таблицы.

GridLineWidth - ширину линий, ограничивающих ячейки таблицы.

Left - расстояние от левой границы поля таблицы до левой границы форм.

Top - расстояние от верхней границы поля таблицы до верхней границы формы.

Height - высоту поля таблицы.

Width - ширину поля таблицы.

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

ParentFont - признак наследования характеристик шрифта формы.

Все вышеперечисленные свойства доступны во время выполнения. Задавать тексты можно программно или по отдельным ячейкам, или сразу по столбцам и строкам с помощью методов класса TString.

Компонент Edit производит отображение, ввод и редактирование однострочных текстов. Вводимый и выводимый текст содержится в свойстве Text типа AnsiString. Это свойство можно устанавливать в процессе проектирования или задавать программно.

Компонент Label Отображение текста, не изменяемого пользователем. Никакого оформления, кроме цвета текста. Это свойство можно устанавливать в процессе проектирования или задавать программно. Основное свойство - Caption.

2.4 Проектирование пользовательского интерфейса. Объектная декомпозиция

Для создания Windows-приложения в среде C++ Builder 6.0 необходимо зайти в меню File, выбрать сроку New, в появившимся списке выбрать графу Application. После совершения данных действий перед пользователем появляется Windows-форма, на которую будут помещаться прочие компоненты.

В верхней части экрана можно увидеть панель, на которой расположены компоненты библиотеки VCL. Щелкнем по странице Standart, выберем там компонент GroupBox. Данный компонент является частью дизайна Windows-формы. В нижнем левом углу экрана можно увидеть инспектор объектов. Инспектор объектов обеспечивает простой и удобный интерфейс для изменения свойств объектов C++ Builder и управления событиями, на которые реагирует объект. Окно инспектора объектов имеет две страницы. Выше их имеется выпадающий список всех компонентов, размещенных на форме. В нем можно выбрать тот компонент, свойства и события которого вас интересуют. Страница свойств (Properties) инспектора объектов показывает свойства того объекта, который в данный момент выделен вами. Выделим объект GroupBox1, в появившимся перечне свойств данного объекта выберем свойство Caption (надпись в верхнем правом углу объекта), присвоим ему необходимое значение.

Далее поместим на форму объект Button (кнопка), в свойстве Caption напишем "Заполнить таблицу".

Выберем объект StringGrid. В его свойстве ColCount (количество столбцов) укажем значение 2, в свойстве RowCount (количество строк) укажем 10, а свойству FixedRows (фиксированные строки) присвоим значение 2. Далее поместим на форму по три объекта Edit и Label.

На рисунке 2 показана схема формы Form1.

Рисунок 2 - схема формы Form1

Страница событий (Events) составляет вторую часть инспектора объектов. На ней указаны все события, на которые может реагировать выбранный объект. Если необходимо выполнить какие-то действия в момент создания формы, требуется выделить событие OnCreate. Рядом с именем этого события откроется окно с выпадающим списком. Если вы уже написали в своем приложении какие-то обработчики событий и хотите при при данном событии использовать один из них, вы можете выбрать необходимый обработчик из выпадающего списка. Если же вам надо написать новый обработчик, то сделайте двойной щелчок на пустом окне списка. Вы попадете в окно редактора кода, в котором увидите текст:

void __fastcall TForm1:: FormCreate (TObject *Sender)

{ }

Курсор будет расположен в пустой строке между строками с открывающейся и закрывающимися фигурными скобками. Увиденный вами код - это заготовка обработчика события, которую автоматически сделал C++ Builder. Вам остается только в промежутке между скобками “{“ и “}” написать необходимые операторы.

Рассмотрим обработчики событий, представленные в программе:

FormCreate. Событие OnCreate означает, что указанные действия будут совершаться при создании формы Form1. Совершаемые при этом действия: при помощи знака косвенной адресации обратщаемся к свойству Cells ячеек первого и второго столбцов первой строки объекта stringGrid1 (заголовки столбцов) и присваиваем им значения "Направление в град." и "Скорость", свойству RowCount присваиваем значение константы n=10, при помощи двух циклов for обращаемся к каждой ячейке и удаляем из нее информацию.

Button1Click. Событие OnClick подразумевает щелчок мышью по данному объекту. Совершаемые при этом действия: в теле цикла for совершаем заполнение массива array элементами типа wind (полям i-того элемента присваиваем при помощи конструктора случайные значения), записываем значения полей данного элемента в ячейки таблицы StringGrid1 (направление в 0-ой столбец при помощи метода ShowDirect, скорость в 1-ый при помощи метода ShowSpeed).

StringGrid1SelectCell. Событие OnSelectCell подразумевает щелчок мышью по ячейке с номером столбца - ACol, строки - ARow. Совершаемые при этом действия: строке Edit1. Text присваиваем значение элемента под номером ARow-1 при помощи метода ShowWind (возвращает значение переменной типа wind в виде строки типа String), вычисляем при помощи метода Components значения составляющих скорости, выводим их значения (переведенные в тип String при помощи функции FloatToString) на экран с помощью объектов Edit2 и Edit3.

Вышеуказанная схема показывает алгоритм взаимодействия визуальных компонентов формы при условии совершения пользователем определенных действий. При щелчке мышью по кнопке "Заполнить массив" происходит ввод значений элементов массива array в ячейки таблицы StringGrit1. При выделении какой-либо ячейки данной таблицы производится вывод значения соответствующего элемента массива на экран при помощи объекта Edit1 и значений составляющих скорости при помощи объектов Edit2 и Edit3.

3. Описание ПО

3.1 Руководство пользователя

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

Выходные данные - массив array, значения составляющих v и u.

Системные требования: Pentium 300, 128 Мб RAM.

Запустите файл ProjectOOP. exe. Перед пользователем появится окно программы (см. рисунок 1 приложения 2), состоящее из таблицы, кнопки "Заполнить таблицу" и трех строк - "Характеристики ветра", "Составляющая скорости v", "Составляющая скорости u". Чтобы заполнить таблицу случайными значениями нажмите кнопку "Заполнить таблицу". Таблица выведет на экран значение угла, характеризующего направление ветра (первый столбец таблицы) и скорость ветра (второй столбец) - значения элементов массива переменных типа wind (см. рисунок 2 приложения 2). При выделении какой-либо ячейки таблицы в строке "Характеристики ветра" будет выведено значение характеристик ветра в виде dd-V, строки "Составляющая скорости v" и "Составляющая скорости u" выведут соответствующие значения составляющих скорости для данного элемента массива (см. рисунок 3 приложения 2).