使用简单工厂模式写的一个计算器

<1>子类拥有父类除私有之外的所有属性字段和方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂方法实现计算器
{
    /// <summary>
    /// 计算器类(抽象类,由子类重写)
    /// </summary>
    public abstract class Calculator
    {
        public double Number1 { get; set; }

        public double Number2 { get; set; }

        public Calculator() { }

        public Calculator(double a, double b) 
        {
            this.Number1=a;
            this.Number2=b;
        }
        /// <summary>
        /// 计算
        /// </summary>
        /// <returns></returns>
        public abstract double jsuan(); 

    }

    /// <summary>
    /// 加法类
    /// </summary>
    public class jiafaDll:Calculator  //子类拥有父类除私有之外的所有属性字段和方法
    {
        public jiafaDll() { }

        public jiafaDll(double a, double b)
            : base(a, b)   //调用父类带两个参数的构造函数,来初始化Number1 和Number2  (注意:因为jianfaDll类继承了Calculator,所以jianfaDll类是有Number1,和Number2两个属性的)              
        { }

        /// <summary>
        /// 重写父类的jsuan方法
        /// </summary>
        /// <returns></returns>
        public override double jsuan()
        {
            return Number1 + Number2;
        }
    }

    /// <summary>
    /// 减法类
    /// </summary>
    public class jianfaDll : Calculator
    {
        public jianfaDll()
        { }
        public jianfaDll(double a, double b)
            : base(a, b)   
        { }
                 
        public override double jsuan()
        {
            return Number1 - Number2;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入第一个数");
            double number1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入一个操作符");
            string caozuofu = Console.ReadLine();
            Console.WriteLine("请输入第二个数");
            double number2 = Convert.ToDouble(Console.ReadLine());
            Calculator c=null;
            switch (caozuofu)
            { 
                case "+":
                    c = new jiafaDll(number1, number2);
                    break;
                case "-":
                    c = new jianfaDll(number1, number2);
                    break;
            }
           double i= c.jsuan();
           Console.WriteLine(i);
           Console.ReadKey();
                

            
            

        }
    }
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值