Menu
Coddy logo textTech

Resumen - Jerarquía de empleados

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 42 de 110.

challenge icon

Desafío

Fácil

Vamos a construir un sistema completo de jerarquía de empleados que reúna todos los conceptos de herencia de este capítulo. Crearás una clase base de empleado y la extenderás con roles especializados, cada uno con sus propios comportamientos únicos.

Organizarás tu código en dos archivos:

  • employee.dart: Define tu jerarquía de empleados aquí:
    • Una clase base Employee con las propiedades String name, double salary e int id. Incluye un constructor y un método getDetails() que devuelva '[name] (ID: [id]) - Salary: $[salary]'
    • Una clase Manager que extiende a Employee y añade una propiedad int teamSize. Usa parámetros super para los campos heredados. Sobrescribe getDetails() para devolver los detalles del padre seguidos de ', Team: [teamSize] members'
    • Una clase Developer que extiende a Employee y añade una propiedad String language. Sobrescribe getDetails() para devolver los detalles del padre seguidos de ', Specializes in [language]'
    • Una clase TeamLead que extiende a Developer y añade una propiedad int projectCount. Sobrescribe getDetails() para construir sobre la versión de Developer añadiendo ', Leading [projectCount] projects'
  • main.dart: Importa tu archivo de empleados y crea instancias de cada tipo de empleado:
    • Crea un Employee con el nombre 'Alice', salario 50000.0 e id 101
    • Crea un Manager con el nombre 'Bob', salario 75000.0, id 102 y teamSize 8
    • Crea un Developer con el nombre 'Carol', salario 65000.0, id 103 y lenguaje 'Dart'
    • Crea un TeamLead con el nombre 'David', salario 80000.0, id 104, lenguaje 'Python' y projectCount 3
    • Imprime el resultado de llamar a getDetails() en cada empleado, uno por línea

Observa cómo TeamLead demuestra la herencia multinivel: extiende a Developer, que a su vez extiende a Employee. Cada nivel añade sus propios detalles mientras preserva la información de las clases padre usando super.

Salida esperada:

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

Pruébalo tú mismo

import 'employee.dart';

void main() {
  // TODO: Crear un Empleado con nombre 'Alice', salario 50000.0 e id 101

  // TODO: Crear un Gerente con nombre 'Bob', salario 75000.0, id 102 y teamSize 8

  // TODO: Crear un Desarrollador con nombre 'Carol', salario 65000.0, id 103 y lenguaje 'Dart'

  // TODO: Crear un Líder de Equipo con nombre 'David', salario 80000.0, id 104, lenguaje 'Python' y projectCount 3

  // TODO: Imprimir getDetails() para cada empleado, uno por línea
}

Todas las lecciones de Programación Orientada a Objetos