c# - 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 */
}
}
我以正确的方式接近这个吗?
解决方案
您并没有真正向我们提供有关您建议完全评论的足够信息,但是您的代码表明您的方法肯定有问题。
类喜欢School
并且不Student
应该有任何编辑、弹出窗口(我假设您的意思是详细信息窗口)等知识。模型类应该只包含与类本身特别相关的数据(例如公共和私有变量)和行为(方法)。例如,如果一个班级有一个学生列表的公共属性,您可以添加一个方法来返回该班级的学生人数。尽管这个例子有点无意义,但它可以证明类的行为应该只与模型相关。Class
相比之下,编辑数据的方法(例如弹出窗口)特定于使用该类的应用程序。你不想让班级知道这件事。
希望有帮助。
顺便说一句,对您的代码的一些小评论......
通用标准是类名和公共方法/属性使用 CamelCase,例如
School
等Student
。大写是非标准的,应该避免Class
对于一个类来说,这是一个非常糟糕的名称选择,因为它是一个保留字(小写),并且可能会引起混淆。
推荐阅读
- c++ - 如果密钥容器不可用,如何停止从微型驱动程序的 NCryptOpenKey 中显示智能卡选择对话框
- android-paging - 如何在将项目插入 PagedListAdapter 后正确滚动
- python - Python 中的无限 for 循环,如 C++
- javascript - JQuery onClick 用类激活页面上的每个元素
- mongodb - 使用游标或解释时 MongoDB 聚合崩溃
- css - 重用许多对象的集合,但现在为每个对象分配一个单独的不透明度,而不复制所有代码?
- php - 如何从 laravel php 中的特定列从数据库中检索自定义数据
- reactjs - 我应该在 React 中将表示层与应用层分开吗?
- r - 安装 R Shiny 的问题
- python - 如何从主脚本同时运行两个 python 脚本