Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные по ИСП, 2 семестр изучения

.docx
Скачиваний:
13
Добавлен:
11.05.2015
Размер:
28.58 Кб
Скачать

Список лабораторных работ (ИСП, 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.