点和直线类(综合型题目)
(1)创建C#控制台应用程序L4_1。
(2)在程序中新建一个点类CzPoint,为其定义两个double类型的私有字段成员x和y,分别表示点的横坐标和纵坐标。
(3)为CzPoint定义两个公有属性X、Y,分别用于封装对字段x和y的读写访问。
(4)定义CzPoint的带参数构造函数,在其中对字段x和y进行初始化。
(5)为CzPoint定义公有方法Move,用于按指定的水平距离和垂直距离移动坐标点。
(6)对CzPoint类进行相等和不相等操作符重载。两个坐标点相等,是指它们的横坐标和纵坐标都相等。
(7)在程序主方法中创建两个坐标点对象,判断它们是否相等;而后将第一个坐标点移动到第二个坐标点上,再判断它们是否相等。
(8)在程序中再新建一个直线类CzLine,为其定义两个double类型的字段成员a 和b,分别表示直线的斜率和截距;再定义字段封装属性A和B,但它们都是只读的。
(9)为CzLine定义两个构造函数,一个根据斜率和截距来创建直线对象,另一个则根据两个CzPoint对象来构造直线对象(直线穿过这两个点)。后一个的参考源代码如下(因涉及数学公式,故给出代码):
public CzLine(CzPoint p1,CzPoint p2)
{
this.a=(p2.Y-p1.Y)/(p2.X-p1.X);
this.b=p1.Y-this.a*p1.X;
}
(10)为CzLine定义公有方法Move,但它只用于平移直线,而不改变直线的斜率(即平移后的直线与原来的直线平行)。再为其定义公有方法Contains,用于判断某点是否在该直线上。
(11)类似的,为CzLine重载相等和不相等操作符。
(12)最后在程序主方法中采用不同的方式创建直线对象,并编译运行程序,测试它们的使用效果。
1