Resumen - Jerarquía de empleados
Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy. Lección 27 de 87.
Desafío
FácilConstruyamos un sistema completo de jerarquía de empleados que reúna todos los conceptos de herencia de este capítulo. Crearás una estructura empresarial en la que distintos tipos de empleados compartan atributos comunes, pero tengan sus propios comportamientos especializados.
Organizarás tu código en cuatro archivos:
Employee.java: Crea la clase base que todos los empleados comparten. Cada empleado tiene un nombre y un salario. Incluye un constructor que inicialice ambos campos y un métodogetDetails()que devuelva:[name] earns $[salary]. Añade también un métodowork()que muestre:[name] is working.Manager.java: Crea una clase que extienda Employee. Los gerentes tienen un campo adicionalteamSizeque representa a cuántas personas gestionan. Usasuperpara encargarte de la inicialización de la clase padre. Sobrescribe el métodowork()para mostrar:[name] is managing a team of [teamSize]. Añade un métodogetManagerDetails()que devuelva:Manager: [name] earns $[salary], Team size: [teamSize].Developer.java: Crea otra clase que extienda Employee. Los desarrolladores tienen un campolanguagepara su especialidad de programación. De nuevo, usasuperpara la parte correspondiente a la clase padre. Sobrescribework()para mostrar:[name] is coding in [language]. Añade un métodogetDeveloperDetails()que devuelva:Developer: [name] earns $[salary], Language: [language].Main.java: Reúne todo aquí. Recibirás cinco entradas: el nombre de un empleado, el salario, el tamaño del equipo del gerente, otro nombre y un lenguaje de programación para el desarrollador. Crea un Manager y un Developer; después, para cada uno, llama a su método de detalles especializado seguido de su métodowork().
Recibirás cinco entradas en este orden: nombre del gerente (String), salario del gerente (double), tamaño del equipo (int), nombre del desarrollador (String) y lenguaje de programación (String). Usa un salario de 75000.0 para el desarrollador.
Da formato a todos los valores salariales con 2 decimales utilizando String.format("%.2f", salary). Tu salida debe mostrar cuatro líneas en total: los detalles y el comportamiento laboral del gerente, seguidos de los detalles y el comportamiento laboral del desarrollador.
Pruébalo tú mismo
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leer las entradas
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // consumir el salto de línea
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// El salario del Developer está fijado en 75000.0
double developerSalary = 75000.0;
// TODO: Crear un objeto Manager con managerName, managerSalary y teamSize
// TODO: Crear un objeto Developer con developerName, developerSalary y language
// TODO: Imprimir los detalles del manager usando getManagerDetails()
// TODO: Llamar al método work() del manager
// TODO: Imprimir los detalles del developer usando getDeveloperDetails()
// TODO: Llamar al método work() del developer
}
}
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosIntroducción a la OOPClases vs. ObjetosLa palabra clave thisMétodosCampos (Atributos)Método constructorSobrecarga de constructoresResumen - Calculadora simple4Herencia
Herencia básica (extends)La palabra clave superSobrescritura de métodos (@Override)Encadenamiento de constructoresLa clase ObjectHerencia simple y multinivelPor qué no hay herencia múltiple de clasesResumen - Jerarquía de empleados7Métodos especiales y la clase Object
Método toString()equals() y hashCode()Método clone()compareTo() y ComparableInterfaz ComparatorResumen - Ordenamiento personalizado2Modificadores de acceso y encapsulamiento
Visión general de los niveles de accesoMétodos Getter y SetterOcultamiento de informaciónLa palabra clave finalResumen - Gestor de cuentas bancarias5Polimorfismo
Fundamentos de sobrecarga de métodosSobrescritura de métodos (tiempo de ejecución)Upcasting y DowncastingEl operador instanceofClases y métodos abstractosResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaAgregación vs. ComposiciónClases internas, anidadas y anónimasEnums y métodos de EnumRecords (Java 16+)Clases selladas (Java 17+)11Patrones de diseño - Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón BuilderPatrón ObserverPatrón Strategy3Propiedades de clase y miembros estáticos
Variables de instancia vs. estáticasMétodos estáticosBloques estáticosConstantes (static final)Repaso - Contador y utilidad6Interfaces y Clases Abstractas
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesMétodos Default y Static en InterfacesClases Abstractas vs InterfacesInterfaces FuncionalesResumen - Sistema de Pagos9Genéricos
Introducción a los genéricosClases genéricasMétodos genéricosParámetros de tipo delimitadosComodines (?, extends, super)Resumen - Contenedor genérico12Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón IteratorPractica por tu cuenta: Compilador de Java online