Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 28
1

Работники и менеджеры

22.08.2015, 05:54. Показов 3577. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите как решить задачу.
Вот задание
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public interface Employee {
    /**
     * @return Зарплата сотрудника на настоящий момент.
     */
    int getSalary();
 
    /**
     * Увеличивает зарплату сотрудника на заданное значение
     * @param value Значение, на которое нужно увеличить
     */
    public void increaseSalary(int value);
 
    /**
     * @return Имя сотрудника
     */
    public String getFirstName();
 
    /**
     * Устанавливает имя сотрудника
     * @param firstName Новое имя
     */
    public void setFirstName(String firstName);
 
    /**
     * @return Фамилия сотрудника
     */
    public String getLastName();
 
    /**
     * Устанавливает фамилию сотрудника
     * @param lastName Новая фамилия
     */
    public void setLastName(String lastName);
 
    /**
     * @return Имя и фамилия сотрудника, разделенные символом " " (пробел)
     */
    public String getFullName();
 
    /**
     * Устанавливает Менеджера сотрудника.
     * @param manager Сотрудник, являющийся менеджером данного сотрудника. 
     * НЕ следует предполагать, что менеджер является экземпляром класса EmployeeImpl.
     */
    public void setManager(Employee manager);
 
    /**
     * @return Имя и фамилия Менеджера, разделенные символом " " (пробел).
     * Если Менеджер не задан, возвращает строку "No manager".
     */
    public String getManagerName();
 
    /**
     * Возвращает Менеджера верхнего уровня, т.е. вершину иерархии сотрудников, 
     *   в которую входит данный сотрудник.
     * Если над данным сотрудником нет ни одного менеджера, возвращает данного сотрудника.
     * Замечание: поскольку менеджер, установленный методом {@link #setManager(Employee)},
     *   может быть экземпляром другого класса, при поиске топ-менеджера нельзя обращаться
     *   к полю класса EmployeeImpl. Более того, поскольку в интерфейсе Employee не объявлено
     *   метода getManager(), поиск топ-менеджера невозможно организовать в виде цикла.
     *   Вместо этого нужно использовать рекурсию (и это "более объектно-ориентированно").
     */
    public Employee getTopManager();
}


Вот мое решение, точнее "не решение" половины методов(не решены только те, что с комментариями),
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class EmployeeImpl implements Employee {
 
    private int salary=1000;
    private String fName, lName;
 
 
 
    @Override public String getFirstName() {
        return fName;
    }
    @Override public void setFirstName(String firstName) {
        fName=firstName;
    }
    @Override public String getLastName() {
        return lName;
    }
    @Override public void setLastName(String lastName) {
        lName=lastName;
    }
    @Override public String getFullName() {
        return fName+" "+lName;
    }
    @Override public int getSalary() {
        return salary;
    }
    @Override public void increaseSalary(int value) {
        salary+=value;
    }
 
 
    /**
     * Устанавливает Менеджера сотрудника.
     * @param manager Сотрудник, являющийся менеджером данного сотрудника.
     * НЕ следует предполагать, что менеджер является экземпляром класса EmployeeImpl.
     */
    @Override
    public void setManager(Employee manager) {
 
    }
 
    /**
     * @return Имя и фамилия Менеджера, разделенные символом " " (пробел).
     * Если Менеджер не задан, возвращает строку "No manager".
     */
    @Override
    public String getManagerName() {
 
        return null;
    }
    /**
     * Возвращает Менеджера верхнего уровня, т.е. вершину иерархии сотрудников,
     *   в которую входит данный сотрудник.
     * Если над данным сотрудником нет ни одного менеджера, возвращает данного сотрудника.
     * Замечание: поскольку менеджер, установленный методом {@link #setManager(Employee)},
     *   может быть экзепляром другого класса, при поиске топ-менеджера нельзя обращаться
     *   к полю класса EmployeeImpl. Более того, поскольку в интерфейсе Employee не объявлено
     *   метода getManager(), поиск топ-менеджера невозможно организовать в виде цикла.
     *   Вместо этого нужно использовать рекурсию (и это "более объектно-ориентированно").
     */
    @Override
    public Employee getTopManager() {
        return null;
    }
}
Насколько мне понятно, дополнительный класс создавать не нужно, тогда как создать "НЕ следует предполагать, что менеджер является экземпляром класса EmployeeImpl.", и еще как сделать зависимость сотрудника от менеджера не понимаю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2015, 05:54
Ответы с готовыми решениями:

УПП. Перенос данных из регистра сведений "Работники организации" в "Работники"
Добрый день, подскажите пожалуйста, как можно осуществить перенос данных с регл. Регистра сведений...

Требуются менеджеры
В компанию занимающуюся разработкой программного обеспечения требуются удаленные менеджеры по...

из разработчика в менеджеры
Добрый день! Ситуация: Мне 28, живу в СПБ, 6 лет занимаюсь разработкой и развитием проекта на...

