Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-01-2009, 12:07   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
[Domande teoriche] Java e programmazione ad oggetti

Salve,
allora devo dare un esame di Linguaggi di programmazione che comprende un primo esame scritto di teoria ed eventualmente (se passo il primo) un successivo secondo esame scritto di pratica in JAVA (che palle 2 esami per uno stesso corso...)

Il primo esame teorico oltre a degli esercizzi (assembler, far vedere cosa succede in memoria nello stack e nell'heap, etcetc) è composto anche da domande teoriche...mi dite se secondo voi la risposta a questa può essere corretta o se c'è da integrare con qualcosa in più?

1) Cosa sono le eccezioni in un linguaggio di programmazione? In che senso si afferma che: "un'eccezione rimanda al contesto superiore" ?

Io direi: Le eccezioni sono delle situazioni impreviste ed eccezionali che possono verificarsi all'interno di una routine (o metodo) che potenzialmente potrebbero rivelarsi pericolose.
Per esempio se ho una classe Frazione che rappresenta frazioni mediante 2 variabili di istanza intere: numeratore e denominatore...se tento di creare un oggetto Frazione con denominatore nullo lancio un'eccezione poichè altrimenti creerei un oggetto sbagliato.

Le eccezioni quindi sono usate quando un metodo si trova a dover gestire una situazione che non capisce edx invece di bloccare la computazione comunica a chi lo ha invocato il metodo che non riesce ad eseguire e proprio in questo senso le eccezioni rispondono al contesto superiore.

Ad esempio nello stack ho che il metodo main() chiama un metodo A che a sua volta chiama un metodo B in cui viene lanciata un'eccezione che viene rimandata ad A. Quando A riceve un'eccezione può fare 3 cose:

1) A non sà che fare --> Rimanda l'eccezione al contesto superiore cioè il main()
2) A sà che fare: risolve il problema e richiama il metodo B
3)A capisce che si tratta di un errore fatale e blocca la computazione.

Se un'eccezione continua ad essere mandata al proprio contesto superiore prima o poi arriverà al main che essendo un metodo si comporta come gli altri rimandandolo al cotesto superiore o killando il processo in quanto nel main èla stessa cosa...perchèil suo contesto superiore è la JVM che terminerebbe il processo.

Le eccezioni sono quindi un MECCANISMO DI RETURN ALTERNATIVO

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 13:41   #2
agente mm8
Senior Member
 
Iscritto dal: Mar 2008
Messaggi: 401
Mi sebra fatto bene...
Io però all'ultima frase aggiungerei:
Le eccezioni sono quindi un MECCANISMO DI RETURN IN CASO DI ERRORE
Poi non so, essendo in terza media, non ho mai affrontato esami del genere
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 18:52   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il meccanismo di return passa l'esecuzione al chiamante in un punto prestabilito. Le eccezioni invece interrompono l'esecuzione e risalgono lo stack di chiamata fino ad incontrare un catch che blocca la risalita. Di fatto quindi la differenza fra un meccanismo di return ed un meccanismo di eccezione è abissale, perché con un return sai a chi ritorna l'esecuzione, con un'eccezione no

Concordo anche nel modificare l'ultima frase, anzi la toglierei proprio.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 22:01   #4
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da cionci Guarda i messaggi
Il meccanismo di return passa l'esecuzione al chiamante in un punto prestabilito. Le eccezioni invece interrompono l'esecuzione e risalgono lo stack di chiamata fino ad incontrare un catch che blocca la risalita. Di fatto quindi la differenza fra un meccanismo di return ed un meccanismo di eccezione è abissale, perché con un return sai a chi ritorna l'esecuzione, con un'eccezione no
Questo è vero. Ma si può "rimediare", volendo.
A me personalmente piace limitare al massimo i side effect; se so che una funzione può fallire, faccio qualcosa del genere. (pseudo-java)
Codice:
// metodo che può fallire
final Either<Result, Exception> iCouldFail() {
  try {
    ...
    return Either.right(new Result()); // tutto bene
  } catch (final APossibleException ex) {
    return Either.left(ex);
  }
}

