|
Benvenuti al Forum > Varie > in depth |
Varie |
Sezione dedicata a discussioni che non rientrano nelle categorie sopra elencate |
|
|
|
View All Content
Hide All Content
|
|
View Content
Hide Content
Salve a tutti, volevo porvi due domande: - Cosa fa la "System.Runfinalize" - Cosa fa la "finalize()"
| |
View Content
Hide Content
Ecco qua la mia soluzione in allegato
| |
View Content
Hide Content
Buongiorno, volevo chiedere gentilmente se qualcuno è in possesso del test versione B dello scorso appello di esame.
Grazie e buona giornata
|
|
View Content
Hide Content
I testi A, B C e D differiscono solo per i parametri (e quindi per il corrispondente output). Le conoscenze richieste sono identiche. Non serve risolvere il B se avete già fatto l'A.
| |
|
View Content
Hide Content
Cosa dobbiamo fare per accettare il voto? Ieri sera era presente in Esse3 Bacheca Esiti (ma senza la possibilità di accettarlo), oggi non c'è più...
|
|
View Content
Hide Content
Confermo che c'e' stato un problema con Esse3: la procedura era sperimentale, e non si può dire che l'esperimento sia andato a buon fine... I vostri voti sono comunque in un mio file di Excel, che esite in triplice copia su tre diverse macchine, quindi state tranquilli! Sto attendendo conferme sulla procedura da usare per la registrazione: a valle di queste vi invierò una mail dicendovi quando registrerò (con procedura tradizionale) il vostro esame. Grazie per la comprensione...
| |
|
View Content
Hide Content
sarebbe interessante vedere una versione completa e fuzionante dell\'esame pratico... giusto per farsi un idea,ad esempio della simulazione della pressione del bottone con i tasti A S W Z.
|
|
View Content
Hide Content
Nel compito di giugno c'era una domanda (opzionale, non faceva parte del necessario per prendere 30 e lode) sulla gestione degli eventi da tastiera.
Le cose da sapere sono: - Occorre registrare TUTTI gli oggetti che vogliamo intercettino gli eventi da tastiera come KeyListeners - Questi risponderanno solo quando hanno il fuoco - Alcuni widget di default (es. Jpanel) non hanno mai il fuoco, bisogna esplicitamente abilitarli
Ecco un pezzo di codice che abilita il content pane a ricevere eventi di tastiera, e che sul contentPane ha un bottone anch'esso abilitato: private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setFocusable(true); // qui dico che voglio che il pannello possa ricevere il fuoco jButton1.setText("jButton1"); contentPane.add(jButton1, java.awt.BorderLayout.NORTH); // ora aggiungo tutte le componenti che possono avere il fuoco come ascoltatori jButton1.addKeyListener(this); contentPane.addKeyListener(this); }
public void keyTyped(KeyEvent e) { System.out.println(e.getKeyChar() + e.getSource()); }
In questo listener mi faccio stampare sia il carattere digitato sia l'oggetto che lo ha intercettato.
| |
View Content
Hide Content
Ho copiato il codice del programmino di esempio sul pattern MVC alla lezione 22, lezione in cui si è usato il listener in questione. Potete trovarlo in attachment. Provate a scaricarlo e a decommentare la riga 25 della classe Finestra:
this.add(new Button("Bottone"), BorderLayout.NORTH);
:-)
| |
View Content
Hide Content
Ottima idea! Chi fa il post :-) ?
|
|
View Content
Hide Content
Salve a tutti, In attachment trovate una possibile soluzione del compito. Però non riesco capire perchè alla pressione dei tasti non viene chiamato il metodo keyReleased del interfaccia KeyListener. Vi chiedo aiuto per risolvere questo problemino
|
|
View Content
Hide Content
//Dovrebbe funzionare però don't works.... //Qualquno può dirmi WHY.......... addKeyListener(center); Prova a guardare la documentazione di Java per il metodo requestFocusInWindow(), vedrai che risolverai il problema. Ti conviene usare keyTyped invece che keyReleased. Ciao
| |
|
|
|
View Content
Hide Content
Stavo provando un programma che mostra un'immagine semplice in una label,e ho trovato una cosa ambigua: Per creare le immagini,sui tutorial si usa passare come path una sottocartella images,che quindi sarà cercata all'interno della cartella delle classi,giusto? bene,il problema è che JBuilder parte a cercare le cose dalla cartella madre,quella dove c'è il file progetto,e quindi io potrei mettere l'immagine in quella cartella e dopo quando creo l'image icon gli passo solo il nome dell'immagine. Ma se all'esame dovessimo fare un programma del genere,i file li mettiamo li? non mi pare una soluzione ottima,xke il se dovessi passare il codice a qualcuno non si saprebbe dove inserire l'immagine. Un'altrernativa che ho trovato è quella di creare un ImgURL facendo NOMECLASSE.class.getResource(path); dove path è un indirizzo,nome file,da aggiungiere al path della classe. Questo funziona,se non ricompilo il codice,xke se ricompilo JBuilder svuota la cartella e la ricrea. Ho pensato quindi di aggiugiere come path: "../NOMEFILE.jpg" ma capita la stessa cosa... volevo provare a salire di cartella con una combinazione stile linux ( ../../ ) ma mi da come risultato un URL null. Come fare quindi per creare un programma che sia facile da scrivere e che non sia legato al JBuilder? mettere come path "../images/nomefile.jpg" ? grazie,sperando non sia necessario per l'esame :D
| |
View Content
Hide Content
Il seguente codice, presente nell'esame di giugno 2005, viene compilato da g++ correttamente (pur con degli avvisi a causa dell'utilizzo di un header deprecated) e l'output è: 34333. Se sostituisco <iostream.h> con il nuovo <iostream>, ottengo l'errore: ‘cout’ was not declared in this scope Ho constatato che posso rimediare scrivendo std::cout, oppure using namespace std. Qual è la ragione di questo diverso comportamento tra i due header? E' un fatto da tenere presente durante l'esame?
#include <iostream.h> void rimescola(int& k, int m, int* n) { k = m; m = *n; *n = k; n[-1] = k; }
int main(){ int vet[] = {5,4,3,2,1}; rimescola(vet[0],vet[2],vet+4); for (int i=0;i<5;i++) cout<<vet[i]; return 0; }
|
|
View Content
Hide Content
E' una questione sintattica, una è una inclusione stile C l'altra stile C++. Non rilevante ai fini dell'esame.
| |
|
View Content
Hide Content
Volevo far notare che il link al video della Lezione 18 porta invece alla Lezione 19. E' voluto o è un errore?
Grazie.
| |
|
View Content
Hide Content
Provando a documentare qualche classe e package mi son trovato davanti ad un quesito: Per poter avviare il programma,grafico o da console che sia,dobbiamo avere una mainClass con il rispettivo main all'interno,il quale,se documentiamo la classe stessa viene ovviamente inserito. Il modo migliore a vedere dalle api pare quello di fare una classe esterna che avvia il tutto,per es in caso di prog grafico,un main che crea il JFrame,imposta il JPanel ecc. La mia domanda è: va documentata ed inserita nella documentazione del package anche tale classe? E poi altra domanda: La documentazione all'esame si può fare inglese o italiana senza differenze?
| |
|
View Content
Hide Content
Scusate, ma ho un piccolo problema e non riesco a capire il motivo. Riesco a visualizzare correttamente tutti video delle lezioni, tranne quello della lezione numero 9. Altri hanno avuto lo stesso problema?
Grazie a tutti.
|
|
View Content
Hide Content
C'era un errore, grazie per la segnalazione. L'ho messo a posto, la versione ora in linea è sistemata. Chi avesse già scaricato la lezione 9 può risolvere semplicemente cambiando il nome del file contenente il filmato rinominandolo come "movie.mp4" (il file è in content/data)
| |
|
View Content
Hide Content
Cercando di creare una documentazione decente,mi sono sorti alcuni dubbi: -Il parametro @see non da un link alla classe importata (Es: JPanel). Ho letto dalla documentazione che bisogna dare il Path dei package-list,ma non ho capito come,infatti la mia documentazione poi veniva creata,ma tutti i metodi e le classi da cui derivavo non vengono linkate,cosa assai scomoda.Qual'è il modo per linkare le classi esterne? -La descrizione della classe,ad esempio se vado alla pagina del package javax.swing.*; trovo una "tabella" con tutte le classi ed una breve descrizione,ma una volta cliccatoci sopra a questa classe,la relativa pagina appare meglio descritta,non ho capito come separare queste due descrizioni. -Il modo migliore per creare una documentazione? Entrare nella cartella dei sorgenti e fare Javadoc *.java? Facendo il javadoc classe per classe,mi si riscrive l'index,contenendo solo la classe principale.
Torno a leggere,nel frattempo ringrazio per le risposte.
|
|
View Content
Hide Content
Quoto....... come posso fare il javadoc di un package?? è più di mezz'ora che cerco in internet e sul sito Sun ma mi riesce molto difficile trovare se è possibile o meno, e se sì come......
per rispondere a n.dorigatti per risolvere i tuoi problemi di link ci sono un po' di parametri da settare quando lanci javadoc: qui trovi praticamente tutto...anche sull'istruzione @see
http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javadoc.html#sourcepath
|
|
View Content
Hide Content
Ottimo,la procedura l'ho trovata,quello che intendevo è proprio un comando del tipo:
$ javadoc -link http://java.sun.com/j2se/1.5.0/docs/api mypackage
che serve anche a te a dirti la verità,poiche se ti metti nella cartella radice del tuo package,e fai javadoc NOMEPACKAGE,il javadoc da solo prende la cartella con lo stesso nome del package,e ti genera la documentazione dei file contenuti al suo interno.In altro caso ti metti nella cartella dei sorgenti e fai javadoc *.java. Se interessasse a qualcuno quindi,inserendo quel tag nel creare la documentazione,se siete connessi ad internet avrete i link diretti per metodi e classi alla documentazione sun. Ciao ciao
|
|
View Content
Hide Content
ma scusa se io sono sotto win e sono nella cartella
C:/Documents and Settings/************/jbprojecttest2
ed i file .java sono nella cartella ./src
e da prompt nella stessa posizione lancio il comando
javadoc src
mi da warning no files for package src
dove erro??
| |
|
|
|
View Content
Hide Content
All'interno di una classe principale, ho inserito questa inner class:
/** * Definisce una classe composta da un punto e un colore */ protected class PuntoColore { private Point point; private Color color; public PuntoColore(Point point, Color color) { this.point = point; this.color = color; } public Point getPoint() { return point; }
public Color getColor() { return color; } }
Vorrei capire due cose: 1. Perché "point" e "color", benché privati, sono accessibili anche senza invocare i metodi get? Se ciò è dovuto al fatto che questa è una inner class, è comunque preferibile scrivere metodi get oppure no? 2. Restituendo un riferimento a point e color, permetto a qualunque altro oggetto di modificare il Point e il Color a cui si riferiscono. E' possibile evitare ciò?
| |
|
View Content
Hide Content
Nei testi del 2005, è riportato: « E’ permesso l’uso INDIVIDUALE dei propri appunti cartacei, note, libri. NON si può passare ad altri qualsivoglia materiale. »
E' valido anche quest'anno? Possiamo anche portarci una copia delle slides?
| |
|
View Content
Hide Content
Di solito scrivo commenti di tipo javadoc, descrivendo brevemente il ruolo di metodi, classi e altre informazioni aggiuntive, eventualmente utilizzando gli appositi tag preceduti dalla "@", per poi usare il comando: javadoc -d cartellaDiDestinazione *.java
Ciò premesso, avrei bisogno di qualche indicazione per scrivere una buona documentazione. In particolare, i miei programmi hanno perlopiù variabili di istanza e metodi di tipo private, in quanto il loro ruolo è finalizzato esclusivamente alla classe in cui si trovano. Spesso ho inoltre diverse inner classes che usano comunque le variabili private della classe principale. Come devo comportarmi? Forse documentare ciò che è privato ha poco senso, ma documentare soltanto ciò che è pubblico non rende l'idea di come la classe funzioni, almenoché, ad esempio, non voglia trascrivere completamente il testo di un esercizio...
|
|
View Content
Hide Content
I commenti sono indirizzati a due diversi tipi di utenti: a) i programmatori che USERANNO la classe senza aprirla, come facciamo noi quando usiamo JFrame: ci interessa sapere come usarla, quali metodi offre per variarne caratteristiche e comportamento. b) i programmatori che MANTERRANNO la classe. Questi dovranno capire come è stata implementata.
Javadoc tipicamente è mirato al tipo a). Supporto per il tipo b di utenti è in genere fatto come negli altri linguaggi, alternando righe di codice e commenti. Come in molte cose della vita, il tutto va fatto cum grano salis: commenti del tipo che prima di una istruzione for dicano "faccio un ciclo" non sono realmente utili...
Questa è la ragione per cui in generale non si commentano con Javadoc le variabili private e le classi interne. La raccomandazioene è quindi: usare Javadoc per produrre delle API, usare commenti nel codice per dare un aiuto significativo a chi il codice lo deve leggere.
| |
|
View Content
Hide Content
Non mi è ancora chiaro se durante la parte pratica dell'esame è possibile utilizzare il designer di jbuilder oppure dobbiamo implementare tutta la parte grafica "a mano" ?
| |
|
View Content
Hide Content
Ho trovato un piccolo problema nel compilare da riga di comando,file che contengono il nome del package. Vale a dire,che se faccio una classe senza specificare niente,può anche dover utilizzare altri file,ma basta che siano nella stessa cartella e il programma esegue,se invece ad esempio specifico: package uno; il programma non viene eseguito. Esempio: Ho aggiunto ai classpath,oltre a quelli necessari, il percorso al Desktop e il path . se ora sul desktop creo una cartella uno,al suo interno vi sono i due mie classi (ad esempio classe A in un file,e classe B in un'altro),da riga di comando entro in quella cartella,faccio: javac A.java e la compilazione avviene senza problemi, se poi faccio: java A mi esce un errore tipo questo:
Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong na me: uno/A) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)
e il main c'è,xke se tolgo il package ai due file il tutto funziona senza problemi... dove sbaglio?
EDIT: Mi rispondo da solo: Per compilare si entra nella cartella dei sorgenti e si fa: $ Javac NomeClasse.java $ Java nomepackage.NomeClasse Nell'esempio sopra: $ Javac A.java $ Java uno.A
se serve a qualcuno.
| |
View Content
Hide Content
Nel seguente frammento di codice, il metodo "b.setActionCommand(c[i]);" sembra praticamente inutile, in quanto può essere o non commentato. Siccome questo codice è tratto da una slide, in cui il citato metodo è presente, vorrei sapere a cosa serve. La guida di JBuilder non mi ha dato indicazioni utili. Grazie.
public class ButtonPanel extends JPanel { public ButtonPanel() { super(); Painter p = new Painter(this); this.setLayout(null); String c[] = { "Giallo", "Verde", "Rosso"}; for (int i = 0; i < c.length; i++) { JButton b = new JButton(c[i]); b.setSize(100, 50); b.setLocation(i * 100, i * 50); this.add(b); b.addActionListener(p); b.setActionCommand(c[i]); } }
|
|
View Content
Hide Content
Dalla documentazione delle API: "The JButton.setActionCommand does not set up an ActionListener. It simply records a string you may retrieve later with getActionCommand. It just helps you remember what to do in the ActionListener when that button is pressed."
In questo frammento di codice in realtà non serve - sorry...
| |
|
View Content
Hide Content
Ciao a tutti, in questo momento sto provando a compilare con JBuilder 2006 12.0.203.0 il codice allegato, presente nel testo di esame di giugno 2005. Il problema è il comportamento anomalo e apparentemente ingiustificabile di JBuilder: questo stesso codice viene talvolta compilato, altre volte ottengo invece l'errore di compilazione secondo cui la variabile x non è accessibile dalla classe B perché non è dichiarata public (essendo in classi diverse). Avrei bisogno innanzitutto di sapere se il codice è o non è corretto (è sufficiente che la classe sia public o deve esserlo anche la variabile di istanza?), oltre a capire perché lo stesso codice può o non essere compilato. Grazie.
|
|
View Content
Hide Content
da quanto ho letto per poter utilizzare una variabile in una sua sottoclasse la variabile deve essere public o protected,perche se metti private è accessibile solo alla classe stessa,se non metti niente è quasi come protected,a parte che non è disponibile per le sottoclassi. Prova a riscrivere il codice dichiarando x come protected e vedi se funziona. Spero di averti aiutato. Ho testato il codice,fatto come lo hai messo te a me come errore da: x inaccessibile,poichè non è public. Se metti protected o public funziona perfettamente. Testato con JBuilder2005. ciao ciao
| |
|
|
View Content
Hide Content
Sui testi d'esame degli scorsi anni, in particolare sulla parte "cartacea", ho visto che prevaleva il linguaggio C++ e una serie di concetti che finora non sono stati trattati, come overloading di operatori, copy constructor, ecc... Quest'anno l'esame vavierà di molto?
|
|
View Content
Hide Content
Certo. Il programa di quest'anno è simile a quello del 2004/2005 ma molto diverso da quello degli anni precedenti. Quindi i test saranno simili a quelli dello scorso anno.
| |
|
View Content
Hide Content
Volevo segnalare che non riesco ad accedere al materiale della lezione 2 e 3 e 4 (il link al .pdf in questione sembra essere errato e/o inesistente). Se possibile, avevo bisogno di ripassare il concetto di puntatori ed alcuni aspetti sul C++.
Grazie, cordiali saluti.
| |
|
View Content
Hide Content
Buongiorno.
Mi chiedevo se sono disponibili i temi d'esame e i test degli anni scorsi. Se si, dove?
Grazie a tutti.
|
|
View Content
Hide Content
Basta seguire i links alla didattica nella mia home page: ogni anno sono stati messi in linea i testi di esame, e i vari siti delle istanze del corso di Programmazione 2 li riportano.
| |
|
View All Content
Hide All Content
|
Benvenuti al Forum > in depth |
|
|
|