Хитрые работники
На днях столкнулась с забавной ситуацией. Решила разместить вакансию на одном из работных сайтов,...

7
206 / 206 / 71
Регистрация: 25.02.2014
Сообщений: 569
22.08.2015, 08:48 2
dscience, создайте поле manager, типа Employee и записывайте значение сеттером.
1
4864 / 2663 / 913
Регистрация: 29.11.2010
Сообщений: 5,743
22.08.2015, 14:55 3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.util.Optional;
 
public class EmployeeImpl implements Employee {
 
    private int salary = 0;
    private String firstName = "";
    private String lastName = "";
    private Optional<Employee> manager = Optional.empty();
 
    @Override
    public int getSalary() {
        return salary;
    }
 
    @Override
    public void increaseSalary(int value) {
        salary += value;
    }
 
    @Override
    public String getFirstName() {
        return firstName;
    }
 
    @Override
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
 
    @Override
    public String getLastName() {
        return lastName;
    }
 
    @Override
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
 
    @Override
    public String getFullName() {
        return firstName + " " + lastName;
    }
 
    @Override
    public void setManager(Employee manager) {
        this.manager = Optional.ofNullable(manager);
    }
 
    @Override
    public String getManagerName() {
        if (manager.isPresent()) {
            return manager.get().getFullName();
        } else {
            return "No manager";
        }
    }
 
    @Override
    public Employee getTopManager() {
        if (manager.isPresent()) {
            return manager.get().getTopManager();
        }
        return this;
    }
}
1
1 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 28
22.08.2015, 23:01  [ТС] 4
В можно ли сделать без подключения

Java
1
import java.util.Optional;
?
0
1 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 28
12.12.2015, 15:45  [ТС] 5
Мало ли кому пригодится. Рабочий ответ:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class EmployeeImpl implements Employee {
 
    private int salary=1000;
    private String fName, lName;
    Employee manager;
 
 
    @Override public String getFirstName() {
        return fName;
    }
    @Override public void setFirstName(String firstName) {
        fName=firstName;
    }
    @Override public String getLastName() {
        return lName;
    }
    @Override public void setLastName(String lastName) {
        lName=lastName;
    }
    @Override public String getFullName() {
        return fName+" "+lName;
    }
    @Override public int getSalary() {
        return salary;
    }
    @Override public void increaseSalary(int value) {
        salary+=value;
    }
    @Override public void setManager(Employee manager) {
        this.manager=manager;
 
    }
    @Override public String getManagerName() {
        if(this.manager==null){
            return "No manager";
        }else return manager.getFullName();
    }
    /**
     * Возвращает Менеджера верхнего уровня, т.е. вершину иерархии сотрудников,
     *   в которую входит данный сотрудник.
     * Если над данным сотрудником нет ни одного менеджера, возвращает данного сотрудника.
     * Замечание: поскольку менеджер, установленный методом {@link #setManager(Employee)},
     *   может быть экзепляром другого класса, при поиске топ-менеджера нельзя обращаться
     *   к полю класса EmployeeImpl. Более того, поскольку в интерфейсе Employee не объявлено
     *   метода getManager(), поиск топ-менеджера невозможно организовать в виде цикла.
     *   Вместо этого нужно использовать рекурсию (и это "более объектно-ориентированно").
     */
    @Override
    public Employee getTopManager() {
        if(this.manager==null){
            return this;
        }else{
            return manager;
        }
 
    }
}
1
95 / 95 / 50
Регистрация: 07.07.2015
Сообщений: 208
12.12.2015, 16:27 6
по моему скромному мнению (не претендую на истинность), этот Ваш интерфейс - полнейшая дичь. Подумайте о построении модели с использованием солид принципов. Я бы использовал абстрактный класс.
1
1 / 1 / 0
Регистрация: 02.07.2015
Сообщений: 28
13.12.2015, 12:50  [ТС] 7
mocivan, Спасибо вам за совет, но я всего лишь выполняю задание по написанию функций обозначенных в интерфейсе, так что в данном случае менять ничего не могу )
0
95 / 95 / 50
Регистрация: 07.07.2015
Сообщений: 208
13.12.2015, 14:36 8
dscience, а что если кастомер тролль и пытается проверить тем самым уровень подготовки? )
1
13.12.2015, 14:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2015, 14:36
Помогаю со студенческими работами здесь

Записи - работники
Среди работников данного предприятия найти тех , чья зарплата ниже средней по предприятию, а также...

требуются менеджеры проектов
Какие именно заказы нужны: разработка сайтов, веб сервисов, интернет магазинов, рефакторинг...

Требуются водители и менеджеры
Требуются менеджеры для дистанционного подключения водителей по программам агрегаторов такси Убер,...

На сколько правы работники СЦ ?
Монитор стал запускаться всё дольше и дольше , доходит до трёх - четырёх часов , но если его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru