Расчет объёма и площади конуса и усеченного конуса используя классы и ООП - C#
Формулировка задачи:
Добрый день! Есть следующая задача:Создать базовый класс «конус», описав в нём функции ввода параметров, вывода их на экран, нахождения объёма конуса и площади его нижнего основания. Породить от него класс «усеченный конус», переопределив в нем функции ввода и вывода параметров и нахождения объёма фигуры.
Имеется код, но он не в ООП.
Основная программа:
Класс конус:
Класс наследник Усеченный конус:
Подскажите, что нужно изменить, чтобы программы была объектно-ориентированной.Заранее спасибо!
class Program
{
static void Main(string[] args)
{
Console.Write("Введите радиус R= ");
Konus.R = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите высоту H= ");
Konus.H = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите малый радиус усеченного конуса r= ");
Konus.r = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите высоту усеченного конуса h= ");
Konus.h = Convert.ToDouble(Console.ReadLine());
Konus.PloshOsn(Konus.R);
Konus.Objem(Konus.H, Konus.R);
Srezkonus.ObjemSrezKon(Konus.h, Konus.R, Konus.r);
Console.ReadLine();
}
} class Konus
{
public static double R;
public static double H;
public static double r;
public static double h;
public static void PloshOsn(double R)
{
double S = Math.PI * R * R;
Console.WriteLine("Площадь основания конуса = {0}", S);
}
public static void Objem(double H, double R)
{
double V = (Math.PI * R * R * H) / 3;
Console.WriteLine("Объём конуса = {0}", V);
}
}class Srezkonus:Konus
{
public static void ObjemSrezKon(double h, double R, double r)
{
double V_SrezanKon = (Math.PI * h * (R * R + R * r + r * r)) / 3;
Console.WriteLine("Объём усеченного конуса = {0}", V_SrezanKon);
}
}Решение задачи: «Расчет объёма и площади конуса и усеченного конуса используя классы и ООП»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Cone
{
public double Radius { get; set; }
public double Height { get; set; }
public Cone(double R, double h)
{
Radius = R;
Height = h;
}
public virtual double Volume()
{
return (Math.PI * Radius * Radius * Height) / 3;
}
public double Area()
{
return Math.PI * Radius * Radius;
}
public override string ToString()
{
return "Радиус основания R = "+ Radius + "\n" + "Высота H = " + Height+ "\n" + "Объем V = " + Volume() + "\n" + "Площадь основания S = " + Area() + "\n";
}
}
class Frustum : Cone
{
public double radius { get; set; }
public Frustum (double R, double h, double r): base(R, h)
{
radius = r;
}
public override double Volume()
{
return (Math.PI * Height * (Radius * Radius + Radius * radius + radius * radius)) / 3;
}
public override string ToString()
{
return base.ToString() + "Радиус вершины r = " + radius + "\n";
}
}
class Program
{
static void Main(string[] args)
{
Cone[] cones = new Cone[4];
cones[0] = new Cone(3.2, 4.3);
cones[1] = new Cone(2.1, 4.8);
cones[2] = new Frustum(3.2, 3.5, 1.2);
cones[3] = new Frustum(4.8, 2.1, 2.1);
foreach(Cone c in cones)
{
Console.WriteLine(c.ToString());
}
Console.Read();
}
}
}