Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Aiuto per invariante, funzione di astrazione e codice

    Salve a tutti, ho sostenuto un esame di programmazione prendendo 18 allo scritto e sembra che all'orale chieda le cose sbagliate nello scritto.

    Qualcuno potrebbe aiutarmi a capire come si risolve questo? (ho tolto tutte le parti riguardanti le eccezioni perché non mi interessano al momento)

    1) Si dia la funzione di astrazione e l'invariante di rappresentazione della classe Set e si implementi il costruttore ed il metodo add

    codice:
    public class Set{
    //OVERVIEW:  un Set è un insieme di oggetti omogenei. È modificabile.
    
    private Class insieme;
    private Vector v;
    
    public Set(Class a){
    //EFFECTS: inizializza this all'insieme vuoto di tipo a }
    
    public void add(Object a){
    //EFFECTS: inserisce a in this.
    //MODIFIES: this }
    
    public boolean IsIn(Object a){
    //EFFECTS: restituisce true se a compare in this e false se non compare }
    
    public Iterator elements(){
    //EFFECTS: restituisce un generatore che fornisce tutti gli elementi di this in ordine arbitrario }
    }

    2) Si implementi una sottoclasse che estende Set con un metodo union che, preso un Set a come parametro, modifica this realizzando l'unione con a.


    Questo esercizio valeva 18 punti ma io ne ho presi solo 6, il fatto è che non so cosa ho fatto giusto e cosa no
    Qualcuno mi può aiutare cortesemente?

  2. #2
    Ciao, mi dispiace ma qui sul forum nessuno risolve esercizi conto terzi, al limite posta il codice sul quale hai de dubbi e chi vuole farlo farà le sue obiezioni /considerazioni. Credo te lo dirà presto anche un moderatore, attendiamo il tuo codice
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Ah scusate, grazie dell'avvertimento. Allora mi correggo.

    Per invariante e astrazione io ho messo

    codice:
    I(c)=c.insieme!=null & c.v!=null 
    alpha(c)=c.insieme & c.v
    penso siano errati...

    Il mio dubbio più grande è sulla sottoclasse. Non so cosa mettere nel costruttore...
    Dato il testo, non capisco cosa passare come parametro. Io ho lasciato vuoto e gli ho fatto ereditare il vettore v...
    codice:
    public Unisciset(){
    super(v);}
    il metodo union esteso era così
    codice:
    public void union(Set a) throws ClassCastException{
    /*EFFECTS: se gli elementi di a non sono dello stesso tipo di quelli di this, solleva CCE, altrimenti modifica this realizzando l'unione con a.*/}
    Ho implementato così:
    codice:
    public void union(Set a) throws ClassCastException{
    for(Iterator i=a.elements(); i.hasNext())
       if(!i.next().isinstance(insieme)) throw new ClassCastException("UnisciSet.union");
    
    for(Iterator i=a.elements(); i.hasNext())
       if(!this.IsIn(i.next())) v.add(i.next());
    }

    Secondo voi è corretto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.