Список лабораторных работ (ИСП, 2 семестр изучения)
№ п/п | Тема работы | К-во занятий | Баллы |
Строки, числа, отношения объектов | |||
Коллекции и LINQtoObjects | |||
Файлы и потоки данных | |||
Использование XMLи сериализация | |||
Сборки, метаданные, атрибуты | |||
Многопоточное программирование | |||
Шаблоны проектирования |
Работа №1. Строки, числа, отношения объектов
Цели работы.
1. Изучить стандартные классы платформы.NETдля работы с числами и строками.
2. Изучить стандартные интерфейсы для сравнения объектов на равенство и порядкового сравнения.
Постановка задачи.
Разработать и протестировать класс, указанный в варианте задания. При разработке класса учесть следующие обязательные требования:
1. Реализовать несколько методов для представления объекта класса в виде строки.
2. Реализовать метод для получения объекта класса по строковому представлению (парсинг).
3. Реализовать в классе стандартные интерфейсы для проверки двух объектов на равенство и порядкового сравнения.
4. Снабдить класс и его элементы документирующими комментариями.
Варианты заданий.
1. Класс для представления рационального числа, т.е. числа вида n/m, где n – целое, m – натуральное число. Дополнительно реализовать в этом классе перекрытие математических операций.
2. Класс для представления цены товара, заданной в одной из валют. Предполагается, что есть фиксированная таблица конвертации валют. Дополнительно реализовать в этом классе перекрытие аддитивных операций.
Работа№2. Коллекции и LINQtoObjects
Цели работы.
1.Изучить стандартные классы для работы с коллекциями объектов.
2.Создать собственный класс-коллекцию.
3. Изучить работу с финализаторами и IDisposable.
4.Изучить технологию LINQ toObjects.
Постановка задачи.
1. Создать классы для представления указанных коллекций.
2. Снабдить созданные классы финализаторами и реализовать интерфейс IDisposable.
3. Реализовать стандартные операции для коллекции (добавление, удаление, поиск элемента).
4. Обеспечить реализацию интерфейса IEnumerable<T> для коллекций.
5. Продемонстрировать возможности LINQ toObjects для фильтрации коллекции, проекции коллекции, группировки элементов коллекции, преобразования коллекции, вычисления агрегатных функций.
Варианты заданий.
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. Сборки, метаданные, атрибуты
Цель работы.
Освоить механизмы взаимодействия сборок, конфигурирование сборок, работу с метаданными и пользовательскими атрибутами.
Постановка задачи.
Необходимо создать приложение, поддерживающее систему плагинов. Основное приложение ищет плагины в папке, имя которой указано в конфигурационном файле. Основное приложение может в любой момент вывести список плагинов. Каждый плагин – это отдельная сборка, содержащая класс, реализующий оговорённый интерфейс. Имя плагина задаётся в виде пользовательского атрибута класса. Основное приложение может загрузить указанный плагин и выполнить его методы.