Esercizio 1 ----------- Creare in Java una classe "Insieme" che rappresenti un insieme matematico di numeri interi compresi tra 0 e 20. Definire per la classe i seguenti metodi, oltre a costruttore, metodi equals() e toString(). - aggiungi che dato un intero lo aggiunga all'insieme; - elimina che dato un intero lo elimini dall'insieme; - cardinalità che restituisca la cardinalità dell'insieme; - vuoto che restituisca true se l'insieme è vuoto, false altrimenti; - tuttoUniverso che restituisca true se l'insieme contiene tutti gli elementi del dominio considerato (tutti gli interi da 0 a 20 nel nostro caso), false altrimenti; - complementare che restituisca un nuovo insieme contenente tutti e soli gli elementi del dominio non presenti nell'insieme; - unione che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro unione; - intersezione che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro intersezione; - differenza che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro differenza; - differenzaSimmetrica che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro differenza simmetrica; - sottoinsiemeDi che, dato un secondo insieme, restituisca true se l'insieme è un suo sottoinsieme, false altrimenti; - sovrainsiemeDi che, dato un secondo insieme, restituisca true se l'insieme è un suo sovrainsieme, false altrimenti; - Leggi che legga da input un insieme. Si può scegliere di realizzare tale metodo in due modi alternativi. - Prima possibilità (più semplice): si richiede in input una sequenza di numeri interi (appartenenti al dominio considerato) terminata da -1. I numeri introdotti costituiranno gli elementi dell'insieme. - Seconda possibilità: si richiede di introdurre l'insieme come stringa opportunamente formattata, cioè numeri separati da virgole e racchiusi tra parentesi graffe. Sarà il metodo a preoccuparsi di scandire la stringa in input in modo da ricavare gli elementi da memorizzare nell'insieme. Scrivere poi un programma (con un main()) che legga da input un insieme e ne calcoli la cardinalità ed il complementare. Letto poi un secondo insieme, applicare ai due insiemi le varie operazioni definite per la classe e stamparne il risultato. /////////////////////////////////////////////////////////////////////////////// Esercizio 2 ----------- Creare una classe "GrigliaLuminosa" caratterizzata da una matrice quadrata di NxN celle luminose che possono essere accese o spente. Definire per la classe i seguenti metodi (oltre al costruttore): - accendiTutto/spegniTutto due metodi che ripettivamente accendono/spengono tutte le celle luminose; - accendiDiagonali/spegniDiagonali due metodi che ripettivamente accendono/spengono le celle luminose situate sulle due diagonali; - accendiCornice/spegniCornice due metodi che, dato un intero i, ripettivamente accendono/spengono le celle luminose situate sulla cornice che parte dalla posizione [i,i]; - visualizza che stampa a video un asterisco in corrispondenza di ogni cella luminosa accesa, ed uno spazio bianco in corrispondenza di ogni cella luminosa spenta.