Directorio de artículos
Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia
1. El método abstracto del operador (Operación)
Definir una operación de clase abstracta como la clase padre de todos los operadores (+, -, *, /)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public abstract class Operation
{
private double num1;
private double num2;
public double Num1
{
get {
return num1; }
set {
num1 = value; }
}
public double Num2
{
get {
return num2; }
set {
num2 = value; }
}
public abstract double getResult(); // 需要重写的方法
}
}
2. Cree todas las subclases de operadores
1. Adición
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Add:Operation
{
override
public double getResult()
{
double result = Num1+ Num2;
return result;
}
}
}
2. Resta
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Sub: Operation
{
override
public double getResult()
{
double result = Num1 - Num2;
return result;
}
}
}
3. Multiplicación
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Mul: Operation
{
override
public double getResult()
{
double result = Num1 * Num2;
return result;
}
}
}
4. Clase de división
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Div:Operation
{
override
public double getResult()
{
if (Num2 != 0)
{
double result = Num1 / Num2;
return result;
}
else
{
return 0;
}
}
}
}
Tres, crea una función de fábrica
A través de la función de fábrica, un nuevo objeto de operador, obtenga el número de resultado
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class OperationFactory
{
public static Operation getOperation(String oper) //接收传入的操作符
{
switch (oper)
{
case "+": return new Add();
case "-": return new Sub();
case "*": return new Mul();
case "/": return new Div();
default:return null;
}
}
}
}
Cuarto, el efecto de página.
Aquí uso la página web para mostrar la salida.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="demo02.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.auto-style1 {
height: 24px;
width: 932px;
}
.auto-style2 {
height: 24px;
width: 191px;
}
.auto-style3 {
width: 191px;
}
.auto-style4 {
height: 24px;
width: 70px;
}
.auto-style5 {
width: 70px;
}
.auto-style6 {
width: 932px;
}
.auto-style7 {
width: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="auto-style7">
<tr>
<td class="auto-style2">
<asp:TextBox ID="num1" runat="server" type="number" ></asp:TextBox>
</td>
<td class="auto-style4">
<asp:DropDownList ID="opers" runat="server">
<asp:ListItem>+</asp:ListItem>
<asp:ListItem>-</asp:ListItem>
<asp:ListItem>*</asp:ListItem>
<asp:ListItem>/</asp:ListItem>
</asp:DropDownList>
</td>
<td class="auto-style1">
<asp:TextBox ID="num2" type="number" runat="server"></asp:TextBox>
=
<asp:Label ID="result" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style3"> </td>
<td class="auto-style5"> </td>
<td class="auto-style6"> </td>
</tr>
<tr>
<td class="auto-style3"> </td>
<td class="auto-style5"> </td>
<td class="auto-style6">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="计算" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>