Torna indietro   Hardware Upgrade Forum > Software > Programmazione

KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC lancia il nuovo monitor gaming H27E6, un modello da 27 pollici che promette prestazioni estreme grazie al pannello Fast IPS con risoluzione 2K QHD (2560x1440). Il monitor si posiziona come una scelta cruciale per gli appassionati di eSport e i professionisti creativi, combinando una frequenza di aggiornamento di 300Hz e un tempo di risposta di 1ms con un'eccezionale fedeltà cromatica
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-08-2009, 23:54   #1
andrew1988
Member
 
L'Avatar di andrew1988
 
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
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 00:36   #2
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da andrew1988 Guarda i messaggi
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
la prima domanda non l'ho capita ...cioè tu scrivi Rectangle e il compilatore quando và a cercare quella classe vede che nella dichiarazione è presente anche il metodo "getWidth()"; la risposta della seconda domanda invece è si, viene liberato lo spazio immediatamente essendo che l'istanza dell'oggeto Rectangle non ha nessun referenziazione che tu possa utilizzare successivamente.
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 00:44   #3
andrew1988
Member
 
L'Avatar di andrew1988
 
Iscritto dal: May 2005
Città: Modena
Messaggi: 276
scusa ma Rectangle() e' una classe o un costruttore (appartenente alla classe Rectangle)?
__________________
andrew
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 01:04   #4
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da andrew1988 Guarda i messaggi
scusa ma Rectangle() e' una classe o un costruttore (appartenente alla classe Rectangle)?
il Rectangle() di cui ti rieferisci è semplicemente il codice che richiama il costruttore della classe interessata ...e questo lo capisci dal fatto della keyword new (keyword) presente davanti al nome "Rectangle" della classe che stai istanziando
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 01:04   #5
nuovoUtente86
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).
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 01:35   #6
andrew1988
Member
 
L'Avatar di andrew1988
 
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
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 01:46   #7
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da andrew1988 Guarda i messaggi
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?
quindi deduco che se queste classi hanno uno costruttore con lo stesso nome anche il nome della classi deve'essere uguale (come vogliono le specifiche Java) ...ergo l'ambiguità verrà risolta con la keyword import che definirà la gerarchia del package che contiene la classe che realmente vuoi utilizzare.

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.
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 01:47   #8
nuovoUtente86
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.

}
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 02:16   #9
andrew1988
Member
 
L'Avatar di andrew1988
 
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
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 02:31   #10
nuovoUtente86
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");
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 02:45   #11
andrew1988
Member
 
L'Avatar di andrew1988
 
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
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 17:54   #12
andrew1988
Member
 
L'Avatar di andrew1988
 
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.
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 20:50   #13
morskott
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();
}
Come vedi quest'interfaccia modella (molto semplicemente) il comportamento di un canale di comunicazione, quello che uno ci può fare. Poi ci sono tanti modi di implementarlo.
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB
morskott è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 21:11   #14
nuovoUtente86
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.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2009, 22:57   #15
andrew1988
Member
 
L'Avatar di andrew1988
 
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
andrew1988 è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2009, 07:29   #16
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
In Java il concetto d' interfaccia nasce, per lo piu, dal sopperire al mancato supporto all' ereditarità multipla.
A uno dei progettisti di Java (Ken Arnold) una volta chiesero cosa avrebbe lasciato fuori se avesse potuto. La risposta fu "le classi".

L'interfaccia, il cui significato è quello già citato di contratto puro, è il cuore del linguaggio di programmazione Java.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2009, 11:26   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
GeForce RTX 50 SUPER cancellate o rimand...
Windows 11 si prepara a vibrare: Microso...
La “Burnout Season” colpisce l’Italia: i...
QNAP annuncia il JBOD TL-R6020Sep-RP: ol...
Siemens e NVIDIA uniscono le forze: arri...
Ricarica veloce e durata batteria: miti ...
Le "navi volanti" di Candela a...
Bambini su misura? Il caso della startup...
Iliad porta le SIM Express in edicola: r...
Offerte Amazon sui TV Mini LED Hisense 2...
Il silenzio digitale che fa male: come i...
Il responsabile del programma Cybertruck...
Domanda alle stelle per SSD e RAM: in Gi...
Zuckerberg vuole eliminare tutte le mala...
Otto suicidi, un solo chatbot: si moltip...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v