// e poi lo uso cosi - il "punto di ritorno" è sempre e solo uno
final Either<Result, Exception> value = iCouldFail();
if value.isRight() {
  // tutto ok
}
else {
  // gestisci l'errore
}
Se java supportasse il pattern matching sarebbe meno verboso...
Ma questo è solo il mio personalissimo gusto eh...preso in prestito da haskell

Ultima modifica di shinya : 23-01-2009 alle 09:42.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 09:18   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
...
Tecnica interessante, shinya.
Ho una domanda: se capita che il tuo metodo ICouldFail() al suo interno esegua codice che potenzialmente può generare, diciamo 3 tipi diversi di checked exception, e il chiamante debba gestire in modo diverso tutti e tre i casi?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 09:41   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Tecnica interessante, shinya.
Ho una domanda: se capita che il tuo metodo ICouldFail() al suo interno esegua codice che potenzialmente può generare, diciamo 3 tipi diversi di checked exception, e il chiamante debba gestire in modo diverso tutti e tre i casi?
Beh considera che non è una tecnica che uso sempre... anche perchè java è quel che è, e uscire troppo dai binari può costare caro in termini di comprensibilità del codice (soprattutto per qualcun'altro che non ha dimestichezza con un pò di programmazione funzionale).
Una strada che mi viene in mente, sempre per usare questa "tecnica" nello scenario che hai dipinto tu, è di wrappare tutte le eccezzioni in una di più alto livello e lanciare quella. Poi dal chiamante gestire i vari casi (via instanceof, ma anche no, o via polimorfismo, con un metodo per ogni eccezione).

Ma ovviamente bisognerebbe valutare sul momento se usare un approccio tradizionale o altro. Comunque se ti interessa c'è una libreria che fornisce già tutti questi "pattern" presi in prestito da haskell (e amici)... che è questa qua: http://functionaljava.org/
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 10:07   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
Una strada che mi viene in mente, sempre per usare questa "tecnica" nello scenario che hai dipinto tu, è di wrappare tutte le eccezzioni in una di più alto livello e lanciare quella. Poi dal chiamante gestire i vari casi (via instanceof, ma anche no, o via polimorfismo, con un metodo per ogni eccezione).
Ecco, proprio come pensavo, solo che così diventa molto "verboso" (e instanceof non mi piace tantissimo, preferisco la versione polimorfica).
Comunque è un limite/caratteristica di Java: volevo solo sapere se c'erano modi più "furbi" (più snelli) per farlo e non ne ero sicuro.
Grazie per la delucidazione.

Quote:
Originariamente inviato da shinya Guarda i messaggi
Ma ovviamente bisognerebbe valutare sul momento se usare un approccio tradizionale o altro. Comunque se ti interessa c'è una libreria che fornisce già tutti questi "pattern" presi in prestito da haskell (e amici)... che è questa qua: http://functionaljava.org/
Interessante, me la guardo; grazie per la risorsa
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
Bonus Elettrodomestici 2025, si parte: c...
Jeff Bezos torna al comando, stavolta di...
Anthesi sceglie OVHcloud per digitalizza...
Cube presenta Trike Flatbed Hybrid 750, ...
Call of Duty Black Ops 7 peggio di Infin...
L'Italia è il secondo mercato per...
Wi-Fi superveloce anche in giardino? FRI...
La Ford Focus va ufficialmente in pensio...
Booking.com integra Revolut Pay: nasce i...
DGX Spark a 175 fps con ray tracing su C...
Red Dead Redemption 2 Enhanced è ...
3Dfx Voodoo 2, una GPU nata con la scade...
Apple Watch: la Mela dovrà versar...
TIM e Nokia insieme per potenziare il 5G...
Musk lancia la nuova era dei DM su X con...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v