Salve a tutti mi presento, sono Giancarlo Lamanna e sono uno studente in ingegneria elettronica alle prese con l'esame di programmazione orientata agli oggetti. Ho un dubbio su un'esercizio di un appello d'esame...spero mi possiate aiutare. La traccia è questa:
Definire mediante un’interfaccia un tipo di dato astratto Insieme<T> generico nel tipo T degli elementi ed iterabile, corrispondente al concetto di insieme matematico di oggetti (non sono ammesse le repliche, né è importante l’ordine). Insieme si deve accompagnare (almeno) alle seguenti operazioni:
(METODI DA IMPLEMENTARE OMESSI)
Progettare una classe astratta InsiemeAstratto<T> che implementa l’interfaccia Insieme<T> e concretizza quanti più metodi è possibile.
Fornire classi concrete eredi di InsiemeAstratto di cui al precedente esercizio, rispettivamente basate su 1) java.util.LinkedList 2) java.util.HashSet.
Il mio dubbio è il seguente: quando vado a implementare le classi concrete basate su LinkedList e HashSet come devono essere definiti esattamente i costruttori? Ho un paio di opzioni:
1) definisco una classe InsiemeLinkedList<T> alla quale assegno come attributo una LinkedList. Poi dichiaro un costruttore "classico" all'interno del quale creo una nuova LinkedList:
public class InsiemeLinkedList<T> extends InsiemeAstratto<T>{
private LinkedList<T> lista;
public InsiemeLinkedList<T>(){
lista=new LinkedList<T>();
}
}
2) definisco un metodo crea() che mi da una LinkedList, ma il tipo restituito poi non sarebbe un InsiemeLinkedList..quindi questa soluzione non mi sembra attuabile.
Il punto è...l'opzione 1 è praticabile? In caso affermativo poi nell'andare a definire metodi come ad esempio
boolean aggiungi(T elem)
devo utilizzare i metodi di LinkedList come add...allora dovrei definirmi anche un metodo all'interno della classe getLinkedList() che mi restituisce l'unico attributo che ha l'InsiemeLinkedList, ovvero la LinkedList lista e operare su quella? Oddio spero di essere stato chiaro...vi ringrazio in anticipo!