- Classe base
Volo: NumeroVolo, Origine, Destinazione, DurataOre, Capienza, PrezzoBase - Metodi
virtualnella classe base:CalcolaPrezzo(),Prenota(),PostiDisponibili(),CalcolaAssicurazione() - Classi derivate:
VoloNazionale: TassaAeroportuale — overrideCalcolaPrezzo()VoloInternazionale: Paese, DirittiFrontalieri — overrideCalcolaPrezzo()eCalcolaAssicurazione()VoloLowCost: CostoImbarco, CostoBagaglio — overrideCalcolaPrezzo()VoloPrivato: NomeCliente, CostoNoleggio — overrideCalcolaPrezzo(),Prenota()eCalcolaAssicurazione()
- 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)
💬 Esempi di output per ogni pulsante
Posto prenotato!
Posti rimasti: 179
Volo al completo o non prenotabile.
(Internazionale o Privato)
Premio assicurativo (5%): 10.00€
(Nazionale o Low Cost)
Questo tipo di volo non prevede assicurazione.
Prezzo del volo: 160.00€
=== 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€
=== 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€
=== 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€
=== VOLO PRIVATO ===
Numero: PR0001
Tratta: Milano MXP → Nizza NCE
Cliente: Mario Rossi
Durata: 1.5h
Costo noleggio: 5000.00€
Assicurazione (5%): 250.00€
Seleziona un volo!
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