Riepilogo: gerarchia dei dipendenti
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 27 di 87.
Sfida
FacileCostruiamo un sistema completo di gerarchia dei dipendenti che riunisca tutti i concetti di ereditarietà di questo capitolo. Creerai una struttura aziendale in cui diversi tipi di dipendenti condividono attributi comuni, ma hanno comportamenti specializzati propri.
Organizzerai il codice in quattro file:
Employee.java: crea la classe base condivisa da tutti i dipendenti. Ogni dipendente ha un nome e uno stipendio. Includi un costruttore che inizializza entrambi i campi e un metodogetDetails()che restituisce:[name] earns $[salary]. Aggiungi anche un metodowork()che stampa:[name] is working.Manager.java: crea una classe che estende Employee. I manager hanno un campo aggiuntivoteamSizeche rappresenta quante persone gestiscono. Usasuperper gestire l'inizializzazione della classe genitore. Sovrascrivi il metodowork()per stampare:[name] is managing a team of [teamSize]. Aggiungi un metodogetManagerDetails()che restituisce:Manager: [name] earns $[salary], Team size: [teamSize].Developer.java: crea un'altra classe che estende Employee. Gli sviluppatori hanno un campolanguageper indicare la loro specializzazione di programmazione. Anche in questo caso, usasuperper la parte relativa alla classe genitore. Sovrascriviwork()per stampare:[name] is coding in [language]. Aggiungi un metodogetDeveloperDetails()che restituisce:Developer: [name] earns $[salary], Language: [language].Main.java: riunisci qui tutti gli elementi. Riceverai cinque input: il nome di un dipendente, lo stipendio, la dimensione del team del manager, un altro nome e un linguaggio di programmazione per lo sviluppatore. Crea un Manager e un Developer, poi per ciascuno chiama il rispettivo metodo specializzato per i dettagli, seguito dal metodowork().
Riceverai cinque input in quest'ordine: nome del manager (String), stipendio del manager (double), dimensione del team (int), nome dello sviluppatore (String) e linguaggio di programmazione (String). Usa uno stipendio di 75000.0 per lo sviluppatore.
Formatta tutti gli stipendi con 2 cifre decimali usando String.format("%.2f", salary). Il tuo output dovrebbe contenere quattro righe in totale: i dettagli e il comportamento lavorativo del manager, seguiti dai dettagli e dal comportamento lavorativo dello sviluppatore.
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leggi gli input
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // consuma il carattere di nuova riga
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// Lo stipendio del Developer è fissato a 75000.0
double developerSalary = 75000.0;
// TODO: Crea un oggetto Manager con managerName, managerSalary e teamSize
// TODO: Crea un oggetto Developer con developerName, developerSalary e language
// TODO: Stampa i dettagli del manager usando getManagerDetails()
// TODO: Chiama il metodo work() del manager
// TODO: Stampa i dettagli del developer usando getDeveloperDetails()
// TODO: Chiama il metodo work() del developer
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online