博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#四则运算器(多态方法实现)
阅读量:7119 次
发布时间:2019-06-28

本文共 5005 字,大约阅读时间需要 16 分钟。

在上一节C#课上,我们学习了用类的继承的方式来做一个四则运算器,然而老师的代码在课上演示的效果并不理想,而且没有使用多态的思想实现,今天我们就来用多态的方式实现四则运算器。

 

1. 题目及要求

  

  

 

2. Arithmetic类的实现

  在实现Arithmetic类之前,我们需要一个类库,类库的创建方法如下:

 

  打开VisualStidio,新建--项目--在c#一栏中选中类库

  

 

  我们将我们的类库命名为MyClassLibrary1,当然你也可以根据自己的喜好命名

 

  进入类库后,将c#文件重命名为Airthmetic,并开始编写代码

  

 

  Aeithmetic.cs具体代码如下:

1 using System; 2  3 namespace MyClassLibrary1 4 { 5     public class Arithmetic //声明算术运算类 6     { 7         private double num1; 8         private double num2;    //设置两个操作数 9         //声明两个操作数的索引10         public double Num111         {12             get13             {14                 return num1;15             }16             set17             {18                 num1 = value;19             }20         }21         public double Num222         {23             get24             {25                 return num2;26             }27             set28             {29                 num2 = value;30             }31         }32         //声明Airthmetic类的计算值方法33         public virtual string GetResult()34         {35             return "两数没有做任何算术运算";36         }37         //检查输入的数据是否符合规范38         public static bool CheckNum(string s1, string s2)39         {40             double num;41             bool flag;  //声明标志变量flag42             if (!double.TryParse(s1, out num))43                 flag = false;   //当第一个数字不合规范时,flag为假44             else if (!double.TryParse(s2, out num))45                 flag = false;   //第二个数字不合规范时,flag为假46             else flag = true;   //当两个数字都符合规范时,flag为真47             return flag;48         }49     }50 51     public class NumAdd:Arithmetic //声明加法运算类52     {53         //重载父类中的计算值方法54         public override string GetResult()55         {56             string result = "两数相加的结果为:";57             double num = Num1 + Num2;   //计算两个数的和58             result += Convert.ToString(num);   //将计算结果转换为字符串59             return result;60         }61     }62 63     public class NumSub : Arithmetic    //声明减法运算类64     {65         //重载父类中的计算值方法66         public override string GetResult()67         {68             string result = "两数相减的结果为:";69             double num = Num1 - Num2;   //  计算两个数的差70             result += Convert.ToString(num);    //  将计算结果转换为字符串71             return result;72         }73     }74 75     public class NumMul : Arithmetic    //声明乘法运算类76     {77         //重载父类中的计算值方法78         public override string GetResult()79         {80             string result = "两数相乘的结果为:";81             double num = Num1 * Num2;   //计算两个数的积82             result += Convert.ToString(num);    //将计算结果转换为字符串83             return result;84         }85     }86 87     public class NumDiv : Arithmetic    //声明除法运算类88     {89         //重载父类中的计算值方法90         public override string GetResult()91         {92             string result = "两个数相除的结果为:";93             double num = Num1 / Num2;   //计算两个数的商94             result += Convert.ToString(num);    //将计算结果转换为字符串95             return result;96         }97     }98 }

 

  在编写完代码之后,我们在菜单栏上点击  生成--生成解决方案即可保存类库

  

 

  生成后的结果如下:

  

  请记住生成的路径名,我们在等下引用此类库时要用到

1. 连接到类库  

  首先,我们创建一个c#窗口程序

  

 

  然后,我们需要将刚才创建的类库引用到这个项目中去(直接在项目里面新建类的就不需要)

 

  对你的项目右键--添加--引用

  

 

  然后点击 浏览,在生成的路径里找到你的类库并添加

  

 

  之后我们再在代码里加入using MyClassLibrary1;便可以正常使用类库了

 

 

  当然,如果你嫌创建和引用类库过于麻烦,你也可以像java一样直接在项目里新建类,这里只是提供一下类库的创建和连接!

 

 

1. 窗体应用程序的具体实现

接下来,让我们回到窗体应用程序的实现中来,在创建了窗体应用程序后,右手边会出现一个可视化界面,将要用的控件拖到合适位置并右键--属性对他们的名字和文本进行改变

 

 

这里提供我的界面布局和命名(命名用红字标出)

然后我们双击确定按钮进入编程界面。

Form1.cs具体代码如下:

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms;10 using MyClassLibrary1;11 12 namespace cs四则运算器2018_102313 {14     public partial class Form1 : Form15     {16         public Form1()17         {18             InitializeComponent();19             this.Text = "四则运算工具";   //声明标题文字20         }21 22         private void ButtonSubmit_Click(object sender, EventArgs e)23         {24             string a = textBoxNum1.Text;  //获取操作数A的字符串25             string b = textBoxNum2.Text;  //获取操作数B的字符串26             if (!Arithmetic.CheckNum(a, b)) //当数字不符合规范时,打印警告信息并退出27             {28                 MessageBox.Show("请输入符合规范的数字!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);29                 return;30             }31 32 33             Arithmetic ari = new Arithmetic(); //声明一个Arithmetic类实例。34 35             //根据单选控件选中的值来决定使用哪一个子类来初始化36             if (RadioAdd.Checked)37                 ari = new NumAdd();38             if (RadioSub.Checked)39                 ari = new NumSub();40             if (RadioMul.Checked)41                 ari = new NumMul();42             if (RadioDiv.Checked)43                 ari = new NumDiv();44 45             ari.Num1 = Convert.ToDouble(a); 46             ari.Num2 = Convert.ToDouble(b); //将两个操作数赋值给实例ari47             LabelResult.Text = ari.GetResult(); //将结果转换为字符串48         }49     }50 }

 

 

运行结果如下:

转载于:https://www.cnblogs.com/sunriseblogs/p/9936791.html

你可能感兴趣的文章
ubuntu下rar文件解压后文件名乱码
查看>>
面试题整理_04
查看>>
CentOS 7.1.1503 varnish动静分离反代用户请求
查看>>
天坑-安装salt-api安装的正确姿势
查看>>
EAPS和RRPP比较
查看>>
解决uploadify在Firefox下丢失session的问题
查看>>
BGinfo配置
查看>>
比特币不是货币
查看>>
Maven多模块项目搭建
查看>>
Linux下手动挂载新增磁盘
查看>>
自定义单元格
查看>>
汇编实现时钟设置代码理解
查看>>
企业云存储 | 为什么越来越多的NAS用户转向企业云盘?
查看>>
linux查看某个时间段的日志
查看>>
Windows上的svn仓库迁移(visualSVN)
查看>>
java,andoid安卓去掉替换字符串中的空字符空格换行等
查看>>
微软的新一代web开发工具 - WebMatrix2
查看>>
《将博客搬至CSDN》
查看>>
【安全牛学习笔记】手动漏洞挖掘(二)
查看>>
spring security reactive获取security context
查看>>