3 Порядок выполнения работы
Данная лабораторная работа предполагает выполнение следующих этапов:
1. Изучить методические указания к лабораторной работе
2. Пройти собеседование с преподавателем и получить задание для выполнения работы
3. Изменить проект, выполненный согласно заданию к лабораторной работе 1 так, чтобы класс, соответствующий объекту содержал атрибуты, соответствующие его параметрам положения и свойства, преобразующие его параметры положения в координаты отображаемых объектов, внести изменения в конструктор, чтобы координаты передавались экземпляру при его создании.
4. Изменить обработчик вспомогательной кнопки, чтобы при нажатии кнопки менялось положение объекта
5. Связать с событием меток, отображающим объект метод, меняющий координаты объекта ( увеличивающий на 0.01 от максимального значения)
6. Оформить и защитить отчет по лабораторной работе
4 Варианты задания
Заданием на лабораторную работу является создание модели объекта системы при заданных размерах исходного объекта и ее отображаемого образа на форме с использованием свойств классов. Кроме того, объект должен менять свое положение при выполнении какого либо события.
Исходными данными для выполнения работы является размеры предметной области и точка отсчета координат.
Таблица 4.1
Варианты задания
Вариант |
Max X |
Max Y |
Точка отсчета |
1 |
100м |
100м |
Центр области |
2 |
1000м |
1000м |
Левый нижний угол |
3 |
700м |
700м |
Лев нижний угол |
4 |
500м |
500м |
Левый нижний угол |
5 |
3000м |
3000м |
Левый нижний угол |
6 |
1мм |
1мм |
Центр области |
7 |
0.1мм |
0.1мм |
Левый нижний угол |
8 |
0.01мм |
0.01мм |
Левый нижний угол |
5 Содержание и форма отчета
Отчетом по данной работе валяется проект приложения выполненный в программной среде.
При разработке приложения должны бать выполнены следующие требования:
1) имя проекта и модуля должно отображать содержание задания;
2) проект должен быть сохранен в рабочей директории студента;
3) программный модуль должен содержать подробные комментарии в частности, должны быть отмечены элементы класса, соответствующие основным элементам объекта (атрибутам, действиям, событиям);
4) должны быть прокомментированы действия, выполняемые в конструкторе;
5) должны быть прокомментированы все методы и и процессы в них отображаемые.
6 Пример выполнения работы
Для выполнения работы был использован класс MyLabel, созданный в лабораторной работе № 1, который дополнили двумя свойствами:
CorX – положение объекта относительно левого края формы;
CorY –положение объекта относительно верхнего края формы.
Поскольку величина, на которую нужно изменить положение объекта задается в реальной системе, причем maxX = maxY = 300, то нужно учесть масштаб. Для этого вводится специальный масштабный коэффициент koef.
Листинг свойств:
public double CorX
{
set
{
// коэф. если объект будет перемещаться вправо
double koefP = (double)(label_Telo.Parent.ClientRectangle.Width/2-label_Telo.Width-label_Golova.Width) / 300.0;
// коэф. если объект будет перемещаться влево
double koefM = (double)(label_Telo.Parent.ClientRectangle.Width / 2) / 300.0;
X = value;
// в зависимости куда перемещается объект выбираем соответствующий коэф.
if (X > 0)
label_Telo.Left = bx + (int)(X * koefP);
else
label_Telo.Left = bx + (int)(X * koefM);
// перемещаем объект
label_Golova.Left = label_Telo.Left + label_Telo.Width;
label_noga1.Left = label_Telo.Left + 5;
label_noga2.Left = label_Telo.Left - label_noga2.Width + label_Telo.Width - 5;
}
get
{
return X;
}
}
public double CorY
{
set
{
// коэф. если объект будет перемещаться вверх
double koefP = (double)(label_Telo.Parent.ClientRectangle.Height/2-(label_Golova.Height-label_Telo.Height)) / 300.0;
// коэф. если объект будет перемещаться вниз
double koefM = (double)(label_Telo.Parent.ClientRectangle.Height / 2 - label_Telo.Height - label_noga1.Height) / 300.0;
Y = value;
// в зависимости куда перемещается объект выбираем соответствующий коэф.
if (Y > 0)
label_Telo.Top = by - (int)(Y * koefP);
else
label_Telo.Top = by - (int)(Y * koefM);
// перемещаем объект
label_Golova.Top = label_Telo.Top + label_Telo.Height - label_Golova.Height;
label_noga1.Top = label_Telo.Top + label_Telo.Height;
label_noga2.Top = label_Telo.Top + label_Telo.Height;
}
get
{
return Y;
}
}
Для изменения положения объекта на форме, на форму были добавлены два текстовых поля: textbox1 и textbox2. В них указываются координаты объекта в реальной системе координат. Кроме того, на форму была добавлена кнопка «Изменить», при нажатии которой происходит перемещение объекта на форме в заданную координату.
Листинг события – нажатие на кнопку «Изменить»:
private void btnChange_Click(object sender, EventArgs e)
{
try
{
double dx = double.Parse(textBoxX.Text);
double dy = double.Parse(textBoxY.Text);
if (dx >= -300 & dx <= 300)
if (dy >= -300 & dy <= 300)
{
T.CorX = dx;
T.CorY = dy;
}
}
catch (Exception)
{ ; }
}