Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_2_Tekhnologia_programmirovania.docx
Скачиваний:
42
Добавлен:
20.03.2016
Размер:
131.42 Кб
Скачать

3. Пример выполнения работы

Задание: Дан список, содержащий точки с координатами (х, у). Создать новый список, в который попадут точки, лежащие левее оси ординат. Соответственно, в старом списке останутся точки, которые расположены справа от оси ординат. Предусмотреть возможность сортировки нового списка по возрастанию координаты х.

3.1. Визуальное проектирование диалогового окна

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

Кнопка AddButton

Кнопка SolveButton

Кнопка DelButton

Кнопка SortButton

Кнопка CloseButton

Счетчик XnumericUpDown

Счетчик YnumericUpDown

Таблица dataGridView1

Таблица dataGridView2

Рисунок 2.2. Пример работающего приложения

Для счетчиков XnumericUpDown и YnumericUpDown устанавливаются следующие дополнительные свойства:

Свойство

Значение

Описание

Minimum

-100

Минимальное значение компонента

Maximum

100

Максимальное значение компонента

Increment

0,1

Шаг увеличения или уменьшения

DecimalPlaces

1

Количество знаков после запятой при отображении

Для таблиц данных dataGridView1 и dataGridView2 устанавливаются следующие дополнительные свойства:

Свойство

Значение

Описание

ColumnHeadersHeight-SizeMode

AutoSize

Регулирует высоту заголовков столбцов

EditMode

EditProgrammatically

Режим редактирования данных (здесь – только программно)

Columns

редактируется

Столбцы таблицы

Для добавления столбцов в таблицу следует нажать кнопку свойстваColumns. Откроется диалоговое окно, где нужно добавлять и устанавливать свойства столбцов таблицы (рис. 2.3).

Рисунок 2.3. Окно редактирования столбцов таблицы

В нашем случае добавляются 2 столбца с именами х и y (свойства Name и HeaderText) и для них отменяется режим автоматической сортировки строк (свойство SortMode устанавливается равным NotSortable).

3.2. Проектирование программного кода

3.2.1. Разработка класса точки

Проектирование кода начинается с разработки класса, представляющего собой структуру точки. Чтобы добавить класс, нужно выбрать пункт меню Project->Add Class…, в появившемся диалоговом окне снова выбрать «Class» и указать имя создаваемого файла (и класса). В нашем случае класс называется «Point».

Так как в задании необходимо реализовать сортировку списка точек по одной из координат, программе (а именно методу Sort) необходимо явно указать, по какому именно признаку (по какой координате) следует производить сравнение точек при сортировке. Для этого нужно, чтобы класс реализовывал интерфейс IComparable.

Созданный класс будет содержать следующие компоненты:

  • два закрытых поля типа float, задающих координаты точки;

  • конструктор с двумя параметрами, инициализирующий эти поля;

  • два открытых свойства для доступа к полям (чтения и установки им значений);

  • реализацию открытого метода CompareTo, описанного в интерфейсе IComparable и задающего способ сравнения объектов класса. Этот метод возвращает целочисленное значение: положительное, если вызывающий объект больше объекта параметра, отрицательное, если меньше, и ноль, если объекты равны. Именно в этом методе мы указываем, что сравнение точек должно производиться по координате х.

Ниже приведен листинг описания класса Point:

//класс реализует интерфейс IComparable

class Point : IComparable

{

float X; //координаты точки

float Y;

//конструктор класса

public Point(float X, float Y)

{

this.X = X;

this.Y = Y;

}

//свойство для доступа к координате х

public float x

{

get { return X; } //получить х

set { X = value; } //установить х

}

//свойство для доступа к координате y

public float y

{

get { return Y; } //получить y

set { Y = value; } //установить y

}

//установить способ сравнения объектов-точек

public int CompareTo(object obj)

{

//преобразуем параметр obj к типу точки

Point p = (Point)obj;

if (x > p.x) //сравниваем координаты х

return 1; //и возвращаем либо положительное,

if (x == p.x)

return 0; //либо нулевое,

return -1; //либо отрицательное значение

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]