Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Конструирование классов и перегрузка операций






Лабораторная работа 2.3.1

Цель: приобрести умения и навыки по созданию простых классов, без наследования.

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

Рассмотрим пример программирования класса:

Задание:

Создать базовый класс «кольцо», такой, что:

a) его экземпляр содержит радиус внутренней окружности (не менее 1.0 мм) и площадь (не менее 10.0 мм2).

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

c) его методы позволяют получать и присваивать значения радиусов и площади, выполняя при этом соответствующие преобразования.

d) функция print() выводит на экран сообщение о радиусах и площади кольца.

e) операция «+» перегружена: для колец возвращает кольцо с наименьшим из двух внутренних радиусов и суммарной площадью; при сложении кольца с числом, увеличивается значение площади этого кольца, и возвращается значение новой площади.

Составить программу, проверяющую выполнение перечисленных функций.

 

Решение:

План разработки:

1. Создаем новый класс с названием Ring. При этом в текст программы автоматически включаются объявления библиотек и пространства имен.

2. В соответствии с п. a) задания вводим в класс две переменные r и s - радиус и площадь кольца.

3. Поскольку в п. a) задания указаны ограничения на переменные класса, вводим в него константы r_min и s_min - минимальный радиус и максимальная площадь.

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

5. В соответствии с п. b) создаем конструктор без параметров. Поскольку С# проинициализирует поля r и s нулевыми значениями, достаточно вызвать функцию MinimRS(), чтобы реализовать такой конструктор.

6. В п. b) указана необходимость еще двух перегруженных конструкторов: конструктор с двумя аргументами-радиусами и конструктор с одним аргументом-площадью. Программируем их вычисления, не забывая вызывать функцию MinimRS().

7. В соответствии с п. с) создаем методы-свойства R_in, R_out и S. Чтобы не дублировать вычисления, отдельно программируем закрытые статические функции R1 и R2 для определения одного из радиусов по заданной площади и другому радиусу. В разделах set не забываем вызывать функцию MinimRS().

8. В соответствии с п. d) программируем функцию print() для выполнения в консольном режиме.

9. В соответствии с п. e) дважды перегружаем операцию «+»: с двумя одинаковыми аргументами типа Ring и с двумя разными аргументами типа Ring и double. Программируем арифметику этих операций.

10. Программируем функцию Main, в которой создаем три экземпляра объектов класса Ring, чтобы проверить работу всех конструкторов. Затем вызываем все запрограммированные свойства, методы и операции.

 

Ниже приведен возможный вариант реализации этого плана:

 

// 1.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.