c#描述一个几何图形的抽象类,包括求面积、求周长两个抽象方法,并派生出长方形类、正方形类、圆形类、三角形类,在主函数中输入图形的类别,并输入相关数据,求其面积和周长
//抽象类Geometric
public abstract class Geometric
{
//抽象方法,求面积
public abstract double Area();
//抽象方法,求周长
public abstract double Perimeter();
}
//长方形类Rectangle:
public class Rectangle : Geometric
{
private double length;
private double width;
public Rectangle(double l, double w)
{
this.length = l;
this.width = w;
}
public override double Area()
{
return length * width;
}
public override double Perimeter()
{
return 2 * (length + width);
}
}
//正方形类Square:
public class Square : Geometric
{
private double side;
public Square(double side)
{
this.side = side;
}
public override double Area()
{
return side * side;
}
public override double Perimeter()
{
return 4 * side;
}
}
//圆形类Circle:
public class Circle : Geometric
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
public override double Area()
{
return Math.PI * radius * radius;
}
public override double Perimeter()
{
return 2 * Math.PI * radius;
}
}
//三角形类Triangle:
public class Triangle : Geometric
{
private double side1;
private double side2;
private double side3;
public Triangle(double side1, double side2, double side3)
{
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public override double Area()
{
double p = (side1 + side2 + side3) / 2;
return Math.Sqrt(p * (p - side1) * (p - side2) * (p - side3));
}
public override double Perimeter()
{
return side1 + side2 + side3;
}
}
//主函数
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入图形的类型:");
Console.WriteLine("1.长方形 2.正方形 3.圆形 4.三角形");
int figure = Convert.ToInt32(Console.ReadLine());
double area = 0, perimeter = 0;
switch (figure)
{
case 1:
Console.WriteLine("请输入对应的长和宽:");
double l = Convert.ToDouble(Console.ReadLine());
double w = Convert.ToDouble(Console.ReadLine());
Rectangle rect = new Rectangle(l, w);
area = rect.Area();
perimeter = rect.Perimeter();
break;
case 2:
Console.WriteLine("请输入对应的边长:");
double side = Convert.ToDouble(Console.ReadLine());
Square sqaure = new Square(side);
area = sqaure.Area();
perimeter = sqaure.Perimeter();
break;
case 3:
Console.WriteLine("请输入对应的半径:");
double r = Convert.ToDouble(Console.ReadLine());
Circle circle = new Circle(r);
area = circle.Area();
perimeter = circle.Perimeter();
break;
case 4:
Console.WriteLine("请输入对应的三角形三边长:");
double s1 = Convert.ToDouble(Console.ReadLine());
double s2 = Convert.ToDouble(Console.ReadLine());
double s3 = Convert.ToDouble(Console.ReadLine());
Triangle triangle = new Triangle(s1, s2, s3);
area = triangle.Area();
perimeter = triangle.Perimeter();
break;
}
Console.WriteLine("面积 = {0}", area);
Console.WriteLine("周长 = {0}", perimeter);
Console.ReadKey();
}
}