c# - 如何分离类和命名技术逻辑?

标签 c# oop

这是一个员工调用系统。

到目前为止,我有 3 个类(class):Person Manager 和 Manager team。

Person 是基类,Manager 是能够访问权限以使用 ManagerTeam 类创建新员工的类。

为了简单起见,我将跳过一些 person 类。

class Person
{
    private string firstName;
    private string lastName;
    private string phone;

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }
}

class Manager : Person
{
    private string Position;

    public Manager() : base()
    {
        Position = "Manager";
    }
    /* 
     * later on maybe some sort of regulation for creating new manager 
     * or new person with acabailities here 
     */
}

class ManagerTeam : Manager
{
    private string Shifts;
    private string On_Call;
    string[] Employee_list = new string[5];

    /*  
     *  maybe this should be turned into a funciton to insert all employees from 
     *  "CreateNewEmployees" into the array. 
     */
    public ManagerTeam() : base() 
    {
        /* 
         * this calls for another object being person to be assigned into 
         * an array for person. 
         */
    }

    static MangerTeam CreateNewEmployee()   /* change this is constructor */
    {
        /* 
         * this assigns shift times and checks if on call and any data 
         * to an employee 
         */
    }
}

我很困惑,因为我认为哪个应该是构造函数,哪个应该只是将新员工的对象加载到员工列表的数组中的功能,经理出于多种原因应该访问这些对象以便稍后实现。稍后的目标是添加员工类,该员工类将能够接受和拒绝请求,该信息在开发时也将进入经理团队。

最佳答案

OOP 中的继承通常意味着“is-a”关系。在您的例子中,"is"ManagerTeamManager 吗?在不知道 ManagerTeam 的目的的情况下很难说,但仅凭名称我猜不是。所以继承在您的设计中可能不是正确的选择。

在构造函数与方法方面,考虑有效对象的要求。如果经理需要让员工正常工作,那么它应该在构造函数中,否则一个单独的方法是合适的。

关于c# - 如何分离类和命名技术逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46917158/

相关文章:

c# - PropertyChangedEventManager : AddHandler vs AddListener

c# - 即使我调用 CloudBlob.SetMetadata,Blob 元数据也不会保存

c# - 如何按特定顺序运行多个事件?

swift - 从常规方法调用协议(protocol)默认实现

java - 将调用哪个 super 构造函数?如果我不在子类中调用 super 构造函数,是否仍然会调用 super 构造函数?

Python自动备忘

c++ - 类型为 "const char *"的值不能分配给类型为 "char"的实体 C OOP

c# - 将超链接插入 WebGrid

c# - 在 SqlCommand 中传递数组参数

c# - 如何在没有 foreach 的情况下将项目从列表复制到列表?