- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •Указания по технике безопасности при выполнении лабораторных работ
- •2 Курс Лабораторная работа № 1 Реализация строкового калькулятора
- •Теоретическая справка
- •Лабораторная работа № 2
- •Теоретическая справка
- •Лабораторная работа № 3 Анализ строки
- •Лабораторная работа № 4 Преобразование форматов представления данных
- •Теоретическая справка
- •Лабораторная работа № 5
- •Теоретическая справка
- •Лабораторная работа № 6 Наследование и полиморфизм
- •Теоретическая справка
- •Лабораторная работа № 7 Статические данные и функции классов
- •Теоретическая справка
- •Лабораторная работа № 8 Перегрузка операций
- •Теоретическая справка
- •3 Курс Лабораторная работа № 1 Реализация программы с использованием контейнерного класса stack stl
- •Теоретическая справка
- •Лабораторная работа № 2 Ассоциативные контейнеры stl
- •Теоретическая справка
- •Лабораторная работа № 3 Наследование и полиморфизм в языке c#
- •Лабораторная работа № 4 Коллекции в языке c#
- •Теоретическая справка
- •Лабораторная работа № 5 Перегрузка операций в языке c#
- •Теоретическая справка
- •Лабораторная работа № 6 Интерфейсы и их реализация в c#
- •Теоретическая справка
- •Лабораторная работа № 7 Делегаты и события в языке c#
- •Теоретическая справка
- •Лабораторная работа № 8 Использование шаблонов в языке c# 2.0
- •Теоретическая справка
- •Библиографический список
- •Содержание
- •2 Курс 2
- •3 Курс 15
- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •394026 Воронеж, Московский просп., 14
Лабораторная работа № 5 Перегрузка операций в языке c#
Цель работы: научиться использовать механизм перегрузки операций языка C#.
Задание: Создать класс работы с комплексными числами. В созданном классе объявить операции сложения, вычитания, умножения для комплексных чисел. Реализовать программу, демонстрирующую работу с объектами класса.
Инструкции к выполнению:
- Предусмотреть возможность изменения значения числа с помощью свойств класса.
Теоретическая справка
Перегрузка операций в C# является способом объявления семантики новых операций, которые обозначаются принятыми в C# символами операций.
Перегрузка операций строится на основе общедоступных ( public ) статических (вызываемых от имени класса) функций-членов с использованием ключевого слова operator.
Не все операции множества могут быть переопределены (перегружены) подобным образом. Некоторые операции могут перегружаться с ограничениями.
При этом при перегрузке операций для любого нового типа выполняются следующие правила:
префиксные операции ++ и –– перегружаются парами;
операции сравнения перегружаются парами: если перегружается операция ==, также должна перегружаться операция !=. То же самое относится к парам < и >, <= и >=.
Лабораторная работа № 6 Интерфейсы и их реализация в c#
Цель работы: освоить разработку и реализацию интерфейсов языка C#.
Задание: Доработать класс комплексных чисел таким образом, чтобы он реализовывал интерфейс, необходимый для сортировки массивов объектов данного типа стандартными методами сортировки. Сортировка должна происходить по возрастанию модулей комплексных чисел.
Инструкции к выполнению:
Предусмотреть реализацию классом стандартного интерфейса IComparable.
Протестировать сортировку с помощью заполнения комплексными числами массива и использования стандартного метода Sort.
Теоретическая справка
Интерфейсы - это те же самые абстрактные классы, не содержащие объявлений данных-членов и объявлений обычных функций.
Все без исключения функции — члены интерфейса – абстрактные. Поэтому интерфейс объявляется с особым ключевым словом interface, а функции интерфейса, несмотря на свою "абстрактность", объявляются без ключевого слова abstract.
Основное отличие интерфейса от абстрактного класса заключается в том, что производный класс может наследовать одновременно несколько интерфейсов.
Преимущества программирования с использованием интерфейсов проявляются в том случае, когда одни и те же интерфейсы наследуются разными классами. При этом имеет место еще один вариант полиморфности: объект, представленный ссылкой-интерфейсом, способен проявлять различную функциональность в зависимости от реализации функций наследуемого интерфейса в классе данного объекта.
Независимо от типа образующих массив элементов, массив элементов данного типа – это особый класс, производный от базового класса Array.
Класс Array является основой для любого массива и для любого массива предоставляет стандартный набор методов для создания, манипулирования (преобразования), поиска и сортировки на множестве элементов массива.
В частности, варианты метода Sort() обеспечивают реализацию механизмов сортировки элементов одномерного массива объектов (в смысле представителей класса Object ).
Сортировка элементов предполагает:
перебор всего множества (или его части) элементов массива;
сравнение (значений) элементов массива в соответствии с определенным критерием сравнения.
При этом критерии для сравнения и алгоритмы сравнения могут задаваться либо с помощью массивов ключей, либо реализацией интерфейса IComparable, который специфицирует характеристики (тип возвращаемого значения, имя метода и список параметров) методов, обеспечивающих реализацию данного алгоритма.
Реализованный на основе интерфейса алгоритм способен распознавать значения элементов массива и сравнивать эти элементы между собой, если это элементы предопределенных типов.