Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Конструирование классов и перегрузка операцийСтр 1 из 2Следующая ⇒
Лабораторная работа 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.
|