|
|
|
![]() |
|
Strumenti |
![]() |
#1 | ||
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
[JAVA] Semplice calcolo Area Rettangolo
Allora, di sotto vi riporterò il codice scritto (funzionante), ma nn sono riuscito ad inserire e capire (come richiesto dal libro), dove, quando e perché inserire i metodi getWidth e getHeight.
L'esercizio mi chiedeva semplicemente questo: "Costruire un oggetto Rectangle che ne calcoli l'area e la visualizzi. Usare i metodi getWidth e getHeight e visualizzare anche il valore previsto." Io ho creato l'oggetto Rectangle. L'ho inserito in un frame e calcolato l'area, visualizzando il risultato della stessa. Qualcuno sa dirmi se ho sbagliato qualcosa e soprattutto come dovevo usare in questo caso i metodi getWidth e getHeight? Voglio assolutamente capire il concetto. Grazie mille! ![]() - CLASSE RECTANGLE COMPONENT Quote:
- CLASSE RECTANGLEVIEWER Quote:
|
||
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
mmm...sento che mi sfugge qualcosa....!! Ci sono sul costruire un oggetto Rectangle, per l'area basta fare il prodotto larghezza*altezza, per visualizzare il tutto basta anche una stampa a video, quindi senza finestre & co......ma per il valore previsto, proprio non mi trovo ![]() Che vuol dire?ma è proprio quello il testo dell'esercizio? Comunque i metodi getWidth e getHeight sono metodi accessori degli oggetti di tipo Rectangle. Questi metodi accessori, lo saprai, restituiscono i valori delle variabili di istanza dell'oggetto. ad esempio la classe Rectangle sarà fatta più o meno: Codice:
public class Rectangle { private int posizioneX; private int posizioneY; private int larghezza; private int altezza; public Rectangle(int x, int y, int width, int height) { posizioneX = x; posizioneY = y; larghezza = width; altezza = height; } public int getWidth() { return larghezza; } public int getHeight() { return altezza; } }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ciao Jim Fox,
credo che la richiesta di utilizzare i metodi getWidth() e getHeight() della classe Rectangle che usi nella tua classe RectangleComponent fosse relativa proprio al calcolo dell'area. Mi spiego: tu per costruire il tuo Rectangle hai fatto così: Codice:
[...] Rectangle box = new Rectangle(5, 10, 40, 80); [...] Codice:
[...] int base, altezza, area; base = 40; altezza = 80; area = base * altezza; [...] Codice:
int area = box.getWidth() * box.getHeight(); Codice:
int area1 = 80 * 40; int area2 = box.getWidth() * box.getHeight(); System.out.println("Confronto tra area1 e area2"); System.out.println("area1 = " + area1); System.out.println("area2 = " + area2);
__________________
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) |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Ah...se è così allora mi inchino!!! Possibile che non ci sono arrivato?!? ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#5 | ||
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Innanzitutto grazie mille del supporto ragazzi! Visto che sono partito da zero in programmazione, ci sto mettendo il massimo impegno e con il vostro aiuto sto riuscendo a capire molte cose e soprattutto sto imparando a ragionare...
Tornando all'esercizio, ho buttato giù il programma che mi avevate suggerito, ma il compilatore (ora ho iniziato ad utilizzare un IDE, NetBeans x la precisione), mi dava sempre errore su: Quote:
Infatti con il codice che seguirà, tutto funziona correttamente: Quote:
![]() Ultima modifica di Jim Fox : 19-09-2008 alle 01:52. |
||
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Sì
![]() Volendo, se è richiesto che l'area sia memorizzata in un int, ti bastava fare un cast esplicito: Codice:
int area; [...] area = (int) (box.getWidth() * box.getHeight()); Quote:
![]()
__________________
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) Ultima modifica di banryu79 : 19-09-2008 alle 07:49. |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
![]() ehmmm...caspita, per davvero! ![]() Visto? anche io sto imparando qualcosa da te. ![]() A questo punto approfitto del post per chiedere: come mai questa scelta? Ora ho controllato, sia rectangle che point che dimension vengono costruiti con int, ma poi vengono restituiti con double...e quindi la domanda è spontanea....perchè?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Allora, vi riporto un atro quesito... Sotto il testo:
Scrivete un programma FourRectanglePrinter che costruisca un oggetto Rectangle, visualizzi la sua posizione invocando System.out.println(box) e quindi lo sposti e ne visualizzi la posizione per altre tre volte, in modo che, se i rettangoli fossero disegnati, formerebbero un unico grande rettangolo. Io l'ho scritto così: Quote:
java.awt.Rectangle[x=50,y=50,width=60,height=80] java.awt.Rectangle[x=110,y=50,width=60,height=80] java.awt.Rectangle[x=230,y=50,width=60,height=80] java.awt.Rectangle[x=410,y=50,width=60,height=80] Che ne pensate? Il regionamento è giusto o x caso mi chiedeva di visualizzare i 4 rettangoli disegnati?
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
una cosa del genere mi ricordo di averla fatta anch'io tempo fa...
![]() tanto per, perchè non provi a fare tutte le stampe in un ciclo for? potrebbe esserti di esercizio. E poi prova anche a fare delle traslazioni sull'asse Y. tipo tipo così: (le O sono i rettangoli) OO OO viene fuori comunque un rettangolo più grande no?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Bè cicli for x il momento meglio che li lascio da parte, nn vorrei addentrarmi in cose che nn ho ancora fatto e creare confusione
![]() Cmq sotto l'esercizio ci sono disegnati proprio 4 rettangolini, uniti in modo da formarne solo uno, esattamente come hai fatto tu: OO OO Ora che mi hai detto: "prova anche a fare delle traslazioni sull'asse Y" ho capito di aver commesso un errore, perché il testo dell'esercizio diceva proprio di visualizzarli in quel modo ![]() Infatti così come ho fatto io viene fuori una cosa del genere: OOOO ... Sbaglio???
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
No no hai ragione.
Beh io mi ricordavo di una cosa simile ecco perchè te l'ho detto...ma stai facendo gli esercizi di programmazione sul libro di horstmann???mi sembra di averlo letto lì questo qua. Beh per il ciclo for allora è meglio aspettare (se non vado errato e se è quello il libro, tu sei al cap.2, i cicli sono al 5 o al 6)
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#12 | |
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Quote:
![]() ![]() Un ultima cosa su questo quesito voglio chiederti. Se invece di stamparli in console, io volessi visualizzare i quattro rettangolini: OO OO come dovrei fare?
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Intendi visualizzare a video mediante grafica? Allora ti toccherebbe tuffarti nelle meraviglie di Java2D e fare un minimo di conoscenza con il signor AWT e la signorina SWING.
__________________
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) |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Per visualizzarli dovresti fare come hai fatto all'inizio con il metodo draw(Rectangle r) di Graphics.
La classe Rectangle di java.awt è pensata solo per astrarre il concetto di forma geometrica e si è scelto di non mischiare questa definizione con il disegno! In pratica Rectangle è un oggetto che tiene in memoria solo quello che tu vedi: coordinate (x,y) dell'angolo in alto a sinistra, larghezza e altezza. Niente più. PS: e ci risiamo....post praticamente contemporanei ma io arrivo sempre dopo ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#15 | |
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Appunto. Ve lo chiedevo perché già in un precedente esercizio mi era capitato di importare:
import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import javax.swing.JComponent; Era l'esercizio dove dovevo visualizzare un rettangolo in un frame ed ho dovuto creare due classi, una RectangleComponent e l'altra Rectangle Viewer. Questo è il codice della classe RectangleComponent Quote:
![]() ps: prendete in esame questo esempio del singolo rettangolo translato, poi una volta che ho capito del tutto questa cosa, voglio provare da solo a far visualizzare i 4 rettangolini. ![]() OO OO Grazie mille ragazzi!!!!!!!!!!
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
adesso sei tu che stai correndo...
![]() in sostanza per disegnare su un componente, devi creare una classe dove estendi JComponent e poi fai override di paintComponent(Graphics g), proprio come hai fatto tu. In mezzo però c'è molta teoria, che và dall'ereditarietà alla grafica con swing e awt!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se vuoi addentrarti in maniera graduale e guidata nelle funzionalità che Java mette a disposizione per fare rendering a video, allora ti consiglio un approccio più calmo, ragionato e completo.
Potresti partire da qui.
__________________
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) |
![]() |
![]() |
![]() |
#18 | ||
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Quote:
Bè, il libro mi ha spiegato sommariamente queste cose, per questo nn riesco, ancora, a capire bene il meccanismo. ![]() Il problema che ho avuto quando ho compilato la prima volta quel codice, è che l'IDE mi diceva che non trovava il main. Successivamente ho capito che dovevo creare all'interno del progetto una seconda classe, RectangleViewer, che mi richiamava l'altra: Quote:
Quello che Vi chiedevo, è se posso far visualizzare il rettangolo anche "senza" un frame ed inserire il main nella prima classe RectangleComponent ![]()
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
||
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Non hai letto con attenzione...la risposta è no!
Per disegnare su un pannello devi (e dico devi) fare override di paintComponent (e lo fai solo estendendo la classe JComponent). E' ancora troppo complicato, tieni in sospeso per ora! ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#20 | |
Member
Iscritto dal: Aug 2008
Messaggi: 118
|
Quote:
![]() ![]()
__________________
I sogni sono risposte a domande che non siamo ancora in grado di fare!!! MacBook Pro 13,3'' 2.53GHz | Mac Mini 2.26GHz
iPhone 3GS 16GB | Nero | iPod Nano 5G 8GB | Red | LED Cinema Display 24'' |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:59.