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á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 estructura de empresa donde diferentes tipos de empleados comparten atributos comunes pero tienen 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]. También añade un métodowork()que imprima:[name] is working.Manager.java: Crea una clase que extienda de Employee. Los gerentes tienen un campo adicionalteamSizeque representa a cuántas personas dirigen. Usasuperpara manejar la inicialización del padre. Sobrescribe el métodowork()para que imprima:[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 de Employee. Los desarrolladores tienen un campolanguagepara su especialidad de programación. Nuevamente, usasuperpara la parte del padre. Sobrescribework()para que imprima:[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: un nombre de empleado, salario, tamaño del equipo para el gerente, otro nombre y un lenguaje de programación para el desarrollador. Crea un Manager y un Developer, luego 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.
Formatea todos los valores de salario con 2 decimales usando String.format("%.2f", salary). Tu salida debe mostrar cuatro líneas en total: los detalles y el comportamiento de trabajo del gerente, seguidos de los detalles y el comportamiento de trabajo 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 Iterator