PDA

View Full Version : [JAVA]Esercizi x imparare


Bahamut Zero
09-10-2005, 17:57
Trovo un pò di difficoltà con la sintassi......l'idea di base della programmazione un pò ce l'ho ma non riesco mai a ricordarmi x bene come scrivere le cose!

Avete qualche raccolta di esercizi?Mi servono proprio quelli base..un libro cartaceo non ce l'ho e quelli su internet non hanno esercizi! Con Google riesco a trovare solo quelli ababstanza complessi :(

Bahamut Zero
09-10-2005, 19:41
Stavo osservando questo esercizio....

Scrivere una classe Pubblicazione i cui oggetti rappresentano pubblicazioni.
Ogni oggetto Pubblicazione deve contenere le seguenti variabili di istanza:

* Titolo (di tipo String)
* Autore (di tipo String)
* Numero di pagine approssimativo (di tipo int)
* Prezzo di copertina in EURO (di tipo int)

La classe deve avere i seguenti metodi:

* costruttore: prende come parametri titolo, autore e prezzo di copertina ed inizializza lo stato dell'oggetto. Per calcolare il numero di pagine, assumere che ogni pagina costa 10 centesimi.
* metodi getTitolo, getAutore, getPrezzo, getPagine che restituiscono i valori degli attributi
* metodi setTitolo, setAutore, setPrezzo, setAutore che modificano i valori degli attributi (nota: se si modifica il prezzo, allora anche il numero di pagine deve essere modificato di conseguenza, e viceversa)
* metodo toString che restituisce una stringa con i dati dell'oggetto su cui è invocato

K il codice è questo............

Pubblicazione.java

public class Pubblicazione {
private String titolo;

private String autore;

private int pagine;

private int prezzo;

public Pubblicazione(String t, String a, int p) {
this.titolo = t;
this.autore = a;
this.prezzo = p;
this.pagine = (int)(p / 0.1);
}

public String getTitolo() {
return this.titolo;
}

public String getAutore() {
return this.autore;
}

public int getPrezzo() {
return this.prezzo;
}

public int getPagine() {
return this.pagine;
}

public void setTitolo(String t) {
this.titolo = t;
}

public void setAutore(String a) {
this.autore = a;
}

public void setPrezzo(int p) {
this.prezzo = p;
this.pagine = (int)(p / 0.1);
}

public void setPagine(int pag) {
this.pagine = pag;
this.prezzo = (int)(pag * 0.1);
}

public String toString() {
return this.autore + ": \"" + this.titolo + "\", pag. " + this.pagine + ", " + this.prezzo + " EURO.";
}
}


ProvaPubblicazione.java

public class ProvaPubblicazione {
public static void main(String[] args) {

// crea oggetto Pubblicazione
Pubblicazione x;
x = new Pubblicazione( "Shining", "Stephen King", 20);

// lo stampa
System.out.println(x.toString());

// ne cambia il titolo
x.setTitolo("Shining II");

// lo ristampa
System.out.println(x.toString());

// ne cambia il prezzo
x.setPrezzo(40);

// si noti che il numero di pagine cambia di conseguenza
System.out.println(x.getPagine());

// ora ne cambia il numero di pagine
x.setPagine(100);

// il prezzo e' cambiato di conseguenza...
System.out.println(x.getPrezzo());
}
}


Allora il secondo file deve basarsi sul primo x funzionare...questo mi pare xchè ha bisogno dei metodi del primo file!Ma cosa lega i 2 file?Io non riesco a trovare quella cosa che li mette in collegamento :confused:

Mi sembra di avere a che fare con i beans ma li se non sbaglio in alto mettevo package XXX...qui pure se non metto niente funziona :stordita:

dnarod
09-10-2005, 20:10
Allora il secondo file deve basarsi sul primo x funzionare...questo mi pare xchè ha bisogno dei metodi del primo file!Ma cosa lega i 2 file?Io non riesco a trovare quella cosa che li mette in collegamento

non c e nulla nei file che li metta in comunicazione....fa parte di java quello, per il semplice fatto che sono nella stessa cartella (altrimenti non funzionano ovviamente).....come se tu fai un System.out.println non hai importato System, ma funziona lo stesso.....perche è qualcosa di gia definito in java, di automatico


non ho letto tutto il codice, ma è una classina semplice che ti fa degli oggetti "pubblicazione".....se funziona ok, ma vorrei darti un consiglio....hai pastato il codice, che è scritto abb disordinatamente (motivo per cui dopo la seconda riga non ho piu letto); se sono i tuoi prof che ti han detto che DEVI fare cosi è un conto, ma per convenzione si indenta il codice, è piu ordinato....non che sia pignolo io, è che semplicemente diverra piu distensivo andare a leggere centinaia di righe di listato quando bisogna scovare il baco in un programmello piu complesso...

cmq il file te lo trova perche sei nella stessa cartella....a dire il vero puoi tranquillamente mettere il test all interno della classe, ancora piu comodo, senza avere 2 file, in questo modo:

[classe principale]
//corpo
[main]
corpo
[chiudi main]
[chiudi classe]

Bahamut Zero
09-10-2005, 21:19
K tnk..figa sta cosa del Java...io ora ho ancora un pò in testa il C che mi facevo i prototipi delle funzioni alla fine del codice...

Diciamo che ora le funzioni del C sono i metodi in Java giusto?

Cosi posso scrivere in un file tutti i metodi e come funzionano e negli altri file li richiamo solamente senza insozzare di + il codice giusto? :)

dnarod
10-10-2005, 01:52
si, puoi farlo, ma il java ha una filosofia parecchio diversa dal c, per cui puoi fare praticamente tutto quello che vuoi (in realta non e cosi), ma non lo fai, perche si segue, per convenzione, una logica precisa....cmq in linea di massima puoi fare un interfaccia che contenga i metodi (funzioni in c) che poi puoi utilizzare dove ti pare...nel c poi non ci sono oggetti ma solo strutture, mentre il java è un linguaggio dove ogni cosa è un oggetto (ogni!) quindi si preferisce fare una classe per ogni cosa che ti puo servire...se volessimo fare un paragone java è un bigotto perfettino iperattento alle formalita, mentre c è la cloaca ribelle che accetta un po tutto (io preferisco la cloaca in vero)