父类方法:
public abstract class Operation
{
public int NumberA { get; set; }
public int NumberB { get; set; }
public abstract void GetResult();
}子类方法:
/// <summary>
/// 计算类
/// </summary>
public class Computer
{
public void Com(Operation oper)
{
oper.GetResult();
}
}
/// <summary>
/// 加法类
/// </summary>
public class Add:Operation
{
public override void GetResult()
{
Console.WriteLine("请输入被加数:");
NumberA = int.Parse(Console.ReadLine());
Console.WriteLine("请输入加数:");
NumberB = int.Parse(Console.ReadLine());
result = NumberA + NumberB;
return;
}
}
这个为什么不能return回去呢测试类: /// <summary>
/// 测试类
/// </summary>
class Program
{
static void Main(string[] args)
{
Computer com = new Computer();
Add add = new Add();
com.Com(add);
}
}然后就不知道怎么做了怎么把这个方法跟表格融合在一起啊!!!请高手指点啊。
public abstract class Operation
{
public int NumberA { get; set; }
public int NumberB { get; set; }
public abstract void GetResult();
}子类方法:
/// <summary>
/// 计算类
/// </summary>
public class Computer
{
public void Com(Operation oper)
{
oper.GetResult();
}
}
/// <summary>
/// 加法类
/// </summary>
public class Add:Operation
{
public override void GetResult()
{
Console.WriteLine("请输入被加数:");
NumberA = int.Parse(Console.ReadLine());
Console.WriteLine("请输入加数:");
NumberB = int.Parse(Console.ReadLine());
result = NumberA + NumberB;
return;
}
}
这个为什么不能return回去呢测试类: /// <summary>
/// 测试类
/// </summary>
class Program
{
static void Main(string[] args)
{
Computer com = new Computer();
Add add = new Add();
com.Com(add);
}
}然后就不知道怎么做了怎么把这个方法跟表格融合在一起啊!!!请高手指点啊。
public abstract class Operation
{
public int NumberA { get; set; }
public int NumberB { get; set; }
public abstract int GetResult();//返回的int
}
public class Computer
{
public void Com(Operation oper)
{
Console.WriteLine("{0}",oper.GetResult());//获得需要打印出来才可以看到返回值
}
}
public class Add : Operation
{
public override int GetResult()
{
Console.WriteLine("请输入被加数:");
NumberA = int.Parse(Console.ReadLine());
Console.WriteLine("请输入加数:");
NumberB = int.Parse(Console.ReadLine());
int result = NumberA + NumberB;//添加一个定义result
return result;//返回值
}
}
class Program
{
static void Main(string[] args)
{
Computer com = new Computer();
Add add = new Add();
com.Com(add);
}
}
还有个小小的问题。。怎么将form窗体跟这个实现计算功能的类结合到一起,就是最后的结果做出来跟图片上的一样,中间的运算符号有个下拉菜单。。
像你说的功能没必要那么复杂的 添加三个TextBox 控件 一个ComboBox控件 一个button控件 很容易实现的代码如下 可以实现你所说的基本功能
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.Add("+");
comboBox1.Items.Add("-");
comboBox1.Items.Add("*");
comboBox1.Items.Add("/");
} private void button1_Click(object sender, EventArgs e)
{
float n1;
float n2;
float.TryParse(textBox1.Text, out n1);
float.TryParse(textBox2.Text, out n2);
switch (comboBox1.Text)
{
case "+":
textBox3.Text = (n1 + n2).ToString();
break;
case "-":
textBox3.Text = (n1 - n2).ToString();
break;
case "*":
textBox3.Text = (n1 * n2).ToString();
break;
case "/":
textBox3.Text = (n1 / n2).ToString();
break;
default:
break;
} }
}
namespace 计算器
{
public abstract class Operation
{
public double NumberA { get; set; }
public double NumberB { get; set; }
public abstract double GetResult();
}
public class 工厂
{
public static Operation GetOperation(String className)
{
try
{
Type type = Type.GetType(className);
ConstructorInfo con= type.GetConstructor(new Type[] { });
Operation op = (Operation)con.Invoke(null);
return op;
}
catch { }
return null;
}
} public class Add : Operation
{
public override double GetResult()
{
return NumberA + NumberB;
}
}
public class Sub : Operation
{
public override double GetResult()
{
return NumberA - NumberB;
}
}
public class Div : Operation
{
public override double GetResult()
{
return NumberA / NumberB;
}
}
public class Multi : Operation
{
public override double GetResult()
{
return NumberA * NumberB;
}
}
}
http://download.csdn.net/detail/samsone/4226069
讲解了计算器的加减乘除功能的封装、继承、多态...
有源码
{
IOperation opr = null;
switch (oprStr) //根据用户输入的运算类型实例化具体的运算类对象,生产相应的对象
{
case "+":
// result = opr.Add(numberA, numberB);
opr = new Add();
break;
case "-":
//result = opr.Sub(numberA, numberB);
opr = new Sub();
break;
case "*":
//result = opr.Mul(numberA, numberB);
opr = new Mul();
break;
case "/":
//result = opr.Div(numberA, numberB);
opr = new Div();
break;
case "^":
//result = opr.Div(numberA, numberB);
opr = new MN();
break;
}
return opr;
}
public interface IOperation
{
int GetResult(int x,int y);
}
public class Add : IOperation
{
public int GetResult(int x, int y)
{
return x + y;
}
}