TDD面积计算【难度:2级】:
答案1:
using System;
using System.Linq;
public class Calculator
{
public double GetTotalArea(params IShape[] shapes)
{
return Math.Round(shapes.Sum(s => s.GetArea()), 2);
}
}
public interface IShape
{
double GetArea();
}
public class Triangle : IShape
{
public double TriangleBase {
get; set; }
public double TriangleHeight {
get; set; }
public Triangle(double triangleBase, double triangleHeight)
{
this.TriangleBase = triangleBase;
this.TriangleHeight = triangleHeight;
}
public double GetArea()
{
return (this.TriangleBase * this.TriangleHeight) / 2;
}
}
public class Square : IShape
{
public double Side {
get; set; }
public Square(double side)
{
this.Side = side;
}
public double GetArea()
{
return this.Side * this.Side;
}
}
public class Rectangle : IShape
{
public double Height {
get; set; }
public double Width {
get; set; }
public Rectangle(double height, double width)
{
this.Height = height;
this.Width = width;
}
public double GetArea()
{
return this.Width * this.Height;
}
}
public class Circle : IShape
{
public double Radius {
get; set; }
public Circle(double radius)
{
this.Radius = radius;
}
public double GetArea()
{
return Math.PI * Math.Pow(this.Radius, 2);
}
}
答案2:
using System;
using System.Linq;
public class Figure
{
public double Area {
get;set;}
}
public class Triangle : Figure
{
public Triangle(double h, double w)
{
Area = h*w/2;
}
}
public class Square : Figure
{
public Square(double h)
{
Area = h*h;
}
}
public class Rectangle : Figure
{
public Rectangle(double h, double w)
{
Area = h*w;
}
}
public class Circle : Figure
{
public Circle(double r)
{
Area = r*r*Math.PI;
}
}
public class Calculator
{
public double GetTotalArea(params Figure[] figures)
{
return Math.Round(figures.Sum(f=>f.Area), 2);
}
}
答案3:
public abstract class Shape {
public abstract double GetArea();
}
public class Triangle: Shape {
private double _base;
private double _height;
public Triangle()