实验一
**【实验目的】**求三角形的面积
【实验要求】
用“方法的参数数组”、“接口”、“构造函数”、“类继承”、至少四种方法实现三角形的面积的方法;
最简单的就是根据长方形的面积=长×宽推断出平行四边形的面积=底×高,因为两个一样的三角形可组成一个平行四边形,可得面积计算公式:
三角形的面积=底×高÷2 [S=ah÷2]
或者是:
三角形任意两边之积×这两边的夹角的正弦值÷2 [S=ab×sin×1/2];
(方法一,[S=ah÷2])
【实验代码】
using System;
namespace homework2_1
{
//定义接口IPartOne
public interface IPartOne
{
void SetDataOne(string dataOne); //构造函数
}
//WritesthClass类派生自接口IPartOne
public class WritesthClass : IPartOne
{
private string DataOne;
//
public void SetDataOne(string dataOne)
{
DataOne = dataOne;
Console.WriteLine("{0}", DataOne);
}
}
//定义抽象基类:Shape
public abstract class Shape
{
public Shape() {
; }
}
//对Rectangular类的定义。Circle为Shape类的子类;
public class Rectangular: Shape
{
//Length和Width是Rectangualr的属性;
protected double Length, Width;
public Rectangular ()
{
Length = 0;
Width = 0; //变量Length和Width的初始化;
}
public Rectangular (double Length,double Width)
{
this.Length = Length;
this.Width = Width;
}
public double MianjiIs()
{
return Length * Width;
}
}
public class Triangle:Rectangular //三角形类从矩形类中派生
{
public Triangle (double Length,double Height) //方法,有参数,其中为形参,主函数中的参数是实参。
{
this.Length = Length;
this.Width = Height;
}
public double MianjiIs()
{
return 0.5* Length * Width;
}
}
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("请输入底边和高的长度,以回车键间隔:");
double i = Convert.ToInt32(Console.ReadLine());
double j = Convert.ToInt32(Console.ReadLine());
Triangle Tri = new Triangle(i, j); //实例化,并且设定三角形的三个边
WritesthClass a = new WritesthClass();
a.SetDataOne("Triangle area is:");
Console.WriteLine("{0}", Tri.MianjiIs());
}
}
}
【运行结果】
将底边和高分别设为3和4,得到的面积为:6;
【心得体会】
刚开始写这个程序的时候,心里是没有底的。因为之前都是读程序,还是第一次自己设计写一个程序。所以在方法的参数数组、类的继承和构造函数的使用上,借鉴了书上的例3.3;在接口上,借鉴了书上的例2.28.
在编程的润色时期,我想要增加一个输入三角形参数的功能,所以还有一些借鉴的地方:
double i = Convert.ToInt32(Console.ReadLine());
在课本上找输入语句时,我找到的只有字符串的输入语句,没有输入数字的语句。所以上网查了一下,得到了这个字符串转数字的语句,并得到了满意的结果。
以书上的程序为“剧本”,进行编程之后,发现有一个错误:
错误 CS0120 对象引用对于非静态的字段、方法或属性“Triangle.GetMianji()”是必需的
这个错误让我百思不得其解,查了好多资料,最终还是没有答案。经过艰难的思索,我终于明白自己的问题在哪里了——在主函数中没有对其中一个构造函数实例化。
解决这个问题之后,一切变得顺利起来。
(方法二):[S=ab×sin×1/2]
【实验代码】
using System;
namespace homework2_1
{
//定义接口IPartOne
public interface IPartOne
{
void SetDataOne(string dataOne); //构造函数
}
//WritesthClass类派生自接口IPartOne
public class WritesthClass : IPartOne
{
private string DataOne;
//
publi