这是我创建的代码,用于在我的数据库中显示datagridview上的所有数据,它工作正常。但我希望将其转换为面向对象的编程,意味着此表单仅用于调用方法,并且该方法是从其他.cs文件创建的,但我不知道从哪里开始。可以教我如何在OOProgramming风格上做到这一点?感谢您的帮助,感谢它。
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace PreviewRecord
{
public partial class ViewPurchase : Form
{
OleDbConnection myConnection;
OleDbDataAdapter adap;
DataSet ds;
public ViewPurchase(string aa)
{
InitializeComponent();
label2.Text = aa;
}
private void ViewPurchase_Load(object sender, EventArgs e)
{
try
{
myConnection = new OleDbConnection();
myConnection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\lenovo\Desktop\DataEntry\DataEntry\Database\Purchase.accdb";
myConnection.Open();
adap = new OleDbDataAdapter("SELECT * FROM " + label2.Text, myConnection);
ds = new System.Data.DataSet();
adap.Fill(ds, "Account_Records");
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
Console.WriteLine("Exception in DBHandler", ex);
}
}
}
}
答案 0 :(得分:0)
通过面向对象的编程风格,您可能意味着使用设计模式。
您应该检查Model-View-ViewModel模式。
简单来说,MVVM使用三个文件:
答案 1 :(得分:0)
在开始实现更加可靠,面向对象设计的一个非常好的地方就是开始考虑如何以ViewPurchase
形式分离关注。目前,这门课负责很多事情:
通过从这个类中取出一些这些职责并将它们放入一个新类,你将从所需的业务逻辑中解耦 UI逻辑(你的表单类)为它提供数据。这将问题分解为两个不同的部分,这些部分更容易单独解决,而不是一次担心所有事情。当您创建这个新的业务逻辑类时,您可以在ViewPurchase
实例化时将其实例提供给private void ViewPurchase_Load(object sender, EventArgs e)
{
DataTable myData = _dataRetriever.GetData();
dataGridView1.DataSource = myData;
}
,并简单地调用它来获取您的数据:
_dataRetriever
请注意上面示例中的实例变量ViewPurchase
。理想情况下,此变量将填充在interface IDataRetriever
{
DataTable GetData();
}
class DataRetriever : IDataRetriever
{
public DataTable GetData()
{
// TODO: How do we get the data?
}
}
构造函数中并继承某种接口,以便您将来创建单元测试并单独测试您的各个类。这几乎是依赖注入背后的整个概念,这是OOP的另一个好习惯。它可能看起来像这样:
public partial class ViewPurchase : Form
{
readonly IDataRetriever _dataRetriever;
public ViewPurchase(IDataRetriever dataRetriever, string aa)
{
_dataRetriever = dataRetriever;
label2.Text = aa;
}
}
{{1}}
我知道,如果你只是想在面向对象的设计上削减思想,这可能需要很多东西,但如果你花时间尝试消化我所拥有的每一件事在这里介绍,我认为你已经发现你已经熟悉了核心概念 - 它只是在学习将它们组合在一起的新方法!我们在这里真正做的就是创建小班,然后从他们那里编写更大的单元。
我希望这个答案有助于学习面向对象编程,并且好运!“