Лабораторные по ИСП, 2 семестр изучения
.docxСписок лабораторных работ (ИСП, 2 семестр изучения)
№ п/п |
Тема работы |
К-во занятий |
Баллы |
1 |
Строки, числа, отношения объектов |
2 |
6 |
2 |
Коллекции и LINQ to Objects |
2 |
8 |
3 |
Файлы и потоки данных |
1 |
6 |
4 |
Использование XML и сериализация |
2 |
8 |
5 |
Сборки, метаданные, атрибуты |
1 |
6 |
6 |
Многопоточное программирование |
2 |
8 |
7 |
Шаблоны проектирования |
2 |
8 |
Работа №1. Строки, числа, отношения объектов
Цели работы.
1. Изучить стандартные классы платформы .NET для работы с числами и строками.
2. Изучить стандартные интерфейсы для сравнения объектов на равенство и порядкового сравнения.
Постановка задачи.
Разработать и протестировать класс, указанный в варианте задания. При разработке класса учесть следующие обязательные требования:
1. Реализовать несколько методов для представления объекта класса в виде строки.
2. Реализовать метод для получения объекта класса по строковому представлению (парсинг).
3. Реализовать в классе стандартные интерфейсы для проверки двух объектов на равенство и порядкового сравнения.
4. Снабдить класс и его элементы документирующими комментариями.
Варианты заданий.
1. Класс для представления рационального числа, т. е. числа вида n/m, где n – целое, m – натуральное число. Дополнительно реализовать в этом классе перекрытие математических операций.
2. Класс для представления цены товара, заданной в одной из валют. Предполагается, что есть фиксированная таблица конвертации валют. Дополнительно реализовать в этом классе перекрытие аддитивных операций.
Работа №2. Коллекции и LINQ to Objects
Цели работы.
1. Изучить стандартные классы для работы с коллекциями объектов.
2. Создать собственный класс-коллекцию.
3. Изучить работу с финализаторами и IDisposable.
4. Изучить технологию LINQ to Objects.
Постановка задачи.
1. Создать классы для представления указанных коллекций.
2. Снабдить созданные классы финализаторами и реализовать интерфейс IDisposable.
3. Реализовать стандартные операции для коллекции (добавление, удаление, поиск элемента).
4. Обеспечить реализацию интерфейса IEnumerable<T> для коллекций.
5. Продемонстрировать возможности LINQ to Objects для фильтрации коллекции, проекции коллекции, группировки элементов коллекции, преобразования коллекции, вычисления агрегатных функций.
Варианты заданий.
1. Факультет объединяет студенческие группы, а группа – студентов.
2. Поезд – это набор вагонов, состоящих из купе.
3. Покупка в магазине – это коллекция товаров. Товары в покупке могут быть в нескольких экземплярах.
4. Тест содержит коллекцию вопросов, а вопрос – варианты ответов.
5. Компьютерная сеть содержит компьютеры, связанные с некими другими компьютерами в сети.
6. Матрица – это коллекция строк (числовых векторов).
Работа №3. Файлы и потоки данных
Цель работы.
Изучить возможности .NET Framework по работе с файлами и потоками данных.
Постановка задачи.
В работе используется класс-коллекция (см. работу 2). Необходимо:
1. Реализовать методы, позволяющие сохранять и читать данные объектов класса-коллекции из текстового и двоичного файла.
2. Применить при чтении/записи потоки, поддерживающие сжатие информации (по желанию – дополнительно шифровать информацию).
3. Продемонстрировать работу с классами для объектов файловой системы (копирование и переименование файлов, отслеживание изменения состояния файла).
Работа №4. Использование XML и сериализация
Цели работы.
1. Изучить классы .NET Framework для обработки XML-документов.
2. Изучить технологию LINQ to XML.
3. Изучить механизмы сериализации платформы .NET Framework.
Постановка задачи.
1. Показать возможность чтения, обработки (поиск, изменение) и записи информации класса-коллекции (см. работу 2) в XML-файл. Использовать различные подходы при работе с XML – LINQ to XML, последовательная обработка XML-файла, DOM.
2. Сериализовать и десериализовать несколько объектов пользовательской коллекции, используя различные форматы сериализации:
а. Двоичный формат (по желанию – собственная реализация ISerializable).
б. XML-сериализация.
в. Контракты данных.
Работа №5. Сборки, метаданные, атрибуты
Цель работы.
Освоить механизмы взаимодействия сборок, конфигурирование сборок, работу с метаданными и пользовательскими атрибутами.
Постановка задачи.
Необходимо создать приложение, поддерживающее систему плагинов. Основное приложение ищет плагины в папке, имя которой указано в конфигурационном файле. Основное приложение может в любой момент вывести список плагинов. Каждый плагин – это отдельная сборка, содержащая класс, реализующий оговорённый интерфейс. Имя плагина задаётся в виде пользовательского атрибута класса. Основное приложение может загрузить указанный плагин и выполнить его методы.
Работа №6. Многопоточное программирование
Цель работы:
Изучить возможности .NET Framework для многопоточного программирования.
Постановка задачи.
1. Создать класс для представления музыкальной композиции со следующими атрибутами:
ID (уникальный)
Название (строка длиной до 256 символов)
Длина (минуты, секунды)
Исполнитель (строка длиной до 256 символов)
Жанр (значение из перечисления допустимых жанров)
Рейтинг (целое число от 0 до 10).
2. Создать класс для представления плей-листа, представляющего коллекцию неповторяющихся композиций и обладающего следующими элементами:
ID (уникальный)
Название (строка длиной до 256 символов)
Общая длина (минуты, секунды)
Рейтинг (высчитывается как среднее рейтинга композиций)
3. Обеспечить хранение плей-листа в файле (в произвольном формате)
4. Создать «плеер» для загрузки и «проигрывания» плей-листов. Проигрывание должно происходить в отдельном потоке, при этом допускается одновременное проигрывание нескольких плей-листов. Проигрыванием можно управлять с консоли (пауза/стоп). При «проигрывании» композиции выводятся текстовые метки или звуковые сигналы для каждых 5 секунд проигрывания.
Работа №7. Шаблоны проектирования
Цель работы:
Изучить избранные шаблоны проектирования.
Постановка задачи.
1. Создать класс Phone для представления информации о мобильном телефоне. Каждый объект этого класса должен содержать уникальный ключ. Класс, генерирующий ключи, реализовать, используя Singleton.
2. Реализовать классы с операциями чтения и записи коллекций объектов Phone в файлы текстового, бинарного и XML-формате.
3. Организовать работу с классами для хранения объектов, используя интерфейсы и порождающие шаблоны Factory Method и Abstract Factory.