C# 复习简单工厂模式,抽象类,抽象方法,简单计算器
C# 复习简单工厂模式,抽象类,简单计算器
重新复习简单工厂模式,抽象类,抽象方法,使用下拉框选择 “+”、“-”、“*”、“/”。
新建 抽象类CalFather,新建 Add(加)、新建 Sub(减)、新建 Cheng(乘)、新建 除(Chu)类。全部继承 抽象类CalFather。
通过 静态方法 GetCal 判断下拉框选择的符号,来新建 对应的类。
通过调用 GetResult 方法计算结果。
界面设计:
代码:
using System; using System.Windows.Forms; namespace 复习简单工厂计算器 { public partial class Form1 : Form { public Form1() { InitializeComponent(); cboOpear.SelectedIndex = 0;//下拉框 默认选择 第一项 } private void btnResult_Click(object sender, EventArgs e) { double numberOne;//双精度浮点数 变量 用于保存 第一个数 double numberTwo;//双精度浮点数 变量 用于保存 第二个数 if (double.TryParse(txt1.Text, out numberOne) == false)//判断 是否 将文本框 转换为 双精度浮点数 { MessageBox.Show("输入的第一个数不合法", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);//提示 return;//中断当前 } if (double.TryParse(txt2.Text, out numberTwo) == false)//判断 是否 将文本框 转换为 双精度浮点数 { MessageBox.Show("输入的第二个数不合法", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);//提示 return;//中断当前 } string opera = cboOpear.SelectedItem.ToString();//将下拉框选择的值 赋值给 opera 变量 CalFather cal = GetCal(opera, numberOne, numberTwo);//调用方法。 double result = cal.GetResult();//调用 cal 类的方法 txtResult.Text = numberOne + " " + opera + " " + numberTwo + " = " + result.ToString();//结果文本框 显示内容 } public static CalFather GetCal(string opera, double n1, double n2)//方法 { CalFather cal = null;// CalFather 变量 switch (opera)//判断 { case "+": cal = new Add(n1, n2);//实例化 Add 类 break; case "-": cal = new Sub(n1, n2);//实例化 Sub 类 break; case "*": cal = new Cheng(n1, n2);//实例化 Cheng 类 break; case "/": cal = new Chu(n1, n2);//实例化 Chu 类 break; } return cal;//返回 } } public abstract class CalFather//抽象类 { public double NumberOne//属性 { get; set; } public double numberTwo//属性 { get; set; } public CalFather(double n1, double n2)//构造函数 { this.NumberOne = n1;//赋值 this.numberTwo = n2;//赋值 } public abstract double GetResult();//抽象方法 } public class Add : CalFather//Add类 继承 CalFather { public Add(double n1, double n2)//构造函数 : base(n1, n2) { } public override double GetResult()//重写方法 { return this.NumberOne + this.numberTwo;//返回 } } public class Sub : CalFather { public Sub(double n1, double n2) : base(n1, n2) { } public override double GetResult() { return this.NumberOne - this.numberTwo; } } public class Cheng : CalFather { public Cheng(double n1, double n2) : base(n1, n2) { } public override double GetResult() { return this.NumberOne * this.numberTwo; } } public class Chu : CalFather { public Chu(double n1, double n2) : base(n1, n2) { } public override double GetResult() { return this.NumberOne / this.numberTwo; } } }
输出结果: