首页 > 解决方案 > WPF C# 和适当的体系结构

问题描述

我一直在尝试实现我认为非常基本的面向学校、班级和学生的 OOP 实现。

在这种情况下,我正在与一所学校合作,其中包含一个独特课程的列表<>,每个课程都包含一个独特学生的列表<>(每所学校只有一个名为 Jack/Amber/Paul 的学生,每个学生只参加一节课)。

在此处输入图像描述

这很容易实现。当我尝试制作可编辑的 WPF 时,我的担忧出现了。

我想创建一个 WPF,允许用户创建班级和学生,修改有关他们的数据,并删除他们。我的问题是,我不知道它应该在层次结构中的哪个位置。

我不知道每个班级和学生是否应该控制他们自己的弹出窗口来编辑他们的对象,或者是否应该有一个控制器来管理从学校开始的所有事情(似乎有点过头了)。

Static class SCHOOL()
{
    List<CLASS> classes = new List<CLASS>();


}

public class CLASS()
{
    List<STUDENT> classes = new List<STUDNET>();
}

public class STUDENT()
{
    public STUDNET()
    {
        /* Open POP-UP which gives the user the
        ability to set the name, gpa, etc... of the student */
    }

    public void modifyData()
    {
        /* Open POP-UP which gives the user 
        the ability to set the name, gpa, etc... of the student */
    }
}

我以正确的方式接近这个吗?

标签: c#wpfooparchitecture

解决方案


您并没有真正向我们提供有关您建议完全评论的足够信息,但是您的代码表明您的方法肯定有问题。

类喜欢School并且Student应该有任何编辑、弹出窗口(我假设您的意思是详细信息窗口)等知识。模型类应该只包含与类本身特别相关的数据(例如公共和私有变量)和行为(方法)。例如,如果一个班级有一个学生列表的公共属性,您可以添加一个方法来返回该班级的学生人数。尽管这个例子有点无意义,但它可以证明类的行为应该只与模型相关。Class

相比之下,编辑数据的方法(例如弹出窗口)特定于使用该类的应用程序。你不想让班级知道这件事。

希望有帮助。

顺便说一句,对您的代码的一些小评论......

  • 通用标准是类名和公共方法/属性使用 CamelCase,例如SchoolStudent。大写是非标准的,应该避免

  • Class对于一个类来说,这是一个非常糟糕的名称选择,因为它是一个保留字(小写),并且可能会引起混淆。


推荐阅读