ВУЗ: Не указан

Категория: Методичка

Дисциплина: Программирование

Добавлен: 15.11.2018

Просмотров: 590

Скачиваний: 11

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Дисциплина «Объектно-ориентированный анализ и программирование» 

 

Работа с обобщенной коллекцией 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 для ввода года издания; 
  GroupBoxRadioButton для типа сортировки; 
  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. 


background image

Дисциплина «Объектно-ориентированный анализ и программирование» 

 

 

Рисунок 1 – Главная форма приложения 

2

. Объявление нового класса TBook, отписывающего одну книгу 

Во втором модуле с классами создается новый класс TBook, содержащий параметры одной книги. 
Далее  класс  TBook  будет  использоваться  в  динамическом  массиве,  предназначенном  для 
хранения списка книг. 

 


background image

Дисциплина «Объектно-ориентированный анализ и программирование» 

 

3

. Объявление базового класса для коллекции книг 

В  модуле  с  классами  определяется  новый  класс,  например,  BaseBooks,  в  котором  создается 
динамический массив книг (коллекция книг) с помощью коллекции List<T> и класса TBook.  

  Конструктор класса BaseBooks используется для заполнения коллекции книг. 
  В классе BaseBooks также описывается метод GetListBooks для получения списка строк из 

коллекции для последующего вывода. 

 

  В класс BaseBooks также необходимо добавить метод очистки коллекции Books. 

4. 

Обработчик события для кнопки «Заполнить» 

В  первом  модуле  главной  формы  для  создания  обработчика  кнопки  «Заполнить»  реализуется 
следующее: 

  Объявление экземпляра (объекта), например, ListBooks класса BaseBooks
  Инициализация объекта с помощью конструктора BaseBooks(). 
  Очистка listBox1
  Вывод списка книг в listBox1 с помощью методов AddRange() и GetListBooks(). 


background image

Дисциплина «Объектно-ориентированный анализ и программирование» 

 

5. 

Обработчик кнопки «Очистить» 

Требуется очистить listBox1 и коллекцию книг с помощью метода очистки коллекции Books класса 
BaseBooks

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

6

. Объявление производного класса с новыми методами

 

Но основе BaseBooks необходимо определить новый производный класс, в котором определяются 
новые методы: удаление, добавление, сортировка по критериям: 

  метод удаления по индексу (номеру) записи в коллекции книг 

 

  метод добавления книги без поиска и проверки повторного ввода  

 

  метод для сортировки по критерию и формирования обновленного списка строк  

 

В  дальнейшем  реализацию  всех  операций  задания  следует  выполнять  с  помощью  созданного 
дочернего (производного) класса и его экземпляра. 

7. 

Удаление книги из списка. Обработчик кнопки «Удалить» 

Первая версия данного обработчика может содержать следующий код: 

 

Здесь ListBooks является экземпляром дочернего класса. 


background image

Дисциплина «Объектно-ориентированный анализ и программирование» 

 

Если строка не выбрана, выдается сообщение об ошибке (рисунок 2). 

 

Рисунок 2 – Сообщение об ошибке удаления 

8. 

Добавление книги. Обработчик кнопки «Добавить» 

Первая версия данного обработчика (без проверки повторного ввода) может содержать следующий 
код: 

 

 

Если  хотя-бы  одно  из  полей  ввода  не  содержит  вводимых  данных,  выдается  соответсвующее 
сообщение об ошибке (рисунок 3). 

 

Рисунок 3 – Сообщение об ошибке ввода