Salve a tutti,
avrei un piccolo problema di astrazione, ovvero:

Lavoro ancora su quel programma che sviluppa varie realizzazioni di liste, che ereditano da una stessa superclasse in cui saranno poi sviluppati metodi (tipo di ordinamento ed altro) che andranno a funzionare indipendentemente dal tipo di realizzazione.

Adesso stavo sviluppando un metodo che controllasse che alcune precondizioni, all'interno delle varie realizzazioni, fosse soddisfatte. Le precondizioni sono del tipo "la posizione I è compresa tra l'etremo A e l'estremo B", in modo che prima di fare una cancellazione, o un inseriemnto, o quel che sia, controllo di starlo facendo su un elemento realmente appartenente alla lista.

All'inizio visto che doveva lavorare in maniera generale avevo fatto un metodo nella superclasse da poter sfruttare in tutte le realizzazioni, il problema era questo: Andava in loop.

Perchè se io nel mio metodo "precondizione" utilizzavo la funzione succlista e finelista per scorrere la lista, ma poi all'interno di questi stessi metodi avevo bisogno di richiamare la precondizione, ovviamente mi veniva fuori una chiamata a catena e andava in loop.

L'unica soluzione che mi è venuta è stata di sviluppare questa funzione precondizione singolarmente in ogni realizzazione in modo da accedere in maniera diretta alla struttura dati senza dover utilizzare i metodi in questione ed evitare il loop.

Ora la domanda è questa, non è che questo va contro l'astrazione ed il professore mi può dire che "si funziona ma è una porcheria"? nel senso, non è che si potrebbe fare qualcosa di più pulito? Voi cosa consigliate?

Contate che le classi sono qualcosa del tipo:

Superclasse: Liste_collegate
Classi che ereditano: ListaC, ListaP, ListaV (che sono liste con vettore, con putnatore e con cursore)

Nelle varie realizzazioni implemento solo i vari metodi di accesso (e questa precondizione) nella superclassi funzioni di ricerca, di controllo della lunghezza della lista, ed altro.

Vi ringrazio in anticipo,
Neptune.