2014-11-19 3 views
0

Я хочу создать класс для иерархии сотрудников и супервизора для утверждения заказа на поставку. Здесь я создаю три класса: 1) Класс человека 2) Класс сотрудника 3) Класс супервизора класс человека состоит из имени человека, это лицо будет назначаться в качестве сотрудника или руководителя в своем рабочем классе и классе супервизора соответственно. Проблема возникает здесь, когда надзорный надзор также имеет надзирателя над ним, в результате чего я не могу снова создать надзирателя в качестве сотрудника. не могли бы вы сообщить мне, как я могу создать структуру одобрения, так что даже если надзорный надзор над ним надзорен, он сможет утвердить заказ на поставку.Структура для утверждения иерархии руководителя сотрудника

Благодарность & С уважением, Yogesh

+0

Подсказка: думаю, что наследование интерфейса, а не наследование классов. –

ответ

0

Лучшим способом выложить дизайн класса является использование "IS A" тест.

Сотрудник «Является человеком», поэтому класс сотрудника должен расширить человеческий класс.

Сотрудник надзора «IS A», поэтому класс супервизора должен расширить класс сотрудника.

Что касается диспетчера с супервизором, надзорный орган должен быть полем в классе сотрудника, таким образом, каждый сотрудник (и помните сотрудника-наблюдателя «IS A») имеет супервизора.

Теперь в вашем классе сотрудника вы можете иметь метод processPurchase(), который проверяет его супервизор, а затем в классе супервизора вы можете переопределить этот метод, чтобы его не нужно было проверять со своим супервизором.

Если супервизор должен проверить со своим руководителем, структура класса останется прежней, однако метод будет немного иным. В методе processPurchase() для сотрудника он просто попросит своего руководителя обработать его. Однако, в processPurchase супервизора(), он должен был бы проверить, если он имеет супервизора, а затем действовать соответственно, так и в полу-псевдо-код:

public class Supervisor extends Employee { 

    //constructor 
    public Supervisor(){}; 

    public processOrder(){ 
     if(this.getSupervisor() == null){ 
      //Don't have a supervisor, send out the order 
     } else { 
      this.getSupervisor().processOrder(); 
     } 
    } 
} 

Помните, что класс Employee должен содержать поле супервизора и методы доступа, а затем класс Supervisor наследует их

+0

Привет, Бен, проблема не в состоянии создать заказ на поставку с пользователем супервизора, я могу создать его только с пользователем сотрудника. не могли бы вы рассказать мне, какая структура должна быть такой, чтобы заказ на покупку также мог быть создан у пользователя супервизора, и он далее переходит к своему начальнику для утверждения. –

+0

Спасибо большое Бен ...... я думаю, что это сработает ..... –

+0

Если у вас есть ответ, не забудьте нажать галочку, чтобы принять его –

Смежные вопросы