这个是今天上课的练习,我在这里写写过程,此程序还有许多缺陷,见谅(引用命名空间需要在VS中引用类所在的项目)
首先定义一个接口
interface Icounter
{
double Counter();
}
其次在解决方案中分别生成5个类
1,添加加法类。4个运算类分别引用接口命名空间
class Add1:Icounter
{
//定义字段
double num1;
double num2;
//构造方法传参数
public Add1(double n1,double n2)
{
num1=n1;
num2=n2;
}
//接口方法
public double Counter()
{
return num1+num2;
}
}
添加减法类
class Sub1:Icounter
{
double num1;
double num2;
public Sub1(double n1,double n2)
{
num1=n1;
num2=n2;
}
public double Counter()
{
return num1-num2;
}
}
添加乘法类
class Mult1:Icounter
{
double num1;
double num2;
public Mult1(double n1,double n2)
{
num1=n1;
num2=n2;
}
public double Counter()
{
return num1*num2;
}
}
添加除法表
class Div1:Icounter
{
double num1;
double num2;
public Div1(double n1,double n2)
{
num1=n1;
//因为n2不能为0
if(n2==0)
{
Console.WriteLine("第二个数字不能为0")
}
else
{
num2=n2;
}
}
public double Counter()
{
return num1/num2;
}
}
//定义工厂类 引用接口命名空间 引用加减乘除的命名空间
class Factory
{
//定义静态方法
public static Icounter jisuan(double n1,double n2,string oper)
{
switch(oper)
{
case "+":return new Add1(n1,n2);
case "-":return new Sub1(n1,n2);
case "*":return new Mult1(n1,n2);
case "-":return new Div1(n1,n2);
defalut:return new Add1(n1,n2);
}
}
}
主函数引用接口命名空间,引用工厂命名空间
Console.WriteLine("请输入第一个数字");
double num1=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入运算符号");
string oper=Console.ReadLine();
Console.WriteLine("请输入第二个数字");
double num2=Convert.ToDouble(Console.ReadLine());
Icounter res=Factory.jisuan(num1,num2,oper);
double result= res.Counter();
Console.WriteLine(result);
Console.ReadKey();