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 extienda deEmployeey añada 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 extienda deEmployeey añada una propiedadString language. SobrescribegetDetails()para devolver los detalles del padre seguidos de', Specializes in [language]' - Una clase
TeamLeadque extienda deDevelopery añada 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 de Developer, que a su vez extiende de Employee. Cada nivel añade sus propios detalles mientras preserva la información de las clases padres usando super.
Salida esperada:
Alice (ID: 101) - Salary: $50000.0
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: Crea un Employee con name 'Alice', salary 50000.0 e id 101
// TODO: Crea un Manager con name 'Bob', salary 75000.0, id 102 y teamSize 8
// TODO: Crea un Developer con name 'Carol', salary 65000.0, id 103 y language 'Dart'
// TODO: Crea un TeamLead con name 'David', salary 80000.0, id 104, language 'Python' y projectCount 3
// TODO: Imprime 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