1. [12 punti] Implementare in Java i seguenti concetti: • capo di abbigliamento: ha una marca, un codice, un colore e un prezzo; • taglia: ha un codice alfabetico (del tipo XS, S, M, L, XL) e un codice numerico; • maglia: è un capo di abbigliamento con una taglia. Corredare ogni classe con metodi modificatori e d’accesso opportuni (indicare nei commenti per ciascun metodo se è un metodo modificatore o di accesso). Sovrascrivere i metodi toString, equals e clone in modo appropriato. In particolare, il formato di toString deve essere quello standard, equals deve testare l’uguaglianza dei dati contenuti nel parametro implicito rispetto al parametro esplicito e clone deve realizzare una clonazione totale degli oggetti. Favorire il riutilizzo del codice. 2. [18 punti] Si consideri il seguente scenario: • un dispositivo esegue un tentativo di trasmissione di dati; • se il tentativo non va a buon fine viene segnalato un errore di trasmissione di una delle seguenti tipologie: i. rete non disponibile; ii. dispositivo non autorizzato; iii. protocollo non completato. Implementare in Java, un semplice dispositivo che contiene soltanto un metodo per la trasmissione. Implementare il metodo in modo che le tre tipologie di errore indicate e il caso di una trasmissione con successo siano tutti equiprobabili (1/4 ciascuno). Scrivere un programma Java, implementando eventuali astrazioni aggiuntive, che 1) istanzia un dispositivo, 2) tenta una trasmissione, e se avviene un errore, 3) la trasmissione è ritentata qualora si sia verificato un errore di tipo iii, e termina altrimenti. Il programma deve tracciare con messaggi nella console i tentativi eseguiti e il successo o meno della trasmissione. Sfruttare le caratteristiche offerte dal linguaggio Java e dalla programmazione orientata agli oggetti.