|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
[JAVA] Domanda facile da newbie
sto studiando ora java e sn veramente alle prime armi e m sn imbattuto in classi metodo oggetti.. domanda.
System.out.println(new Rectangle().getWidth()); il risultato e' che stampa a terminale la larghezza del rettangolo, ovvero 0.. ma io ho capito che viene costruito un oggetto tramite il costruttore Rectangle e col metodo getWidth() ne viene restituita la larghezza. 1) i metodi si applicano agli oggetti presenti in una determinata classe.. in questo esempio come fa a sapere in che classe si trova quel metodo? 2) passata quella istruzione, l'oggetto creato risiede ancora in memoria oppure nn essendo associato a nessuna variabile viene automaticamente liberato lo spazio? thx
__________________
andrew |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
scusa ma Rectangle() e' una classe o un costruttore (appartenente alla classe Rectangle)?
__________________
andrew |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Una classe (composta da variabili e metodi) rappresenta il modello di un' entità nel dominio del problema in esame. In quest caso parliamo di figure geometriche, se approntiamo un software per la gestione di esami universitari avremmo una classe Studente (erede presumibilmente di Persona) e cosi via...
Gli oggetti, invece, sono istanze specifiche di una determinata classe in cui le peculiarità del modello (classe) hanno un valore ben preciso (lo studente Mario Rossi matricola 3000 è un' istanza della classe Studente). Tornando ai tuoi dubbi un oggetto occupa spazio in memoria, secondo la "formattazione" stabilita dalla classe. Nel caso specifico di java (che è un linguaggio managed) tale memoria viene deallocata dal garbace collector(che di solito sfrutta i cicli idle della cpu), secondo specifici algoritmi, qualora non sussistano più riferimenti (proprio come nel tuo caso). |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
grazie ad entrambi..
altra domanda.. se importo 2 classi.. e in entambe le classi c'e' un costruttore che fa cose diverse ma con lo stesso nome.. quando io vado a creare un oggetto con quel costruttore cosa succede?
__________________
andrew |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
giusto in questo momento stò usando una classe di nome "Login" ....Eclipse, che è un IDE che aiuto a scrivere del codice, si è accorto della ambiguità è mi ha domandato che import volesse che aggiungessi tra i package a cui risultava essere presente la classe di nome Login (nel mio caso il package "webserver" e quello di Oracle "oracle.jdbc.util") in modo si risolvesse il problema. edit: se invece vuoi per forza usare due classi con lo stesso nome allora devi usare i fully qualified name come ti ha spiegato il nuovoUtente quà sotto
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- Ultima modifica di Frank1962 : 25-08-2009 alle 01:51. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Devi utilizzare i fully qualified name .
Immagina di definire in un tuo package la classe Vector e di fare qualcosa del genere import miopackage.*; import java.util.*; public MiaClasse { java.util.Vector v; //in questo caso utilizzi la classe standard. } |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
si esatto intendevo proprio il caso descritto da nuovoutente86.. in quel caso riesco ad usare quei due cosi in una classe unica facendo distinzione riguardo alla provenienza dei cosi.. e x cosi intendo metodi o costruttori presenti in una classe importata.. sisi mi pare un'ottima soluzione
__________________
andrew |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Attenzione al fatto che solo i metodi statici (sono solitamente quelli non peculiari alla singola istanza, non dipendenti dallo stato....immaginale come funzioni del C). Un esempio è Integer.parseInt(String) che preso un input restituisce un risultato senza dipendenza da un particolare oggetto.
Diversi sono i metodi d' istanza che possono essere invocati solo su oggetti attivi, come ad esempio il mutatore di residenza per una persona. Persona p= new Persona (................); p.setIndirizzo("bla bla bla"); |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
si infatti avevo letto giusto prima sul libro d java che tipo il metodo main era static xke' nn aveva alcun oggetto su cui "appoggiarsi" in quanto e' la prima cosa ad essere eseguita senza che nessun oggetto sia creato... xo' in effetti questo paragone con la funzione in C m chiarisce molto meglio le idee
__________________
andrew |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
mi potreste spiegare in modo facile cos'e' una interfaccia? magari con un esempio..
leggo sul libro ma nn ci capisco nnt.. io ho capito questo ditemi se va bene: creo una classe con determinati medoti. creo una interfaccia con altri metodi. creo un oggetto appartenente alla classe la quale potra' essere gestita con i medoti della classe, ma se poi voglio renderla disponibile ad un utente allora posso assegnare l'oggetto all'interfaccia in modo tale che questo nuovo oggetto avra' metodi dedicati per un utilizzo magari + ristretto rispetto a quelli che la classe di partenza mi garantiva giusto?
__________________
andrew Ultima modifica di andrew1988 : 25-08-2009 alle 18:08. |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
Un'interfaccia è in pratica un "contratto" che tu "stipuli" con l'utilizzatore, in pratica tu dici "io ti garantisco questa semantica, poi come viene gestita son fatti miei".
Quindi tu definisci un'interfaccia e una classe che implementa quell'interfaccia, chi userà il tuo componente utilizzerà l'interfaccia (per la creazione dell'istanza si può fare tramite factory) e quindi non saprà niente sulla reale implementazione di quel che sta usando. Per esempio un canale di comunicazione, l'interfaccia sarebbe Codice:
public interface Canale{
public void connetti(Destinazione dest); //Destinazione sarà una classe che rappresenta l'end-point a cui connettersi
public void manda(Messaggio mes); //Messaggio classe che rappresenta il messaggio
public Messaggio ricevi(); //ipotizzo un utilizzo il cui il client chiede in pooling se ha ricevuto un messaggio
public void chiudi();
}
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
In Java il concetto d' interfaccia nasce, per lo piu, dal sopperire al mancato supporto all' ereditarità multipla.
Come ti è stato già detto un' interfaccia espone (attraverso la firma dei metodi disponibili) un contratto vincolante per l' implementatore e fruibile trasparentemente (indipendentemente da quale sia la reale implementazione dei metodi) dall' utilizzatore. Una classe che implementa un' interfaccia si impegna ad implementarne (eventualmente lasciandone il corpo vuoto) tutti i metodi. Altresi un' interfaccia (che può estenderne un' altra)non può essere istanziata ma può referenziare un oggetto istanza di una classe che la implementa. Comparable c= new Comparable() // non è ammesso Comparable c= new MiaClasseComparabile(); // si, a patto che la classe implementi Comparable. |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
|
leggendo cosi' velocemente ho compreso il senso delle interfacce ma nn bene come si costruisce.. ora dv andare e domani mi leggo quelle cose con + cura e dedizione.
cmq grazie siete gentilissimi!
__________________
andrew |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
L'interfaccia, il cui significato è quello già citato di contratto puro, è il cuore del linguaggio di programmazione Java. |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quoto.
Non è che "In Java il concetto d' interfaccia nasce, per lo piu, dal sopperire al mancato supporto all' ereditarità multipla" ma è proprio per la scelta di trovare un'alternativa che non comportasse i tipici problemi che sorgono con l'ereditarietà multipla tra classi, il motivo che ha portato alle interfacce.
__________________
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) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:53.




















