Menu
Coddy logo textTech

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

Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 42 из 110.

challenge icon

Задание

Легко

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

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

  • employee.dart: Определите здесь вашу иерархию сотрудников:
    • Базовый класс Employee со свойствами String name, double salary и int id. Включите конструктор и метод getDetails(), который возвращает '[name] (ID: [id]) - Salary: $[salary]'
    • Класс Manager, который расширяет Employee и добавляет свойство int teamSize. Используйте супер-параметры для унаследованных полей. Переопределите getDetails(), чтобы он возвращал детали родителя, за которыми следует ', Team: [teamSize] members'
    • Класс Developer, который расширяет Employee и добавляет свойство String language. Переопределите getDetails(), чтобы он возвращал детали родителя, за которыми следует ', Specializes in [language]'
    • Класс TeamLead, который расширяет Developer и добавляет свойство int projectCount. Переопределите getDetails(), чтобы дополнить версию Developer, добавив в конец ', Leading [projectCount] projects'
  • main.dart: Импортируйте файл с сотрудниками и создайте экземпляры каждого типа сотрудников:
    • Создайте Employee с именем 'Alice', зарплатой 50000.0 и id 101
    • Создайте Manager с именем 'Bob', зарплатой 75000.0, id 102 и teamSize 8
    • Создайте Developer с именем 'Carol', зарплатой 65000.0, id 103 и языком 'Dart'
    • Создайте TeamLead с именем 'David', зарплатой 80000.0, id 104, языком 'Python' и projectCount 3
    • Выведите результат вызова getDetails() для каждого сотрудника, по одному в строке

Обратите внимание, как TeamLead демонстрирует многоуровневое наследование — он расширяет Developer, который, в свою очередь, расширяет Employee. Каждый уровень добавляет свои детали, сохраняя информацию из родительских классов с помощью super.

Ожидаемый вывод:

Alice (ID: 101) - Salary: $50000.0, Team: 8 members
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projects

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

import 'employee.dart';

void main() {
  // TODO: Создайте Employee с name 'Alice', salary 50000.0 и id 101

  // TODO: Создайте Manager с name 'Bob', salary 75000.0, id 102 и teamSize 8

  // TODO: Создайте Developer с name 'Carol', salary 65000.0, id 103 и language 'Dart'

  // TODO: Создайте TeamLead с name 'David', salary 80000.0, id 104, language 'Python' и projectCount 3

  // TODO: Выведите getDetails() для каждого сотрудника, по одному в строке
}

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