关于创建 类 和方法以及从表单访问这些方法的问题

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 或将鼠标悬停在变量上。