fbpx
Skip to main content
  1. Fabietto771
  2. Ingegneria Informatica - Triennale
  3. Lunedì, 08 Marzo 2010
  4.  Subscribe via email
Chiunque abbia info e dettagli può aggiungerle in questo topic. :D
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Scusate per quanto riguarda le eccezioni ho detto una stupidaggine: l' eccezione con argomento String non stampa niente.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Quindi all'esame per risolvere il punto sulle classi di dialogo devo spostare tutti i comadi tipo JOptionPane.showMessageDialog(...... o simili che trovo in giro per le altre classi nella classe di confine opportuna ( come "ApriAA,ErogaAA,...";) e modificare le eccezioni levando l'argomento String e gestendo il messaggio dalla classe di confine?Grazie in anticipo!!!


Si, fai propagare l’eccezione fino alla classe di confine, successivamente gestisci li il JOptionPane.

ps: Se vuoi fare arrivare una String al confine (per personalizzare una finestra di errore, ad esempio), puoi estendere una classe eccezione e stabilire tu le regole! :)
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Invece mi sta venendo un dubbio…
nella 5° domanda, quella dove dobbiamo implementare i Thread, visto anche il modo in cui è scritta, ho sempre dei dubbi.

I famosi Thread devono solo chiamare i vari metodi del controllore?
E che intende quando dice che dobbiamo provare 10 thread di acquisto? si presuppone un caso di test?
Qualcuno l’ha gia fatta funzionare bene?
mi fate dare un’occhiata a come l’avete fatto? :D
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Salve a tutti,

sono uno studente di vecchia data che da un paio d'anni non frequenta l'università, POO è il mio ultimo esame e avrei una domanda...guardando la guida dello studente di quest'anno noto che POO è sparito dal piano di studi del corso di laurea, ma ho letto che i corsi del 2°anno (vecchio) per quest'anno verranno tenuti lo stesso per l'ultima volta, qualcuno sa qualcosa in più su POO di quest'anno ???

Grazie
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
mi associo alla tua domanda, situazione identica

grazie
Salve a tutti,

sono uno studente di vecchia data che da un paio d'anni non frequenta l'università, POO è il mio ultimo esame e avrei una domanda...guardando la guida dello studente di quest'anno noto che POO è sparito dal piano di studi del corso di laurea, ma ho letto che i corsi del 2°anno (vecchio) per quest'anno verranno tenuti lo stesso per l'ultima volta, qualcuno sa qualcosa in più su POO di quest'anno ???

Grazie
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Per quelli che oggi hanno sostenuto l'appello di Poo, potete dirci com'era la parte scritta e quella orale? quale è stata la media dei promossi?
grazie a tutti
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
mi associo alla tua domanda, situazione identica

grazie
Salve a tutti,

sono uno studente di vecchia data che da un paio d'anni non frequenta l'università, POO è il mio ultimo esame e avrei una domanda...guardando la guida dello studente di quest'anno noto che POO è sparito dal piano di studi del corso di laurea, ma ho letto che i corsi del 2°anno (vecchio) per quest'anno verranno tenuti lo stesso per l'ultima volta, qualcuno sa qualcosa in più su POO di quest'anno ???

Grazie



Quest'anno il corso sarà tenuto regolarmente, dal prossimo anno in poi saranno garantiti gli appelli per i vecchi ordinamenti.Ciao
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Per quelli che oggi hanno sostenuto l'appello di Poo, potete dirci com'era la parte scritta e quella orale? quale è stata la media dei promossi?
grazie a tutti


Ho sostenuto ieri l'esame (ero l'unico iscritto). La parte scritta è stata simile alle precedenti (applicazione brick) ma faceva riferimento a un giornalaio. Per l'orale mi sono stati chiesti: reentrant lock, metodo copy, metodo clone,differenze fra operatore == e metodo equals, stati di un thread, metamorfosi (mi hanno chiesto come implementarla), aggregazione, composizione metodo sleep e forse qualcos'altro che nn ricordo. Sono stato promosso con 29 quindi 100% promossi eheh. in bocca al lupo!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Grazie dell'informazione e complimenti............crepi il lupo

Per quelli che oggi hanno sostenuto l'appello di Poo, potete dirci com'era la parte scritta e quella orale? quale è stata la media dei promossi?
grazie a tutti


Ho sostenuto ieri l'esame (ero l'unico iscritto). La parte scritta è stata simile alle precedenti (applicazione brick) ma faceva riferimento a un giornalaio. Per l'orale mi sono stati chiesti: reentrant lock, metodo copy, metodo clone,differenze fra operatore == e metodo equals, stati di un thread, metamorfosi (mi hanno chiesto come implementarla), aggregazione, composizione metodo sleep e forse qualcos'altro che nn ricordo. Sono stato promosso con 29 quindi 100% promossi eheh. in bocca al lupo!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Per quelli che oggi hanno sostenuto l'appello di Poo, potete dirci com'era la parte scritta e quella orale? quale è stata la media dei promossi?
grazie a tutti


Ho sostenuto ieri l'esame (ero l'unico iscritto). La parte scritta è stata simile alle precedenti (applicazione brick) ma faceva riferimento a un giornalaio. Per l'orale mi sono stati chiesti: reentrant lock, metodo copy, metodo clone,differenze fra operatore == e metodo equals, stati di un thread, metamorfosi (mi hanno chiesto come implementarla), aggregazione, composizione metodo sleep e forse qualcos'altro che nn ricordo. Sono stato promosso con 29 quindi 100% promossi eheh. in bocca al lupo!


scusami, come quelli vecchi intendi:
- programma da 0. ti da l'uml e scrivi tutto tu. (come faceva fino a 3-4 volte fa)
- programma già fatto, che andava modificato secondo le richieste.

le domande sui lock te l'ha fatte perchè hai messo i thread nel programma?

grazie mille.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ragazzi qualcuno gentilmente mi spiega i diversi approcci per implementare la metamorfosi e la differenza fra aggregazione e composizione, perché dalle slide non è chiarissimo.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation


scusami, come quelli vecchi intendi:
- programma da 0. ti da l'uml e scrivi tutto tu. (come faceva fino a 3-4 volte fa)
- programma già fatto, che andava modificato secondo le richieste.

le domande sui lock te l'ha fatte perchè hai messo i thread nel programma?

grazie mille.


ti dà il codice base dell'applicazione brick + traccia del compito con relativi diagrammi uml. Devi modificare l'applicazione tentando di soddisfare i requisiti. Potete usare anche codice fatto a casa a loro nn importa.I lock me li hanno chiesti perchè li ho utilizzati con i thread nel programma.

Ragazzi qualcuno gentilmente mi spiega i diversi approcci per implementare la metamorfosi e la differenza fra aggregazione e composizione, perché dalle slide non è chiarissimo.


per la metamorfosi qui ci sono due metodi di implementazione http://www.samuelmurdoch.com/appunti/POO/Metamorfosi.html

la differenza fra aggregazione e composizione è che nell'aggregazione l'esistenza della parte è indipendente dall'esistenza dell'intero e che, inoltre, la parte può appartenere contemporaneamente a più interi. ad esempio un programmatore può appartenere a più di team di sviluppo. se un team di sviluppo viene sciolto il programmatore continua ad esistere. Il team di sviluppo è fatto da programmatori quindi aggregazione. Viceversa nella composizione se distruggi l'intero distruggi anche la parte e inoltre la parte può appartenere a un solo intero. Immagina di avere l'oggetto "informazioni personali" con campi "nome cognome dna". ogni persona ne avrà uno. Ogni oggetto del tipo "informazioni personali" apparterrà a una e una sola persona. se distruggi l'oggetto persona distruggerai anche le sue informazioni personali. Essendo le informazioni personali parte di una persona, si tratta di composizione. Spero di esserti stato utile! Ciao Ciao!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation


scusami, come quelli vecchi intendi:
- programma da 0. ti da l'uml e scrivi tutto tu. (come faceva fino a 3-4 volte fa)
- programma già fatto, che andava modificato secondo le richieste.

le domande sui lock te l'ha fatte perchè hai messo i thread nel programma?

grazie mille.


ti dà il codice base dell'applicazione brick + traccia del compito con relativi diagrammi uml. Devi modificare l'applicazione tentando di soddisfare i requisiti. Potete usare anche codice fatto a casa a loro nn importa.I lock me li hanno chiesti perchè li ho utilizzati con i thread nel programma.

Ragazzi qualcuno gentilmente mi spiega i diversi approcci per implementare la metamorfosi e la differenza fra aggregazione e composizione, perché dalle slide non è chiarissimo.


per la metamorfosi qui ci sono due metodi di implementazione http://www.samuelmurdoch.com/appunti/POO/Metamorfosi.html

la differenza fra aggregazione e composizione è che nell'aggregazione l'esistenza della parte è indipendente dall'esistenza dell'intero e che, inoltre, la parte può appartenere contemporaneamente a più interi. ad esempio un programmatore può appartenere a più di team di sviluppo. se un team di sviluppo viene sciolto il programmatore continua ad esistere. Il team di sviluppo è fatto da programmatori quindi aggregazione. Viceversa nella composizione se distruggi l'intero distruggi anche la parte e inoltre la parte può appartenere a un solo intero. Immagina di avere l'oggetto "informazioni personali" con campi "nome cognome dna". ogni persona ne avrà uno. Ogni oggetto del tipo "informazioni personali" apparterrà a una e una sola persona. se distruggi l'oggetto persona distruggerai anche le sue informazioni personali. Essendo le informazioni personali parte di una persona, si tratta di composizione. Spero di esserti stato utile! Ciao Ciao!



Grazie milleee!!! Utilissimo e chiarissimo;)
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ti dà il codice base dell'applicazione brick + traccia del compito con relativi diagrammi uml. Devi modificare l'applicazione tentando di soddisfare i requisiti. Potete usare anche codice fatto a casa a loro nn importa.I lock me li hanno chiesti perchè li ho utilizzati con i thread nel programma.


Ciao, come hai applicato i thread, a un programma basato sull'applicazione brick? Cioè, secondo me, ha senso inserire i thread in un programma simulativo come "Bibitaro", in cui ci sono tanti oggetti Studenti ognuno dei quali dopo aver finito di studiare va al Distributore e prende una lattina di cola o di acqua! Gli oggetti studenti, uno ogni thread, concorrono nell'uso dell'oggetto distributore. Nel programma Brick in cui, vengono inseriti i vari succhi di frutta (prelevati e depositati dall'utente), viene calcolato l'indice di gradimento, viene calcolato l'indice di successo, ecc......come si dovrebbero applicare i thread? Quali sarebbero gli oggetti che concorrerebbero nell'uso dell'oggetto comune (che immagino sia l'oggetto in cui è definito l'hashmap)?
Grazie.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ti dà il codice base dell'applicazione brick + traccia del compito con relativi diagrammi uml. Devi modificare l'applicazione tentando di soddisfare i requisiti. Potete usare anche codice fatto a casa a loro nn importa.I lock me li hanno chiesti perchè li ho utilizzati con i thread nel programma.


Ciao, come hai applicato i thread, a un programma basato sull'applicazione brick? Cioè, secondo me, ha senso inserire i thread in un programma simulativo come "Bibitaro", in cui ci sono tanti oggetti Studenti ognuno dei quali dopo aver finito di studiare va al Distributore e prende una lattina di cola o di acqua! Gli oggetti studenti, uno ogni thread, concorrono nell'uso dell'oggetto distributore. Nel programma Brick in cui, vengono inseriti i vari succhi di frutta (prelevati e depositati dall'utente), viene calcolato l'indice di gradimento, viene calcolato l'indice di successo, ecc......come si dovrebbero applicare i thread? Quali sarebbero gli oggetti che concorrerebbero nell'uso dell'oggetto comune (che immagino sia l'oggetto in cui è definito l'hashmap)?
Grazie.


i thread li devi usare per "testare il tutto" . Ogni thread deve testare un caso d'uso..ad esempio devi fare un thread che registra un prodotto, un altro thread che deposita una quantità di quel prodotto e una decina di thread che acquistano il prodotto. L'oggetto condiviso è il controllore di solito..a meno che non ti chieda di testare classi specifiche. Il prof può chiederti di dover creare un'interfaccia grafica che per ogni tipo di thread acquisisce i dati necessari e che mostra l'eventuale gestione delle eccezioni che si verificano. Io ho creato un main separato di test dove ho creato i thread e avviato il test.
Insomma..quello che devi fare alla fine è mettere nel run dei runnable codice che chiami le funzioni del controllore e ne gestisca eventuali eccezioni preoccupandoti di sincronizzare i vari threads.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation

i thread li devi usare per "testare il tutto" . Ogni thread deve testare un caso d'uso..ad esempio devi fare un thread che registra un prodotto, un altro thread che deposita una quantità di quel prodotto e una decina di thread che acquistano il prodotto. L'oggetto condiviso è il controllore di solito..a meno che non ti chieda di testare classi specifiche. Il prof può chiederti di dover creare un'interfaccia grafica che per ogni tipo di thread acquisisce i dati necessari e che mostra l'eventuale gestione delle eccezioni che si verificano. Io ho creato un main separato di test dove ho creato i thread e avviato il test.
Insomma..quello che devi fare alla fine è mettere nel run dei runnable codice che chiami le funzioni del controllore e ne gestisca eventuali eccezioni preoccupandoti di sincronizzare i vari threads.


Grazie!! Sei stato più che esauriente! :wink:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ragazzi io non ho ancora ben chiaro il punto sullo spostamento delle classi di dialogo.
Se in un metodo ho ad esempio un if:
if
stampa messaggio1
else
stampa messaggio2

devo creare 2 funzioni nella classe di confine che stampano i messaggi e sostituire i messaggi della funzione sopra con le funzioni che ho creato?
se affermativo come faccio a chiamare queste funzioni che stampano il messaggio?

help me perchè questo punto non mi è proprio chiaro.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ragazzi io non ho ancora ben chiaro il punto sullo spostamento delle classi di dialogo.
Se in un metodo ho ad esempio un if:
if
stampa messaggio1
else
stampa messaggio2

devo creare 2 funzioni nella classe di confine che stampano i messaggi e sostituire i messaggi della funzione sopra con le funzioni che ho creato?
se affermativo come faccio a chiamare queste funzioni che stampano il messaggio?

help me perchè questo punto non mi è proprio chiaro.


Devi usare le eccezioni. Quando trovi un JOptionPane.showMessage..(..) ecc ecc sollevi un'eccezione.
Credo che tu ti riferisca al metodo eroga() della classe prodotto...in quel caso potresti fare così:
[code type="markup"]
public void eroga(int quantita)
{
...

if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Spiacente giacenza nulla";);

}
if (quantita > giacenza)
{
throw new GiacenzaInsufficienteException("Quantità disponibile = " + giacenza + " procedere?", giacenza);

}
if (quantita <= giacenza)
//altro codice

}

[/code]

poi in boundary nel catch dell'eccezione fai apparire i vari JOptionPane.showMessage..(..) utilizzando il metodo getMessage() della classe Exception..
Devi modificare la classe dell'eccezione aggiungendo un parametro per la giacenza..in modo che tu possa farla arrivare nella classe di confine.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
[code type="markup"]
public boolean chngPassword(String vecchia, String nuova) throws PswException
{
boolean ritorno = false;
if (aperto = true)
{
if (password.toString().equals(vecchia))
//Dialogo non qui ma in boundary. Idem trattamento eccezioni
{
if (!(nuova.equals("";)))
{
JOptionPane.showMessageDialog(null, "password modificata";);
password = new Psw(nuova);
ritorno = true;
}
else
throw new PswException("La password deve essere non nulla";);
}
else throw new PswException("Nuova password errata";);
}

return ritorno;
}

[/code]

Quindi se per esempio ho questo pezzo di codice, devo creare anche una classe per l'eccezione psw modificata e catturarla nella boundary?


Inoltre se vedi a pagina 5 di questa discussione c'è il compito di maggio in cui chiedeva di spostare tutte le classi di dialogo nella classe confineAmministratore, e non nelle classi di confine. Come faccio con tutti i metodi nelle altre classi di confine?
grazie mille.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
in quel caso puoi utilizzare il valore boolean di ritorno di chngPassword.
Guarda..credo che per spostamento delle "classi di dialogo" lui intenda che devi togliere tutto quello che riguarda l'interfaccia grafica dalle classi entità e dal controllore e metterle nella classe confineAmministratore (che è comunque una classe di confine..)
Nella classe confineAmministratore hai gli actionListener che in actionPerformed(actionEvent e) chiamano i metodi del controllore e quindi indirettamente i metodi delle classi di dominio. Lì devi mettere il codice necessario a far apparire i box di dialogo.. per esempio nel caso di chngPassword :

[code type="markup"]
public boolean chngPassword(String vecchia, String nuova) throws PswException
{
boolean ritorno = false;
if (aperto = true)
{
if (password.toString().equals(vecchia))
//Dialogo non qui ma in boundary. Idem trattamento eccezioni
{
if (!(nuova.equals("";)))
{
//il dialogo che era qui va creato nella classe confineAmministratore
password = new Psw(nuova);
ritorno = true;
}
else
throw new PswException("La password deve essere non nulla";);
}
else throw new PswException("Nuova password errata";);
}

return ritorno;
}
[/code]

poi nella classe confineAmministratore avrai:

[code type="markup"]
private class ChngPasswordAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
try
{
if(controllore.chngPassword(new Utente(utenteF.getText(), "Amministratore", passwordF.getText()), nuovaPasswordF.getText())) <---se ritorna true la password è stata modificata
{
JOptionPane.showMessageDialog(null, "password modificata";); <------ dialogo spostato
passwordF.setText(nuovaPasswordF.getText());
}

}
catch (PswException e)
{
JOptionPane.showMessageDialog(null, " Cambia password " + e.getMessage(), "Errore", JOptionPane.ERROR_MESSAGE); <----dialogo spostato
}
}
}
[/code]

dovrebbe essere così. In questo caso usi il valore di ritorno perchè non viene sollevata un'eccezione se il cambio pass va a buon fine
Comment
There are no comments made yet.


There are no replies made for this post yet.
Be one of the first to reply to this post!