Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 34.docx
Скачиваний:
25
Добавлен:
30.04.2022
Размер:
74.1 Кб
Скачать

Лабораторная работа № 5 Перегрузка операций в языке c#

Цель работы: научиться использовать механизм перегрузки операций языка C#.

Задание: Создать класс работы с комплексными числами. В созданном классе объявить операции сложения, вычитания, умножения для комплексных чисел. Реализовать программу, демонстрирующую работу с объектами класса.

Инструкции к выполнению:

- Предусмотреть возможность изменения значения числа с помощью свойств класса.

Теоретическая справка

Перегрузка операций в C# является способом объявления семантики новых операций, которые обозначаются принятыми в C# символами операций.

Перегрузка операций строится на основе общедоступных ( public ) статических (вызываемых от имени класса) функций-членов с использованием ключевого слова operator.

Не все операции множества могут быть переопределены (перегружены) подобным образом. Некоторые операции могут перегружаться с ограничениями.

При этом при перегрузке операций для любого нового типа выполняются следующие правила:

  • префиксные операции ++ и –– перегружаются парами;

  • операции сравнения перегружаются парами: если перегружается операция ==, также должна перегружаться операция !=. То же самое относится к парам < и >, <= и >=.

Лабораторная работа № 6 Интерфейсы и их реализация в c#

Цель работы: освоить разработку и реализацию интерфейсов языка C#.

Задание: Доработать класс комплексных чисел таким образом, чтобы он реализовывал интерфейс, необходимый для сортировки массивов объектов данного типа стандартными методами сортировки. Сортировка должна происходить по возрастанию модулей комплексных чисел.

Инструкции к выполнению:

  • Предусмотреть реализацию классом стандартного интерфейса IComparable.

  • Протестировать сортировку с помощью заполнения комплексными числами массива и использования стандартного метода Sort.

Теоретическая справка

Интерфейсы - это те же самые абстрактные классы, не содержащие объявлений данных-членов и объявлений обычных функций.

Все без исключения функции — члены интерфейса – абстрактные. Поэтому интерфейс объявляется с особым ключевым словом interface, а функции интерфейса, несмотря на свою "абстрактность", объявляются без ключевого слова abstract.

Основное отличие интерфейса от абстрактного класса заключается в том, что производный класс может наследовать одновременно несколько интерфейсов.

Преимущества программирования с использованием интерфейсов проявляются в том случае, когда одни и те же интерфейсы наследуются разными классами. При этом имеет место еще один вариант полиморфности: объект, представленный ссылкой-интерфейсом, способен проявлять различную функциональность в зависимости от реализации функций наследуемого интерфейса в классе данного объекта.

Независимо от типа образующих массив элементов, массив элементов данного типа – это особый класс, производный от базового класса Array.

Класс Array является основой для любого массива и для любого массива предоставляет стандартный набор методов для создания, манипулирования (преобразования), поиска и сортировки на множестве элементов массива.

В частности, варианты метода Sort() обеспечивают реализацию механизмов сортировки элементов одномерного массива объектов (в смысле представителей класса Object ).

Сортировка элементов предполагает:

  • перебор всего множества (или его части) элементов массива;

  • сравнение (значений) элементов массива в соответствии с определенным критерием сравнения.

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

Реализованный на основе интерфейса алгоритм способен распознавать значения элементов массива и сравнивать эти элементы между собой, если это элементы предопределенных типов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]