Лабораторная работа 1 КОНСТРУИРОВАНИЕ КЛАССОВ Цель- приобрести умения и навыки по созданию простых класс
Работа добавлена на сайт samzan.net: 2015-07-05
Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
от 25%
Подписываем
договор
Лабораторная работа 1
КОНСТРУИРОВАНИЕ КЛАССОВ
Цель: приобрести умения и навыки по созданию простых классов, без наследования.
Назначение: программирование класса с несколькими конструкторами и функциями-свойствами Проверка работоспособности созданного класса.
1.1. Задания
- Создать базовый класс «цилиндр», такой, что:
- его экземпляр содержит размер радиуса и высоты.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса и высоты.
- его методы позволяют получать и присваивать значения радиуса, высоты и объема, выполняя при этом соответствующие преобразования.
- функция print_val() выводит на экран значение его объема.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «шар», такой, что:
- его экземпляр содержит размер радиуса.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса.
- его методы позволяют получать и присваивать значения радиуса и объема, выполняя при этом соответствующие преобразования.
- функция print_val() выводит на экран значение его объема.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «конус», такой, что:
- его экземпляр содержит размер радиуса и высоты.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса и высоты.
- его методы позволяют получать и присваивать значения радиуса, высоты и объема, выполняя при этом соответствующие преобразования.
- функция print_val() выводит на экран значение его объема.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «трапеция», такой, что:
- его экземпляр содержит размер двух оснований и высоты.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением оснований и высоты.
- его методы позволяют получать и присваивать значения оснований, высоты и площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение ее площади.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «смайлик», такой, что:
- его экземпляр содержит размер радиуса лица R и радиуса r глаз.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением R и r.
- его методы позволяют получать и присваивать значения R, r и площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение ее площади (без площади глаз).
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «крест», такой, что:
a
b
- его экземпляр содержит размер два размера a и b .
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b ..
- его методы позволяют получать и присваивать значения a , b и площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение площади этой фигуры.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «шайба» (правильный шестиугольник, такой, что:
a
- его экземпляр содержит размер стороны a.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a.
- его методы позволяют получать и присваивать значения a и площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение площади этой фигуры.
Составить программу, проверяющую выполнение перечисленных функций.
- Создать базовый класс «ромб» :
- его экземпляр содержит размеры a и b.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.
- его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.
- .
- функция print_sqrt() выводит на экран значение площади этой фигуры.
- Создать базовый класс «песочные часы» : a
b
- его экземпляр содержит размеры a и b.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.
- его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение площади этой фигуры.
- Создать базовый класс «четырехконечная звезда» :
- его экземпляр содержит размеры a и b.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.
- его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.
- .
- функция print_sqrt() выводит на экран значение площади этой фигуры.
- Создать базовый класс «вигвам»
(заштрихованная фигура):
H
h
a
- его экземпляр содержит размеры a, H и h.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением .
- его методы позволяют присваивать значения a, h, H и получать значения площади, выполняя при этом соответствующие преобразования.
- функция print_sqrt() выводит на экран значение площади этой фигуры.
- Создать базовый класс «ведро»
R
h
r
- его экземпляр содержит размеры R, r и h.
- его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением .
- его методы позволяют получать и присваивать значения a и объема, выполняя при этом соответствующие преобразования R, r и h
- функция print_val() выводит на экран значение объема этой фигуры.
2.1 Рекомендации по планированию и пример выполнения работы
Рассмотрим пример решения такого задания:
Задание:
Создать базовый класс «кольцо», такой, что:
- его экземпляр содержит радиус внутренней окружности (не менее 1.0 мм) и площадь (не менее 10.0 мм2).
- его конструктор без параметра создает кольцо с минимальными значениями радиуса и площади, а конструкторы с параметрами создают экземпляр в соответствии с заданными радиусами или с минимальным радиусом и заданной площадью.
- его методы позволяют получать и присваивать значения радиусов и площади, выполняя при этом соответствующие преобразования.
- функция print() выводит на экран сообщение о радиусах и площади кольца.
Составить программу, проверяющую выполнение перечисленных функций.
Решение:
План разработки:
- Создаем новый класс с названием Ring. При этом в текст программы автоматически включаются объявления библиотек и пространства имен.
- В соответствии с п. a) задания вводим в класс две переменные r и s - радиус и площадь кольца.
- Поскольку в п. a) задания указаны ограничения на переменные класса, вводим в него константы r_min и s_min - минимальный радиус и максимальная площадь.
- Замечаем, что при реализации методов и свойств этого класса нужно учитывать введенные ограничения: сравнивать изменившиеся радиус и площадь с заданными константами. Поэтому создаем закрытую функцию MinimRS(), которая выполняет такое сравнение, и будем вызывать ее каждый раз при изменении переменных.
- В соответствии с п. b) создаем конструктор без параметров. Поскольку С# проинициализирует поля r и s нулевыми значениями, достаточно вызвать функцию MinimRS(), чтобы реализовать такой конструктор.
- В п. b) указана необходимость еще двух перегруженных конструкторов: конструктор с двумя аргументами-радиусами и конструктор с одним аргументом-площадью. Программируем их вычисления, не забывая вызывать функцию MinimRS().
- В соответствии с п. с) создаем методы-свойства R_in, R_out и S. Чтобы не дублировать вычисления, отдельно программируем закрытые статические методы R1 и R2 для определения одного из радиусов по заданной площади и другому радиусу. В разделах set не забываем вызывать функцию MinimRS().
- В соответствии с п. d) программируем функцию print()для выполнения в консольном режиме.
- Программируем функцию Main, в которой создаем три экземпляра объектов класса Ring, чтобы проверить работу всех конструкторов. Затем вызываем все запрограммированные свойства и методы.
Ниже приведен возможный вариант реализации этого плана:
// 1.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lek_1_08
{
class Ring // Кольцо
{
// 2.
double r=0; // радиус внутренней окружности (мм)
double s=0; // площадь кольца (кв.мм)
// 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);
}
static double R1(double r2, double s)
{// Вычисляет радиус внутренней окружности
double s2 = Math.PI * r2 * r2;
double s1= Math.Max(s2-s,0.0);
return Math.Sqrt(s1 / Math.PI);
}
// 5.
public Ring()
{// Конструктор по умолчанию
MinimRS();
}
// 6.
public Ring(double s1)
{// Конструктор по заданной площади
s = s1;
MinimRS();
}
public Ring(double r1, double r2)
{// Конструктор по заданным радиусам
r = Math.Min(r1, r2);
s = Math.PI * Math.Abs((r1*r1 - r2*r2));
MinimRS();
}
// 7.
public double R_in
{// Свойство - внутренний радиус
get { return r; }
set { r = value; MinimRS(); }
}
public double R_out
{// Свойство - внешний радиус
get { return R2(r,s); }
set { r = R1(value,s); MinimRS(); }
}
public double S
{// Свойство - площадь
get { return s; }
set { s = value; MinimRS(); }
}
// 8.
public void print()
{ // Вывод параметров кольца на экран
Console.WriteLine("Кольцо: R1={0:F}, R2={1:F}, S={2:F}; ",
r,R2(r,s),s);
}
}
class Program
{
static void Main(string[] args)
{ // 10.
// Проверка работы конструкторов
Ring a1=new Ring();
a1.print();
Ring a2=new Ring(22);
a2.print();
Ring a3=new Ring(0.5,15);
a3.print();
// Проверка методов-свойств
a3.R_in =10;
a3.print();
a3.R_out =10;
a3.print();
Console.ReadKey();
}
}
}
Результат выполнения:
a
b
a
b