✈️Gestione Voli — Compagnia Aerea
Ereditarietà e polimorfismo applicati a una compagnia aerea
  • Classe base Volo: NumeroVolo, Origine, Destinazione, DurataOre, Capienza, PrezzoBase
  • Metodi virtual nella classe base: CalcolaPrezzo(), Prenota(), PostiDisponibili(), CalcolaAssicurazione()
  • Classi derivate:
    • VoloNazionale: TassaAeroportuale — override CalcolaPrezzo()
    • VoloInternazionale: Paese, DirittiFrontalieri — override CalcolaPrezzo() e CalcolaAssicurazione()
    • VoloLowCost: CostoImbarco, CostoBagaglio — override CalcolaPrezzo()
    • VoloPrivato: NomeCliente, CostoNoleggio — override CalcolaPrezzo(), Prenota() e CalcolaAssicurazione()
  • Override di ToString() su tutte le classi derivate

📋 Valori delle proprietà da usare nel codice

Classe Proprietà Valore / Tipo Note
Volo (base) PrezzoBase double Inserito dall’utente
Capienza int, max 300 Inserita dall’utente
DurataOre double Inserita dall’utente
VoloNazionale TassaAeroportuale 30.0 fissi Sempre sommata al PrezzoBase
VoloInternazionale DirittiFrontalieri 80.0 fissi Sommati al PrezzoBase
Paese string Inserito dall’utente
VoloLowCost CostoImbarco 15.0 fissi Entrambi sommati al PrezzoBase
CostoBagaglio 25.0 fissi
VoloPrivato CostoNoleggio double Inserito dall’utente; sostituisce PrezzoBase
NomeCliente string Inserito dall’utente

🔢 Comportamento dei metodi virtual per ogni classe

Classe CalcolaPrezzo() Prenota() CalcolaAssicurazione()
Volo (base) return PrezzoBase scala un posto, return true return 0
VoloNazionale PrezzoBase + 30.0 ereditato dalla base ereditato (return 0)
VoloInternazionale PrezzoBase + 80.0 ereditato dalla base CalcolaPrezzo() * 0.05
VoloLowCost PrezzoBase + 15.0 + 25.0 ereditato dalla base ereditato (return 0)
VoloPrivato return CostoNoleggio return false CostoNoleggio * 0.05

🖥️ Interfaccia grafica — Windows Forms (un solo Form)

GroupBox sinistra — Inserimento
Inserisci Volo
Tipo volo
Numero volo
Origine
Destinazione
Durata (ore)
Capienza (posti)
Prezzo base (euro)
Solo Internazionale (pnlInternazionale)
Paese destinazione

Solo Privato (pnlPrivato)
Nome cliente
Costo noleggio (euro)


I pannelli si mostrano/nascondono con SelectedIndexChanged sulla ComboBox

GroupBox destra — Gestione
Voli Inseriti
AZ1234 — Nazionale — Roma → Milano — 150.00
LH4501 — Internazionale — Milano → Berlino — 200.00
FR9876 — Low Cost — Roma → Londra — 160.00
PR0001 — Privato — Milano → Nizza — 5000.00





💬 Esempi di output per ogni pulsante

▶ Prenota posto volo selezionato: AZ1234 Nazionale
Prenotazione riuscita
Gestione Voli

Posto prenotato!
Posti rimasti: 179

OK

Volo al completo o Privato
Gestione Voli

Volo al completo o non prenotabile.

OK

▶ Calcola assicurazione volo selezionato: LH4501 Internazionale
Volo con assicurazione
(Internazionale o Privato)
Gestione Voli

Premio assicurativo (5%): 10.00€

OK

Volo senza assicurazione
(Nazionale o Low Cost)
Gestione Voli

Questo tipo di volo non prevede assicurazione.

OK

▶ Calcola prezzo volo selezionato: FR9876 Low Cost
Risultato
Gestione Voli

Prezzo del volo: 160.00€

OK

▶ Dettagli volo volo selezionato: AZ1234 Nazionale
Gestione Voli

=== VOLO NAZIONALE ===

Numero: AZ1234
Tratta: Roma FCO → Milano MXP
Durata: 1.5h
Capienza: 180 posti
Posti liberi: 179
Prezzo base: 120.00€
Tassa aeroportuale: 30.00€
Prezzo finale: 150.00€

OK

Gestione Voli

=== VOLO INTERNAZIONALE ===

Numero: LH4501
Tratta: Milano MXP → Berlino BER
Paese: Germania
Durata: 2.0h
Capienza: 200 posti
Posti liberi: 200
Prezzo base: 120.00€
Diritti frontalieri: 80.00€
Prezzo finale: 200.00€
Assicurazione (5%): 10.00€

OK

Gestione Voli

=== VOLO LOW COST ===

Numero: FR9876
Tratta: Roma FCO → Londra STN
Durata: 3.0h
Capienza: 150 posti
Posti liberi: 150
Prezzo base: 120.00€
Costo imbarco: 15.00€
Costo bagaglio: 25.00€
Prezzo finale: 160.00€

OK

Gestione Voli

=== VOLO PRIVATO ===

Numero: PR0001
Tratta: Milano MXP → Nizza NCE
Cliente: Mario Rossi
Durata: 1.5h
Costo noleggio: 5000.00€
Assicurazione (5%): 250.00€

OK

▶ Qualsiasi pulsante nessun volo selezionato nella lista
Gestione Voli

Seleziona un volo!

OK

Scopo didattico del programma

Questo esercizio serve a capire:

  • virtual / override — come le classi figlie cambiano il comportamento dei metodi del padre
  • Polimorfismo — lo stesso metodo (CalcolaPrezzo(), Prenota()) funziona in modo diverso per ogni tipo
  • Incapsulamento — i campi sono protected, accessibili solo alle classi derivate
  • Ereditarietà — le classi figlie riusano il codice della base e aggiungono solo quello che cambia
Torna in alto