|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
[Java] help programmino elementare
salve, devo fare un esercizio .
Sto cominvciando ad approcciare con Java ora : ho questa classe, e la traccia mi chiede inoltra di creare un metodo main all'interno di essa che provi il funzionamenteo. Inoltre poi c'è un programma Java che richiama la classe e fa qualche operazione coi suoi metodi. La mia domanda è questo metodo main di test cosa deve fare e come lo inserisco ?? Codice:
public class Persona{
private String _nome;
private String _cognome;
public Persona(){
_nome="";
_cognome="";
}
public Persona(String nome,String cognome){
_nome=nome;
_cognome=cognome;
}
public String getNome(){
return _nome;
}
public String getCognome(){
return _cognome;
}
public void setNome(String nome){
_nome=nome;
}
public void setCognome(String cognome){
_cognome=cognome;
}
public void mostra(){
System.out.println( _nome);
System.out.println( _cognome);
}
public String toString (){
return "nome=" +_nome + "cognome="+ _cognome;
}
// qui ci metto public void main (){...?....?...?..}
}
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Codice:
public class Persona{
private String _nome;
private String _cognome;
public Persona(){
_nome="";
_cognome="";
}
public Persona(String nome,String cognome){
_nome=nome;
_cognome=cognome;
}
public String getNome(){
return _nome;
}
public String getCognome(){
return _cognome;
}
public void setNome(String nome){
_nome=nome;
}
public void setCognome(String cognome){
_cognome=cognome;
}
public void mostra(){
System.out.println( _nome);
System.out.println( _cognome);
}
public String toString (){
return "nome= " +_nome + " cognome= "+ _cognome;
}
public static void main (String[] args){
Persona p1= new Persona();
Persona p2= new Persona("remo","labarca");
p1.setNome("gatto");
p1.setCognome("silvestro");
System.out.println(p1.getNome() +" "+ p1.getCognome());
System.out.println(p2.getNome() +" "+ p2.getCognome());
System.out.println(p1.toString() +" "+ p2.toString());
}
}
ho sistemato anche qualche spazio nel "toString" perchè era illeggibile l'output.
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
si ci avevo pensato a fare una cosa del genere xò poi nel programma principale come richiamo quel main ??
se faccio : Codice:
public class Esercizio1_4{
public static void main(String[] args){
Persona persona = new Persona();
persona.main(); //????????
}
}
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
no, non puoi chiamare il main della classe Persona usandolo come metodo non statico. al max lo chiami così: Persona.main(); nota la P maiuscola a indicare la classe, non l'istanza. e poi devi chiamarlo passandogli come argomento un vettore args valido, al limite un NULL. però il tutto dipende da quello che vuoi fare. cioè, se hai già la classe Persona col metodo main puoi eseguire direttamente quella,mentre se è richiesto che venga implementata una classe apposita per i test, allora la cosa più elegante è rinominare il metodo main() della classe Persona come test() e poi chiamare tale metodo dal main della classe Esercizio. |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2003
Messaggi: 118
|
il main lo hai già, basta che compili ed esegui il programma che ti ha passato leox@mitoalfaromeo
__________________
forum che tratta di calcolatrici grafiche in genere: consigli e aiuti www.helpcalculator.tk |
|
|
|
|
|
#6 | ||
|
Member
Iscritto dal: May 2003
Messaggi: 118
|
Quote:
Quote:
Codice:
public static void main (String[] args){
Persona p1= new Persona();
Persona p2= new Persona("remo","labarca");
p1.setNome("gatto");
p1.setCognome("silvestro");
System.out.println(p1.getNome() +" "+ p1.getCognome());
System.out.println(p2.getNome() +" "+ p2.getCognome());
System.out.println(p1.toString() +" "+ p2.toString());
}
__________________
forum che tratta di calcolatrici grafiche in genere: consigli e aiuti www.helpcalculator.tk |
||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
questo è l'esercizio :
Scrivere una classe Persona dotata dei seguenti attributi: private String _nome private String _cognome dei seguenti metodi: mostra() String getNome(); void setNome(String nome) String getCognome(); void setCognome(String cognome) String toString() restituisce una stringa del tipo “nome=…,cognome=…” e dei costruttori: Persona() Persona(String nome, String cognome) Dotare la classe di un metodo main che ne provi il funzionamento Scrivere un programma Java che ne provi il funzionamento penso che allora sia + carino chaiamare il main della classe Persona come test() (in questo caso non ho bisogno di dichiararlo static e passargli String[] args giusto ???) e devo ciamare il test() sempre dalla classe ? non dall'oggetto istanziato ? cioe Persona persona = new Persona(); Persona.test(); giusto ??
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
se non lo chiami main puoi assegnargli una lista di argomenti vuota, cioè avrai un metodo test(){...} che non richiede parametri.
quanto al fatto di dichiararlo static o meno dipende dal tuo gusto personale: se vuoi che concettualmente il test sia una proprietà della classe alloralo fai static e lochiami tramite Persona.test(). se invece concepisci il metodo test come un metodo strettamente dipendente dall'istanza allora non farlo static e chiamalo tramite persona.test() poichè nel test crei due istanze di persona, mi sembra concettualmente errato non dichiarare test static Ultima modifica di mad_hhatter : 05-11-2006 alle 01:16. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: May 2003
Messaggi: 118
|
non è questo il caso in quanto si tratta di un piccolo programmino,
però il codice per il test conviene farlo sempre completamente esterno alla classe anche per non aver del codice che non serve a nulla nell'implementazione finale.
__________________
forum che tratta di calcolatrici grafiche in genere: consigli e aiuti www.helpcalculator.tk |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
dove conviene metter i test dipende da come è strutturato il codice. personalmente non ci vedo niente di male nel mettere del codice di test all'interno di una classe (se non altro perchè solo così puoi testare eventuali metodi privati - a meno di non usare classi statiche annidate) |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
Quote:
purtroppo ho ancora un idea vaga di cosa significhi static, da quello che ho capito serve al main in quanto la virtual machine carica il main non instanziandolo.... poi per quello che riguarda le classi penso che se dichiaro un attributo o un metodo static questi siano strettamente legati alla classe ... ditemi se dall'esempio dico bene : la mia callse persona ha _nome static se vado a modificare il nome e gli assegno FABIO allora Fabio sarà sempre legato a tutti gli oggetti creati di tipo Persona salvo una seguente rideinizione giusto ?? se è così sarebbe comodo avere il metodo test come statico giusto ? in modo da fare un solo test che magari ritorni un valore(una flag magari) in questo modo tutte le istanze della classe create successivamente se avranno questo valore (ok), possono essere usate senza problemi senza rifare il test........
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
che errore ti dà se chiami main(NULL)?
static, per metodi e campi, significa come hai detto tu, che il campo è UNICO per tutte le istanze della classe e il suo valore è COMUNE a tutte le istanze. un metodo statico è un metodo che concettualmente non va applicato ad una particolare istanza, ma ha significato legato alla classe in sè. solitamente serve a svolgere compiti di carattere generale o generico che non riguardano una istanza in particolare. per quanto riguarda il test... diciamo che mettere un test che crea istanze di persona dentro alla classe Persona non è elegantissimo... il top sarebbe fare un metodo test non statico che fa qualcosa relativamente a una sola istanza di persona (ad esempio stampa i dati relativi alla persona). la creazione delle istanze di persona e la chiamata al metodo test vanno demandati al main della classe esercizio. questo a livello di pulizia ed eleganzadel codice. altrimenti puoi rendere test statico e fargli fare quello che vuoi |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
Quote:
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
|
#16 | |||
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
Quote:
Cmq quando lancio dal programma principate Persona.main(NULL); mi dà errore sul NULL dice cannor find symbol stessa cosa se scrivo ciao cmq... ho provato a mettere "" in questo caso dice main(java.lang.string[]) cannot be applied to (java.lang.string) il main nella classe Persona l'ho scritto così : public static void main (String[] args) è giusto il prototipo vero ? Quote:
dichiaro una flag booleana statica di tipo private poi il metodo statico mi và ad alterare questa flag se il test appunto riesce positivo o meno... in questo modo basta lanciare il test sulla classe una sola volta ed in seguito controllare solo la flag.... in tutti i casi era giusto un'idea buttata lì
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 Ultima modifica di TuLKaS85 : 05-11-2006 alle 11:39. |
|||
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
NULL lo devi scrivere null, java è case sensitive. è però possibile che si incazzi se gli passi un null. se questo fosse il caso, crea un array di String così String[] s = new String[0] (metti 1 se non accetta array di dimensione nulla) e poi lo passi al main.
prova a vedere se così funziona, altrimenti aveva ragione chi diceva che non si può chiamare un main da un main... per l'idea della flag mi sembra un po' contorta e francamente inutile: a quel punto fai direttamente una serie di test e poi in base ai valori ritornati decidi se il test è ok o meno... però tutto dipende da quello che vuoi testare, ovviamente |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
Quote:
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
i vantaggi sono: - non hai un file sorgente separato per testate ogni singola classe - se chiami direttamente il test non sporchi l'applicazione principale (posto che tu debba testare SOLO una classe per volta e non l'interazione tra più classi, ovvio |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:36.


















