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.
Desafío
FácilVamos 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
Employeecon las propiedadesString name,double salaryeint id. Incluye un constructor y un métodogetDetails()que devuelva'[name] (ID: [id]) - Salary: $[salary]' - Una clase
Managerque extiende aEmployeey añade una propiedadint teamSize. Usa parámetros super para los campos heredados. SobrescribegetDetails()para devolver los detalles del padre seguidos de', Team: [teamSize] members' - Una clase
Developerque extiende aEmployeey añade una propiedadString language. SobrescribegetDetails()para devolver los detalles del padre seguidos de', Specializes in [language]' - Una clase
TeamLeadque extiende aDevelopery añade una propiedadint projectCount. SobrescribegetDetails()para construir sobre la versión deDeveloperañadiendo', Leading [projectCount] projects'
- Una clase base
main.dart: Importa tu archivo de empleados y crea instancias de cada tipo de empleado:- Crea un
Employeecon el nombre'Alice', salario50000.0e id101 - Crea un
Managercon el nombre'Bob', salario75000.0, id102y teamSize8 - Crea un
Developercon el nombre'Carol', salario65000.0, id103y lenguaje'Dart' - Crea un
TeamLeadcon el nombre'David', salario80000.0, id104, lenguaje'Python'y projectCount3 - Imprime el resultado de llamar a
getDetails()en cada empleado, uno por línea
- Crea un
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 projectsPrué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
1Fundamentos de POO
Archivos externosLibrerías e importacionesIntroducción a la POOClases vs. ObjetosLa palabra clave thisMétodosVariables de instanciaConceptos básicos de constructoresResumen - Calculadora sencilla4Seguridad de nulos
Introducción a la seguridad de nulosNulables vs No nulablesLos operadores ? y !Palabra clave Late y Null SafetyOperadores Null-awareNull Safety en clasesResumen - Sistema de perfil de usuario7Clases abstractas e interfaces
Clases abstractasMétodos abstractosInterfaces en DartInterfaces implícitasImplementar vs. ExtenderInterfaces múltiplesRepaso - Calculadora de figuras10Colecciones y Genéricos
Visión general de List, Set y MapColecciones con seguridad de tiposClases genéricasMétodos genéricosRestricciones genéricasIterable e IteratorResumen - Almacenamiento genérico2Constructores en Dart
Constructor por defectoConstructores nombradosListas de inicializaciónConstructores constantesConstructores de fábricaConstructores de redireccionamientoResumen - Constructor de formas5Encapsulamiento
Miembros públicos vs. privadosLa convención del prefijo _Privacidad a nivel de libreríaProfundidad en Getters y SettersOcultamiento de informaciónResumen - Registros de estudiantes8Mixins
Introducción a los MixinsCreación de MixinsUso de múltiples MixinsPalabra clave on en MixinsMixin vs HerenciaMixin vs InterfazResumen - Sistema Animal11Métodos especiales
Sobrescritura de toString()Sobrescritura de hashCode y ==Interfaz ComparableMétodo call()Sobrescritura de noSuchMethodResumen - Colección personalizada14Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy3Propiedades de clase
Miembros de instancia vs. estáticosCampos Final y ConstVariables LateMétodos y campos estáticosGetters y SettersResumen - Gestor de cuentas bancarias6Herencia
Herencia básicaLa palabra clave superSobrescritura de métodosLa anotación @overrideLa palabra clave final en clasesConstructores y herenciaResumen - Jerarquía de empleados9Polimorfismo
Fundamentos del polimorfismoPolimorfismo mediante interfacesComprobación de tipos en tiempo de ejecuciónLos operadores is y asPalabra clave covariantResumen - Procesador de pagos12POO Asíncrona
Futures y async/awaitFundamentos de StreamsStream ControllersConstructores asíncronosAsincronía en métodos de claseRepaso - Data Fetcher15Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository