Member 10702787 Ответов: 3

Как использовать интерфейс для 3 таблиц сотрудник, город и отдел?


В классе Employee я определил следующие свойства :

public class Employee
    {
        private int m_emp_id;

        public int emp_id
        {
            get { return m_emp_id; }
            set { m_emp_id = value; }
        }

        private String m_emp_Name;

        public String emp_Name
        {
            get { return m_emp_Name; }
            set { m_emp_Name = value; }
        }

        private DateTime m_emp_joiningdate;

        public DateTime emp_joiningdate
        {
            get { return m_emp_joiningdate; }
            set { m_emp_joiningdate = value; }
        }

        private DateTime m_emp_DOB;

        public DateTime emp_DOB
        {
            get { return m_emp_DOB; }
            set { m_emp_DOB = value; }
        }

        private int m_emp_cityId;

        public int emp_CityId
        {
            get { return m_emp_cityId; }
            set { m_emp_cityId = value; }
        }

        private int m_emp_DeptId;

        public int emp_DeptId
        {
            get { return m_emp_DeptId; }
            set { m_emp_DeptId = value; }
        }

        private int m_emp_DesignationId;

        public int emp_DesignationId
        {
            get { return m_emp_DesignationId; }
            set { m_emp_DesignationId = value; }
        }

        private int m_emp_SalaryAmount;

        public int emp_SalaryAmount
        {
            get { return m_emp_SalaryAmount; }
            set { m_emp_SalaryAmount = value; }
        }
    }


В городском классе у меня есть недвижимость :

public class City
    {
        private int m_city_id;

        public int city_id
        {
            get { return m_city_id; }
            set { m_city_id = value; }
        }

        private String m_city_name;

        public String city_name
        {
            get { return m_city_name; }
            set { m_city_name = value; }
        }

    }


Еще один класс, который у меня есть, - это отдел :

public class Department
   {
       private int m_dept_id;

       public int dept_id
       {
           get { return m_dept_id; }
           set { m_dept_id = value; }
       }

       private String m_dept_name;

       public String dept_name
       {
           get { return m_dept_name; }
           set { m_dept_name = value; }
       }

   }


То, что я хочу сделать теперь я хочу использовать множественное наследование, где работник является производным класса и отдела, и город несколько базовых классов, и я не хочу, чтобы определить emp_cityId,свойства emp_departmentId в класс employee с помощью интерфейса.

Что я уже пробовал:

Я новичок в интерфейсе, поэтому у меня нет большого представления, как начать с этой проблемы.

3 Ответов

Рейтинг:
22

OriginalGriff

Из чего вы собираетесь вывести сотрудника? Это не город, это не департамент.
Подумайте об этом логически: сотрудник работает в городе, он работает в отделе. Многие сотрудники будут работать в одном городе, многие-в одном отделе. Но это не означает, что здесь есть какое-либо наследование или что есть какой-либо интерфейс, который был бы уместен здесь.
Возможно, у вас есть интерфейсные или производные возможности для того, чтобы "сотрудник" был базовым классом для рабочих классов "менеджер" и "цеховой", но попытка принудить "наследование" там, где оно действительно неприменимо, просто усложнит ваш дизайн, а не упростит его.

И кроме того, даже если ваш "принудительный" сотрудник реализует интерфейс "ICity", это все равно не означает, что ваш код не должен заполнять фактический город, в котором он работает, каждый раз - на самом деле вы не можете этого сделать, потому что вы не можете создать экземпляр интерфейса!

Я думаю, вам нужно вернуться к своим материалам для чтения и освежить в памяти то, что такое интерфейсы - это контракт, а не класс!


CPallini

5.

Maciej Los

5ed!

Рейтинг:
2

Maciej Los

В дополнение к решению №1 by OriginalGriff[^], я бы предложил переместить некоторые свойства из Employee класс в другой класс, например: EmployementDetails... Есть: Salary, Department и т. д. , Потому что ни то, ни другое Salary ни Department опишите ситуацию Employee.

Предполагая, что класс City используется для хранения адреса сотрудника, вы должны добавить дополнительные сведения, такие как: Zip, State...
Обратите внимание, что 1 сотрудник может иметь 1 или более адресов. Что это значит для вас? Один City класс должен содержать EmpId а не наоборот!

Наконец Примечание: Строка[^] это не то же самое, что строка[^] в C#. Перейдите по ссылкам, чтобы узнать, почему.

Цитата:
string это псевдоним для String в .NET Framework.


Рейтинг:
1

Gerry Schmitz

Интерфейсы на данном этапе не применяются.

Вы пытаетесь установить здесь "отношения".

Вы можете добавить "внешние ключи" (например. Работник.DepartmentId); или используйте явные классы отношений (например, класс EmployeeDepartment ... связывание сотрудника и отдела).

Аналогичным образом можно определить и отношения между городом и департаментом.