Добавлен: 15.11.2018
Просмотров: 674
Скачиваний: 11
Дисциплина «Объектно-ориентированный анализ и программирование»
1
Работа с обобщенной коллекцией List<T>
Лабораторная работа №8
Цель работы. В данной работе с помощью класса List<T> реализуются основные операции с
коллекцией или со списком, построенным из элементов различного типа, в том числе сортировка
списка по разным критериям.
Класс List<T>, который (как и класс ArrayList) в языке C# называется коллекцией, способен
хранить объекты произвольного типа (или любого класса). Класс List<T> объявлен в пространстве
имен System.Collections.Generic.
В отличие от фиксированных статических массивов, в коллекциях List<T> и ArrayList размер
увеличивается по мере необходимости, то есть классы List<T> и ArrayList поддерживают
динамические массивы, расширяющиеся и сокращающиеся по мере необходимости.
Массив на основе коллекции List<T> или ArrayList создается с первоначальным размером.
Если этот размер превышается, то массив автоматически расширяется. При удалении
объектов из такого массива он автоматически сокращается.
В ходе выполнения работы необходимо подготовить и оформить отчет, содержащий
последовательность разработки приложения и его программного кода, комментарии операторов,
результаты выполнения, необходимые пояснения, краткий вывод о результатах работы.
Общая последовательность выполнения включает определенные этапы. При завершении
очередного шага рекомендуется сохранить проект, выполнить компиляцию и отладку.
1. Структура проекта приложения и компоненты главной формы
Структура проекта приложения должна включать два модуля:
первый модуль главной формы для создания интерфейса приложения (предусмотреть ввод
наименования книги, автора и года издания, кнопки и другие компоненты);
второй модуль классов (без формы), содержащий определения классов для реализации
задания.
На главной форме приложения используются следующие компоненты:
ListBox для вывода списка строк;
TextBox для ввода наименования дисциплины;
MaskedTextBox для ввода года издания;
GroupBox, RadioButton для типа сортировки;
Buttun для реализации операций;
StatusStrip для вывода номера работы и варианта, фамилии и группы в элементах
ToolStripStatusLabel
1 и ToolStripStatusLabel2 соответственно.
Для примера используется список:
1.
C#. Программирование на языке высокого уровня, Павловская Т.А., 2009.
2.
Visual C# 2010. Полный курс, Уотсон К. 2011.
3.
Библия C#, Фленов М.Е., 2016.
4.
Изучаем C#. Стиллмен Э., Грин Д., 2014.
5.
Программирование на языке C#, Фаронов В.В., 2007.
6.
Язык программирования C#. Хейлсберг А., Торгерсен М., 2012.
Примерный внешний вид приложения показан на рисунке 1.
Дисциплина «Объектно-ориентированный анализ и программирование»
2
Рисунок 1 – Главная форма приложения
2
. Объявление нового класса TBook, отписывающего одну книгу
Во втором модуле с классами создается новый класс TBook, содержащий параметры одной книги.
Далее класс TBook будет использоваться в динамическом массиве, предназначенном для
хранения списка книг.
Дисциплина «Объектно-ориентированный анализ и программирование»
3
3
. Объявление базового класса для коллекции книг
В модуле с классами определяется новый класс, например, BaseBooks, в котором создается
динамический массив книг (коллекция книг) с помощью коллекции List<T> и класса TBook.
Конструктор класса BaseBooks используется для заполнения коллекции книг.
В классе BaseBooks также описывается метод GetListBooks для получения списка строк из
коллекции для последующего вывода.
В класс BaseBooks также необходимо добавить метод очистки коллекции Books.
4.
Обработчик события для кнопки «Заполнить»
В первом модуле главной формы для создания обработчика кнопки «Заполнить» реализуется
следующее:
Объявление экземпляра (объекта), например, ListBooks класса BaseBooks.
Инициализация объекта с помощью конструктора BaseBooks().
Очистка listBox1.
Вывод списка книг в listBox1 с помощью методов AddRange() и GetListBooks().
Дисциплина «Объектно-ориентированный анализ и программирование»
4
5.
Обработчик кнопки «Очистить»
Требуется очистить listBox1 и коллекцию книг с помощью метода очистки коллекции Books класса
BaseBooks.
Далее следует сохранить проект приложения, выполнить компиляцию, отладить код и проверить
работу созданных обработчиков.
6
. Объявление производного класса с новыми методами
Но основе BaseBooks необходимо определить новый производный класс, в котором определяются
новые методы: удаление, добавление, сортировка по критериям:
метод удаления по индексу (номеру) записи в коллекции книг
метод добавления книги без поиска и проверки повторного ввода
метод для сортировки по критерию и формирования обновленного списка строк
В дальнейшем реализацию всех операций задания следует выполнять с помощью созданного
дочернего (производного) класса и его экземпляра.
7.
Удаление книги из списка. Обработчик кнопки «Удалить»
Первая версия данного обработчика может содержать следующий код:
Здесь ListBooks является экземпляром дочернего класса.
Дисциплина «Объектно-ориентированный анализ и программирование»
5
Если строка не выбрана, выдается сообщение об ошибке (рисунок 2).
Рисунок 2 – Сообщение об ошибке удаления
8.
Добавление книги. Обработчик кнопки «Добавить»
Первая версия данного обработчика (без проверки повторного ввода) может содержать следующий
код:
Если хотя-бы одно из полей ввода не содержит вводимых данных, выдается соответсвующее
сообщение об ошибке (рисунок 3).
Рисунок 3 – Сообщение об ошибке ввода