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() разработчика
    }
}

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