控制台程序功能:① 为新建项目再添加一个C#代码文件,命名为Rectangle.cs,将以下要求定义的类代码存于该文件;② 定义一个名为Point的类,该类有x、y两个私有字段,用来存储点的横纵坐标值。该类要定义两个属性X、Y,用来读写横纵坐标值。该类要定义两个构造函数,一个无参,课初始化点的坐标为(60.0,75.0),另一个有两个参数,将点坐标设置两个参数值。该类要定义Display方法,用来显示点的坐标,定义SetPoint方法,用来设置点的坐标为指定值。③ 在入口方法中编写实例化一个默认点并显示点的坐标程序,再编写实例化为指定位置点并显示点坐标程序,再编写修改点坐标并显示点坐标程序。以验证前面点类定义的各个功能;④ 继续定义由点类派生类Line,该类要有两个私有数据成员,存储线段的两个端点。还要定义属性,用来读写两个端点。还要适当定义构造函数,以适应各种情况线段的实例化。还要定义计算线段长度的方法若干个重载,以适应各种已知情况的计算;⑤ 在入口方法中编写验证Line类各个功能的程序;⑥ 继续定义由线类派生类Rectangle,同样要有数据成员(长边、短边)、属性、构造函数、计算矩形周长和面积的方法,构造函数和方法应该有重载;⑦ 也应该在入口方法中编写验证矩形类功能的程序。
大概写了一下,不完全正确,有一些特殊情况判断可以结合异常加上去。
类Point:
public class Point
{
private float x, y;
public Point()
{
x = 60.0f;
y = 75.0f;
}
public Point(float x, float y)
{
this.x = x;
this.y = y;
}
public float X
{
get { return x; }
set { x = value; }
}
public float Y
{
get { return y; }
set { y = value; }
}
public string Display()
{
return "(" + x + "," + y + ")";
}
public void SetPoint(float x,float y)
{
X = x;
Y = y;
}
}
类Line:
public class Line : Point
{
private Point endPoint1, endPoint2;
public Line()
{
endPoint1 = new Point(0.0f, 0.0f);
endPoint2 = new Point(0.0f, 0.0f);
}
public Line(Point endPoint1, Point endPoint2)
{
this.endPoint1 = endPoint1;
this.endPoint2 = endPoint2;
}
public double Length()
{
return Math.Sqrt(Math.Pow(this.endPoint1.X - this.endPoint2.X, 2) + Math.Pow(this.endPoint1.Y - this.endPoint2.Y, 2));
}
public Point EndPoint1
{
get { return endPoint1; }
set { endPoint1 = value; }
}
public Point EndPoint2
{
get { return endPoint2; }
set { endPoint2 = value; }
}
}
类Rectangle :
public class Rectangle : Line
{
private Line width, height;
public Rectangle()
{
}
public Rectangle(Line width, Line height)
{
this.width = width;
this.height = height;
}
public Line Width
{
get { return width; }
set { width = value; }
}
public Line Height
{
get { return height; }
set { height = value; }
}
/// <summary>
/// 周长
/// </summary>
/// <returns></returns>
public double Perimeter()
{
return 2 * (Height.Length() + Width.Length());
}
/// <summary>
/// 面积
/// </summary>
/// <returns></returns>
public double Area()
{
return Height.Length() * Width.Length();
}
}
Main方法测试:
static void Main(string[] args)
{
//点 测试方法
Point p = new Point(1.23f,4.56f);
string result = p.Display();
Console.WriteLine(result);
p.SetPoint(3.21f,6.54f);
result = p.Display();
Console.WriteLine(result);
//线 测试方法
Point p1 = new Point(1.23f, 4.56f);
Point p2 = new Point(3.23f, 4.56f);
Line line = new Line(p1,p2);
double length = line.Length(); //2
Console.WriteLine(length);
//面 测试方法
Line line1 = new Line(p1, p2);
Line line2 = new Line(p1, p2);
Rectangle rectangle = new Rectangle(line1, line2);
double area = rectangle.Area();
double perimeter = rectangle.Perimeter();
Console.WriteLine(area);
Console.WriteLine(perimeter);
}