Menu
Coddy logo textTech

Итоги — Иерархия сотрудников

Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy. Урок 27 из 87.

challenge icon

Задание

Легко

Давайте создадим полную систему иерархии сотрудников, которая объединит все концепции наследования из этой главы. Вы создадите структуру компании, в которой разные типы сотрудников имеют общие атрибуты, но обладают своим специализированным поведением.

Вы организуете свой код в четырех файлах:

  • Employee.java: Создайте базовый класс, который является общим для всех сотрудников. У каждого сотрудника есть имя и зарплата. Включите конструктор, который инициализирует оба поля, и метод getDetails(), который возвращает: [name] earns $[salary]. Также добавьте метод work(), который выводит: [name] is working.
  • Manager.java: Создайте класс, который расширяет Employee. У менеджеров есть дополнительное поле teamSize, представляющее количество людей, которыми они руководят. Используйте super для обработки инициализации родительского класса. Переопределите метод work(), чтобы он выводил: [name] is managing a team of [teamSize]. Добавьте метод getManagerDetails(), который возвращает: Manager: [name] earns $[salary], Team size: [teamSize].
  • Developer.java: Создайте еще один класс, который расширяет Employee. У разработчиков есть поле language для их специализации в программировании. Снова используйте super для родительской части. Переопределите work(), чтобы метод выводил: [name] is coding in [language]. Добавьте метод getDeveloperDetails(), который возвращает: Developer: [name] earns $[salary], Language: [language].
  • Main.java: Объедините все здесь. Вы получите пять входных данных: имя сотрудника, зарплату, размер команды для менеджера, другое имя и язык программирования для разработчика. Создайте Manager и Developer, затем для каждого из них вызовите их специализированный метод получения деталей, а затем их метод work().

Вы получите пять входных данных в следующем порядке: имя менеджера (String), зарплата менеджера (double), размер команды (int), имя разработчика (String) и язык программирования (String). Используйте зарплату 75000.0 для разработчика.

Форматируйте все значения зарплаты с 2 знаками после запятой, используя String.format("%.2f", salary). Ваш вывод должен содержать всего четыре строки — детали и рабочее поведение менеджера, а затем детали и рабочее поведение разработчика.

Попробуйте сами

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Чтение входных данных
        String managerName = scanner.nextLine();
        double managerSalary = scanner.nextDouble();
        int teamSize = scanner.nextInt();
        scanner.nextLine(); // поглощение символа новой строки
        String developerName = scanner.nextLine();
        String language = scanner.nextLine();
        
        // Зарплата разработчика фиксирована и составляет 75000.0
        double developerSalary = 75000.0;
        
        // TODO: Создайте объект Manager с managerName, managerSalary и teamSize
        
        // TODO: Создайте объект Developer с developerName, developerSalary и language
        
        // TODO: Выведите данные менеджера, используя getManagerDetails()
        
        // TODO: Вызовите метод work() менеджера
        
        // TODO: Выведите данные разработчика, используя getDeveloperDetails()
        
        // TODO: Вызовите метод work() разработчика
    }
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Java