C#第二次实验:面向对象编程

实验一

**【实验目的】**求三角形的面积

【实验要求】
用“方法的参数数组”、“接口”、“构造函数”、“类继承”、至少四种方法实现三角形的面积的方法;
最简单的就是根据长方形的面积=长×宽推断出平行四边形的面积=底×高,因为两个一样的三角形可组成一个平行四边形,可得面积计算公式:
三角形的面积=底×高÷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
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值