Static double R2(double r1, double s)




Лабораторная работа 2.2.

КОНСТРУИРОВАНИЕ КЛАССОВ

ВНИМАНИЕ! Такие же задания выносятся на контрольную работу по первому модулю и на экзамен.

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

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

1.1. Задания

Вариант 1. Создать класс «четное число», такой, что:

a) его экземпляр может содержать только положительное четное число в диапазоне 2..200.

b) его конструктор без параметра создает экземпляр со значением 2, а конструктор с параметром при создании экземпляра округляет значение параметра до ближайшего четного числа в указанном диапазоне.

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

d) его функция print() выводит на экран значение экземпляра, заключенное в двойные кавычки.

e) его операция «+» перегружена: для двух четных чисел вычисляет их полусумму и возвращает четное число; при операции с обычным числом вычисляет сумму и возвращает целое число.

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

 

Вариант 2. Создать класс «нечетное число», такой, что:

a) его экземпляр может содержать только положительное нечетное число в диапазоне 1..201.

b) его конструктор без параметра создает экземпляр со значением 1, а конструктор с параметром при создании экземпляра округляет значение параметра до ближайшего нечетного числа в указанном диапазоне.

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

d) функция print() выводит на экран значение экземпляра, заключенное в одинарные кавычки.

e) операция «–» перегружена: для двух нечетных чисел вычисляет их разность и возвращает нечетное число, при операции с обычным числом вычисляет разность и возвращает действительное число.

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

 

Вариант 3. Создать класс «бухгалтерское число», такой, что:

a) его экземпляр может содержать денежное выражение в диапазоне от ‑1 000 000.00грн до +1 000 000.00грн.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметром при создании экземпляра округляет значение параметра до копеек в указанном диапазоне. При превышении диапазона выводится предупреждение.

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

d) функция print() выводит на экран значение экземпляра с пробелами перед каждой триадой цифр и круглыми скобками вокруг отрицательного значения, вместо знака «-».

e) операция «+» перегружена для бухгалтерских и обычных чисел, вычисляет сумму, выводя предупреждение в случае выхода за диапазон.

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

 

Вариант 4. Создать базовый класс «комплексное число», такой, что:

a) его экземпляр содержит действительную и мнимую часть ­– переменные с плавающей точкой.

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

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

d) функция print() выводит на экран значение экземпляра в виде (0.00±i0.00).

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

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

 

Вариант 5. Создать класс «вектор», такой, что:

a) его экземпляр содержит три координаты – переменные с плавающей точкой. Особенность значений координат: знак третьей координаты автоматически становится таким, что их произведение всегда положительно.

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

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

d) функция print() выводит на экран значение экземпляра в <0.0 0.0 0.0>.

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

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

 

Вариант 6. Создать класс «точка», такой, что:

a) его экземпляр содержит две координаты – положительные целые числа.

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

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

d) функция print() выводит на экран значение координат в формате <0:0>.

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

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

 

Вариант 7. Создать базовый класс «квадрат», такой, что:

a) его экземпляр содержит размер стороны квадрата.

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

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

d) функция print_sqr() выводит на экран значение его площади.

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

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

 

Вариант 8. Создать базовый класс «нормированный вектор», такой, что:

a) его экземпляр содержит две координаты – действительные числа. Модуль вектора всегда равен 1.0.

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

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

d) функция print() выводит на экран значение координат в формате Х=0.0, Y=0.0.

e) операция «*» перегружена: вычисляет скалярное произведение двух векторов, и создает новый вектор при умножении вектора и скаляра.

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

 

Вариант 9. Создать базовый класс «буква», такой, что:

a) он содержит перечислимый тип, обозначающий 4 цвета.

b) его экземпляр содержит код буквы латинского алфавита и цвет этой буквы.

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

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

e) функция print() выводит на экран букву и ее цвет.

f) операция «+» перегружена: для букв возвращает букву со значением левого операнда и с цветом правого операнда, при сложении буквы с целым числом увеличивает значение цвета на величину числа «по кругу» и возвращает целое число, соответствующее новому цвету.

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

 

Вариант 10. Создать базовый класс «правильный многоугольник», такой, что:

a) его экземпляр содержит количество вершин (не менее 3) и радиус описанной окружности (не менее 1.0).

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

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

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

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

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

 

Вариант 11. Создать базовый класс «треугольник», такой, что:

a) его экземпляр содержит размеры трех сторон треугольника.

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

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

