Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni7 pagine

Esercizi Uml Java

Il documento descrive tre esercizi di programmazione orientata agli oggetti: un sistema di prenotazione hotel, un sistema di inventario per un negozio online e un sistema di prenotazione per trasporti multimodali. Ogni esercizio richiede la creazione di diagrammi UML per rappresentare le classi e le relazioni, nonché l'implementazione di specifiche funzionalità come l'ereditarietà e il polimorfismo. Inoltre, vengono forniti esempi di codice per illustrare le classi e i metodi necessari per ciascun sistema.

Caricato da

carielloclaudio7
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni7 pagine

Esercizi Uml Java

Il documento descrive tre esercizi di programmazione orientata agli oggetti: un sistema di prenotazione hotel, un sistema di inventario per un negozio online e un sistema di prenotazione per trasporti multimodali. Ogni esercizio richiede la creazione di diagrammi UML per rappresentare le classi e le relazioni, nonché l'implementazione di specifiche funzionalità come l'ereditarietà e il polimorfismo. Inoltre, vengono forniti esempi di codice per illustrare le classi e i metodi necessari per ciascun sistema.

Caricato da

carielloclaudio7
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

Esercizio 1: Sistema di Prenotazione Hotel (Livello Base)

Un sistema di prenotazione di hotel deve gestire i seguenti elementi:

● Cliente: ogni cliente ha un nome, un’email e un metodo per effettuare una


prenotazione.
● Prenotazione: include il numero della prenotazione, la data di check-in, la data di
check-out e il metodo per calcolare la durata del soggiorno.
● Camera: rappresenta una stanza dell’hotel con un numero di stanza e il tipo di
camera (singola, doppia, suite).

Richieste

1. Disegna il diagramma UML delle classi per rappresentare queste entità e le loro
relazioni.
2. Specifica i tipi di relazione (associazione, composizione, aggregazione) tra le classi.
3. Implementa una relazione uno-a-molti tra Cliente e Prenotazione.

Esercizio 2: Sistema di Inventario per un Negozio Online (Livello Intermedio)

Un negozio online gestisce diversi prodotti e utenti:

● Prodotto: include un nome, un prezzo e un metodo per calcolare il prezzo scontato.


Esistono tre sottotipi:
○ Elettronica: include la garanzia (in anni).
○ Cibo: include una data di scadenza.
○ Abbigliamento: include la taglia e il colore.
● Carrello: contiene un elenco di prodotti e un metodo per calcolare il totale.
● Utente: include un nome, un’email e un metodo per aggiungere prodotti al carrello.

Richieste

1. Disegna il diagramma UML delle classi che rappresenti il sistema e includa:


○ Ereditarietà tra Prodotto e i suoi sottotipi.
○ Polimorfismo per il calcolo del prezzo scontato.
○ Relazione tra Utente e Carrello.
2. Disegna un diagramma UML delle istanze che mostri un esempio reale di un
carrello contenente 2 prodotti diversi e l’utente che lo possiede.

Esercizio 3: Sistema di Prenotazione per Trasporti Multimodali

Un’applicazione deve gestire la prenotazione di viaggi utilizzando diversi mezzi di trasporto:

● Trasporto: è una classe astratta che rappresenta un mezzo di trasporto. Contiene:


○ Un metodo astratto per calcolare il costo del viaggio in base alla distanza.
● Sottoclassi:
○ Aereo: il costo si calcola in base alla distanza e al prezzo fisso per
chilometro.
○ Treno: il costo si calcola in base alla distanza, con uno sconto applicato per
viaggi lunghi.
○ Autobus: il costo è fisso per tratte brevi.
● Viaggio: rappresenta un viaggio prenotato e include:
○ La distanza totale.
○ L’elenco dei trasporti utilizzati.
○ Un metodo per calcolare il costo totale sommando i costi di ciascun trasporto.
● Utente: ogni utente ha un nome, un’email e un metodo per prenotare un viaggio.

Richieste

1. Disegna il diagramma UML delle classi per rappresentare le entità e relazioni.


○ Usa classi astratte per modellare il comportamento comune dei trasporti.
○ Includi polimorfismo per il calcolo del costo del viaggio in base al tipo di
trasporto.
○ Rappresenta la relazione tra Utente e Viaggio.
2. Disegna il diagramma UML delle istanze per un caso reale in cui:
○ Un utente prenota un viaggio che utilizza due mezzi di trasporto (es. aereo e
autobus).
3. Disegna un diagramma di sequenza per il processo di prenotazione di un viaggio.

Esempio Codice:

Classe Astratta: Trasporto

public abstract class Trasporto {

private String tipo;

public Trasporto(String tipo) {

[Link] = tipo;

public String getTipo() {

return tipo;

// Metodo astratto per calcolare il costo del viaggio

public abstract double calcolaCosto(double distanza);

}
Sottoclassi di Trasporto

Aereo

public class Aereo extends Trasporto {

private double costoPerKm;

public Aereo(double costoPerKm) {

super("Aereo");

[Link] = costoPerKm;

@Override

public double calcolaCosto(double distanza) {

return distanza * costoPerKm;

Treno

public class Treno extends Trasporto {

private double costoPerKm;

private double sconto;

public Treno(double costoPerKm, double sconto) {

super("Treno");

[Link] = costoPerKm;

[Link] = sconto; // Sconto per viaggi sopra i 500 km

@Override
public double calcolaCosto(double distanza) {

if (distanza > 500) {

return distanza * costoPerKm * (1 - sconto);

return distanza * costoPerKm;

Autobus

public class Autobus extends Trasporto {

private double costoFisso;

public Autobus(double costoFisso) {

super("Autobus");

[Link] = costoFisso;

@Override

public double calcolaCosto(double distanza) {

return costoFisso;

Classe Viaggio

import [Link];

import [Link];

public class Viaggio {

private double distanzaTotale;


private List<Trasporto> trasporti;

public Viaggio(double distanzaTotale) {

[Link] = distanzaTotale;

[Link] = new ArrayList<>();

public void aggiungiTrasporto(Trasporto trasporto) {

[Link](trasporto);

public double calcolaCostoTotale() {

double costoTotale = 0;

for (Trasporto trasporto : trasporti) {

costoTotale += [Link](distanzaTotale);

return costoTotale;

public void stampaDettagli() {

[Link]("Viaggio con distanza totale: " + distanzaTotale + " km");

for (Trasporto trasporto : trasporti) {

[Link]("- Mezzo: " + [Link]());

[Link]("Costo totale: " + calcolaCostoTotale() + " EUR");

}
Classe Utente

public class Utente {

private String nome;

private String email;

public Utente(String nome, String email) {

[Link] = nome;

[Link] = email;

public void prenotaViaggio(Viaggio viaggio) {

[Link](nome + " ha prenotato un viaggio:");

[Link]();

Classe Main

public class Main {

public static void main(String[] args) {

// Creazione dei trasporti

Aereo aereo = new Aereo(0.10); // 0.10 EUR per km

Treno treno = new Treno(0.05, 0.20); // 0.05 EUR per km, 20% di sconto sopra 500
km

Autobus autobus = new Autobus(15.00); // Costo fisso 15 EUR

// Creazione di un viaggio

Viaggio viaggio = new Viaggio(600); // Distanza totale 600 km

[Link](aereo);

[Link](autobus);
// Creazione dell'utente

Utente utente = new Utente("Mario Rossi", "[Link]@[Link]");

// Prenotazione del viaggio

[Link](viaggio);

Output

Mario Rossi ha prenotato un viaggio:

Viaggio con distanza totale: 600.0 km

- Mezzo: Aereo

- Mezzo: Autobus

Costo totale: 75.0 EUR

Potrebbero piacerti anche