关于创建 类 和方法以及从表单访问这些方法的问题
Questions on creating Classes & Methods and on accessing these Methods from a Form
我相信在座的很多人会发现这样做相当简单,所以对一些事情的解释会很酷。这是介绍 class 的作业,因此最简单的解决方案就足够了。目标是创建一个令牌机器 class 和其中的方法。然后在 Windows 表单应用程序中访问这些方法。表单应用程序有 2 个文本框,一个用于季度数,另一个用于令牌数和 2 个按钮。第一个是 Get Token 按钮,它将在季度值上加一并从令牌值中减去一个。第二个是重置按钮,它将 quarters 的值设置为 0,将 tokens 的值设置为 100。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TokenMachine
{
public partial class Form1 : Form
{
// class level reference to a token machine
private TokenMachine tm;
public Form1()
{
// create a token machine object
InitializeComponent();
tm = new TokenMachine();
tm.Reset();
此时我创建了 class TokenMachine,没有问题
}
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void buttonGetToken_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
}
}
创建 class 后,我有些困惑。为了更清楚起见,我将 post 我的 UML Class 图。
![TokenMachine UML Diagram][1]
这是我目前得到的。
这不是一个答案,我只是不知道 post 其余答案在哪里。我显然遇到了一些格式问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TokenMachine
{
class TokenMachine
{
private int numTokens = 0;
private int numQuarters = 0;
现在我创建一个构造函数来初始化 TokenMachien 的数据成员
public TokenMachine()
{
numTokens = 100;
numQuarters = 0;
}
现在介绍 GetToken 方法。我在这里的困惑是这个方法到底应该是什么样子。同样,此方法将添加 1 个季度并减去一个令牌。
public int? void? GetToken(are there parameters required for this type of method?)
{
}
接下来我们有 CountTokens 方法,它 returns 机器中的令牌数量。 public ???? CountTokens(??, ??) { }
CountQuarters 方法,returns 机器中的四分之一数。
public ???? CountQuarters(??, ??)
{
}
最后是 Reset 方法,它会移除所有 25 美分并用代币填充机器。为此 class 我们将假设机器持有 100 个令牌。
public ???? Reset(??, ??)?????????
{
????????????????????????????
}
这是我第一次创建 class 和其中的方法。从我的表单访问这些方法似乎不会造成问题,因为我之前已经这样做过。
编写这些方法的正确格式是什么。即 GetToken() CountTokens() CountQUarters() 主要是 Reset()
public void GetToken()
{
numQuarters++; // ++ 'is increase by one', guess what -- will do
numTokens--;
}
public int CountTokens()
{
return numTokens;
}
public void Reset()
{
numQuarters = 0;
numTokens = 100;
}
FYIs void
表示不要 return 来自此方法的值,将 void
替换为类型 int, string, double, Object, Form
是 return 此类型来自方法。
private void buttonGetToken_Click(object sender, EventArgs e)
{
tm.GetToken();
}
private void button2_Click(object sender, EventArgs e)
{
TheNameOfYuorTextBox.Text = tm.CountTokens().ToString();
}
编辑:
您建议的修改。调用 tm.GetTokens()
和 tm.GetQuaters()
而不将它们 return 的值分配给任何东西,是没有意义的。
并且创建一个新的 TokenMachine
,然后调用 'Reset' 如果 TokenMachine
构造函数设置了值则毫无意义。
要使用断点,请在您的一种按钮单击方法中单击边距以便出现红点,然后启动并单击该按钮。整个程序将暂停在那一行代码(但不会执行那行代码),然后您可以检查变量的值,右键单击并说 QuickWatch
或将鼠标悬停在变量上。
我相信在座的很多人会发现这样做相当简单,所以对一些事情的解释会很酷。这是介绍 class 的作业,因此最简单的解决方案就足够了。目标是创建一个令牌机器 class 和其中的方法。然后在 Windows 表单应用程序中访问这些方法。表单应用程序有 2 个文本框,一个用于季度数,另一个用于令牌数和 2 个按钮。第一个是 Get Token 按钮,它将在季度值上加一并从令牌值中减去一个。第二个是重置按钮,它将 quarters 的值设置为 0,将 tokens 的值设置为 100。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TokenMachine
{
public partial class Form1 : Form
{
// class level reference to a token machine
private TokenMachine tm;
public Form1()
{
// create a token machine object
InitializeComponent();
tm = new TokenMachine();
tm.Reset();
此时我创建了 class TokenMachine,没有问题 }
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void buttonGetToken_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
}
}
创建 class 后,我有些困惑。为了更清楚起见,我将 post 我的 UML Class 图。
![TokenMachine UML Diagram][1]
这是我目前得到的。
这不是一个答案,我只是不知道 post 其余答案在哪里。我显然遇到了一些格式问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TokenMachine
{
class TokenMachine
{
private int numTokens = 0;
private int numQuarters = 0;
现在我创建一个构造函数来初始化 TokenMachien 的数据成员
public TokenMachine()
{
numTokens = 100;
numQuarters = 0;
}
现在介绍 GetToken 方法。我在这里的困惑是这个方法到底应该是什么样子。同样,此方法将添加 1 个季度并减去一个令牌。
public int? void? GetToken(are there parameters required for this type of method?)
{
}
接下来我们有 CountTokens 方法,它 returns 机器中的令牌数量。 public ???? CountTokens(??, ??) { }
CountQuarters 方法,returns 机器中的四分之一数。
public ???? CountQuarters(??, ??)
{
}
最后是 Reset 方法,它会移除所有 25 美分并用代币填充机器。为此 class 我们将假设机器持有 100 个令牌。
public ???? Reset(??, ??)?????????
{
????????????????????????????
}
这是我第一次创建 class 和其中的方法。从我的表单访问这些方法似乎不会造成问题,因为我之前已经这样做过。 编写这些方法的正确格式是什么。即 GetToken() CountTokens() CountQUarters() 主要是 Reset()
public void GetToken()
{
numQuarters++; // ++ 'is increase by one', guess what -- will do
numTokens--;
}
public int CountTokens()
{
return numTokens;
}
public void Reset()
{
numQuarters = 0;
numTokens = 100;
}
FYIs void
表示不要 return 来自此方法的值,将 void
替换为类型 int, string, double, Object, Form
是 return 此类型来自方法。
private void buttonGetToken_Click(object sender, EventArgs e)
{
tm.GetToken();
}
private void button2_Click(object sender, EventArgs e)
{
TheNameOfYuorTextBox.Text = tm.CountTokens().ToString();
}
编辑:
您建议的修改。调用 tm.GetTokens()
和 tm.GetQuaters()
而不将它们 return 的值分配给任何东西,是没有意义的。
并且创建一个新的 TokenMachine
,然后调用 'Reset' 如果 TokenMachine
构造函数设置了值则毫无意义。
要使用断点,请在您的一种按钮单击方法中单击边距以便出现红点,然后启动并单击该按钮。整个程序将暂停在那一行代码(但不会执行那行代码),然后您可以检查变量的值,右键单击并说 QuickWatch
或将鼠标悬停在变量上。