d) функция print_sqr() выводит на экран значение его площади.

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

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

 

Вариант 12. Создать базовый класс «цилиндр», такой, что:

a) его экземпляр содержит размер радиуса и высоты.

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

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

d) функция print_val() выводит на экран значение его объема.

e) операция «+»перегружена: для двух цилиндров создает новый цилиндр суммарного объема (r=r1+r2, h=h1+h2) при сложении с числом изменяет свой объем на эту величину и возвращает новое значение объема.

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

 

Вариант 13. Создать базовый класс «шар», такой, что:

a) его экземпляр содержит размер радиуса.

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

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

d) функция print_val() выводит на экран значение его объема.

e) операция «+»перегружена: для двух шаров создает новый шар суммарного объема (r=r1+r2) при сложении с числом изменяет свой объем на эту величину и возвращает новое значение объема.

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

 

Вариант 14. Создать базовый класс «конус», такой, что:

a) его экземпляр содержит размер радиуса и высоты.

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

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

d) функция print_val() выводит на экран значение его объема.

e) операция «+»перегружена: для двух конусов создает новый конус с параметрами (r=r1+r2, h=h1+h2), а при сложении с числом изменяет свой объем на эту величину и возвращает новое значение объема.

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

 

Вариант 15. Создать базовый класс «трапеция», такой, что:

a) его экземпляр содержит размер двух оснований и высоты.

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

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

d) функция print_sqrt() выводит на экран значение ее площади.

e) операция «+»перегружена: для двух трапеций создает новую трапецию суммарной площади (a=a1+a2, b=b1+b2, h=h1+h2) при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

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

 

Вариант 16. Создать базовый класс «смайлик», такой, что:

a) его экземпляр содержит размер радиуса лица R и радиуса r глаз.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением R и r.

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

d) функция print_sqrt() выводит на экран значение ее площади (без площади глаз).

e) операция «+» перегружена: для двух «смайликов» создает новый «смайлик» с параметрами (R=R1+R2, r=r1+r2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

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

 

Вариант 17. Создать базовый класс «крест», такой, что:

 

 
 


a

 
 


b

 
 


a) его экземпляр содержит размер два размера a и b.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2, b=b1+b2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

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

 

Вариант 18. Создать базовый класс «шайба» (правильный шестиугольник, такой, что:

 
 


a

 

 

 

a) его экземпляр содержит размер стороны a.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

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

 

Вариант 19. Создать базовый класс «ромб»:

a) его экземпляр содержит размеры a и b.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2, b=b1+b2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

Вариант 20. Создать базовый класс «песочные часы»: a

b

 

 

a) его экземпляр содержит размеры a и b.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2, b=b1+b2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

Вариант 21.

a
Создать базовый класс «четырехконечная звезда»:

b


 

 

a) его экземпляр содержит размеры a и b.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2, b=b1+b2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

 

Вариант 22. Создать базовый класс «вигвам»

(заштрихованная фигура):

H

h

 

a

a) его экземпляр содержит размеры a, H и h.

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

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

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

e) операция «+»перегружена: для двух фигур создает новую фигуру с параметрами (a=a1+a2, H=H1+H2, h=h1+h2), а при сложении с числом изменяет свою площадь на эту величину и возвращает новое значение площади.

 

Вариант 23. Создать базовый класс «ведро»

R

h

 

 

r

a) его экземпляр содержит размеры R, r и h.

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

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

d) функция print_val() выводит на экран значение объема этой фигуры.

e) операция «+» перегружена: для двух фигур создает новую фигуру
с параметрами (R=R1+R2, r=r1+r2, h=h1+h2), а при сложении с числом изменяет свой объем на эту величину и возвращает новое значение объема

 

2.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.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

Namespace Lek_1_08

{

Class Ring // Кольцо

{ // 3.

const double r_min=1.0; // Ограничение на внутренний радиус (мм)

const double s_min=10.0; // Ограничение на площадь (кв.мм)

// 4.

Void MinimRS()

{ // Приводит неправильные значения полей

// в соответствие с условием задачи

r = Math.Max(r, r_min);

s = Math.Max(s, s_min);

}

// 7-Б.

static double R2(double r1, double s)

{// Вычисляет радиус внешней окружности

double s1 = Math.PI * r1 * r1;

double s2 = s1 + Math.Max(s,0.0);

return Math.Sqrt(s2 / Math.PI);

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: