一、封裝
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///Class1 的摘要說明
/// </summary>
public class Calculator
{
public Calculator()
{
//
//TODO: 在此處添加構造函數邏輯
}
public abstract class Calculator
public abstract double But(double a, double b);
public class Add : Calculator //接口法運算
public override double But(double a, double b) //重寫
{
double result = 0;
result = a + b;
return result;
}
public class Sub : Calculator
public override double But(double a, double b)
result = a - b;
public class Mul : Calculator
result = a * b;
public class Div : Calculator
result = a / b;
public class Every //定義運算符
private Calculator calculate = null; //執行個體化一個基類的引用對象
public Every(Calculator ca) //calculator為派生類的一個對象
this.calculate = ca; //把派生類的對象賦給基類的引用對象
public double But(double a, double b, String c)
return this.calculate.But(a, b); //傳回計算結果
}
二、背景代碼
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
protected void Button1_Click(object sender, EventArgs e)
string c = DropDownList1.SelectedItem.ToString();
double a = Convert.ToDouble(TextBox1.Text);
double b = Convert.ToDouble(TextBox2.Text);
Every every =null;
if (DropDownList1.SelectedIndex == 1)
{
every = new Every(new Add());
}
else if (DropDownList1.SelectedIndex == 2)
every = new Every(new Sub());
}
else if (DropDownList1.SelectedIndex == 3)
{
every = new Every(new Mul());
else if (DropDownList1.SelectedIndex == 4) {
every = new Every(new Div());
string answer = every.But(a, b, c).ToString();
string result = TextBox1.Text + DropDownList1.SelectedItem.ToString() + TextBox2.Text;
if (TextBox3.Text == answer)
Response.Write("<script>alert('回答正确!')</script>");
ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim());
else
Response.Write("<script>alert('答題錯誤!')</script>");
ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim());
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
三、實作
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5iN4kzM5ATN5MTMtMDOyYTNzUDNxYDMyETNxAjMtEzN3ITM48CXyETNxAjMvwVM3cjMxgzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.jpg)
總結:做了這兩次作業我總結出來面向對象程式設計,并不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的對象的抽象集合才是類。
總體感受就那麼多,其實還是對這些模式不熟悉不了解,還要好好學