Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-08-2012, 18:31   #1
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
[Java] Aiuto su metodi

Salve ragazzi...io non ho mai programmato ad oggetti...ho solo visto qualcosina quindi chiedo pietà
Devo dare un esame dove è richiesto di conoscere un pò di java e leggendo degli esempi ci sono degli statement un pò complessi per me che non riesco a capire.
Questo codice che sto leggendo riguarda un sistema di gestione bibliotecario di prestito libri e annessi...

leggendo a giro per il codice incontro spesso questi metodi un pò complessi:

premetto che qui siamo all'interno della classe Biblioteca:

Codice:
public Testo getTesto(String titolo, String autore){
		for(Iterator<Testo> i = testi.iterator();i.hasNext();){
			Testo testo = (Testo)i.next();
			if(testo.getAutore().equalsIgnoreCase(autore) && testo.getTitolo().equalsIgnoreCase(titolo))
				return testo;
		}
		throw new RuntimeException("Testo non presente.");
	}

Cioè io non capisco per esempio la condizione in quell'if!
Se ci fosse stato solo : testo.getAutore() allora voleva dire che usavo il metodo getAutore della classe testo ma in questo caso? Come li leggo tutti quei metodi divisi dai punti?


Grazie mille
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2012, 21:21   #2
Ballantine
Member
 
L'Avatar di Ballantine
 
Iscritto dal: May 2004
Messaggi: 278
Quote:
Originariamente inviato da Solido Guarda i messaggi
Se ci fosse stato solo : testo.getAutore() allora voleva dire che usavo il metodo getAutore della classe testo ma in questo caso? Come li leggo tutti quei metodi divisi dai punti?
Stai sempre usando il metodo getAutore() della classe testo. Questo metodo ti restituisce un oggetto di tipo String, e quindi puoi chiamare su di esso un qualsiasi metodo di quella classe, come equalsIgnoreCase().
Una versione "allungata" dello stesso codice è:

Codice:
...
for(Iterator<Testo> i = testi.iterator();i.hasNext();){
     Testo testo = (Testo)i.next();
     String autoreTesto = testo.getAutore();
     String titoloTesto = testo.getTitolo();
     if(autoreTesto.equalsIgnoreCase(autore) && titoloTesto.equalsIgnoreCase(titolo))
          return testo;
}
...
__________________
PROCESSORE: AMD Athlon64 2800+ Boxed - MOTHERBOARD: Gigabyte K8NS nForce3 250 - SCHEDA VIDEO: 3D Prophet 9800 Pro 128MB - RAM: 512MB Corsair Value + 512 V-Data - CASE: Chieftech Dragon - ALIMENTATORE: Q-TEC 550W - HARD DISK: Seagate SATA 80 GB - LETTORE DVD: LG 16x52x - MASTERIZZATORE: Nec ND-3520
Ballantine è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2012, 22:49   #3
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Ciao, innanzi tutto grazie x adesso, Solo che non ho capito troppo bene il concetto! Io nella classe testo non ho alcun metodo che si chiama EqualsIgnoreCase().... Nella classe trovo i seguenti metodi:
GetAutore, getEsemplari, getPrenotazioni, getTitolo, addPrenotazione, addEsemplAre!
Edit: ho letto che è un metodo Java. Ma in quale libreria si trova? Io qui vedo solo un import ovvero: Java.util.*
Cmq saresti così gentile da spiegarmi come funziona questa concatenazione di metodi e a cosa serve fare così ? Grazie veramente!!!
__________________
Ho concluso felicemente molte trattative su questo forum!

Ultima modifica di Solido : 29-08-2012 alle 22:59.
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2012, 00:52   #4
Ballantine
Member
 
L'Avatar di Ballantine
 
Iscritto dal: May 2004
Messaggi: 278
Quote:
Originariamente inviato da Solido Guarda i messaggi
Edit: ho letto che è un metodo Java. Ma in quale libreria si trova? Io qui vedo solo un import ovvero: Java.util.*
Cmq saresti così gentile da spiegarmi come funziona questa concatenazione di metodi...
Esatto, equalsIgnoreCase() è un metodo Java, appartenente alla classe String.
La classe String appartiene al package java.lang, che contiene tutte le classi "base" per la programmazione Java. I package sono dei contenitori utilizzati per raggruppare classi, che solitamente appartengono alla stessa categoria (es: java.io contiene tutte le classi relative all'input/output). Importando i package puoi utilizzare le classi da esso contenute e i metodi di queste classi. Il package java.lang però è un caso particolare, poiché viene automaticamente incluso anche senza scrivere il relativo import. Se così non fosse, il codice da te postato non compilerebbe, poiché il compilatore non sarebbe in grado di riconoscere nemmeno i tipi "base" come String.
Tornando al metodo equalsIgnoreCase(), ti spiego più nel dettaglio come è viene effettuata la chiamata:
1) si parte da un oggetto di tipo Testo, sul quale viene chiamato il suo metodo getAutore(), che restituisce un oggetto di tipo String.
2) siccome hai un oggetto di tipo String, puoi chiamare su di esso i metodi della relativa classe (tabella "Method Summary"). Tra questi metodi troverai anche equalsIgnoreCase(...).
3) il metodo equalsIgnoreCase restituisce un booleano, che verrà usato per determinare il risultato della successiva clausola "AND".

Quote:
Originariamente inviato da Solido
...e a cosa serve fare così ?
Queste concatenazioni di solito vengono usate se in seguito non si devono riutilizzare i valori restuiti dai metodi concatenati.
Prendiamo ad esempio il codice esteso che ti avevo scritto prima e quello postato da te in origine. Le chiamate "intermedie" getAutore() e getTitolo() vengono eseguite solo quella volta all'interno del metodo, quindi la mia versione estesa non porta nessun beneficio poiché autoreTesto e autoreTitolo vengono utilizzate una volta sola.
Poniamo invece che il metodo, ogni volta che viene trovato un libro diverso da quello che si sta cercando, stampi a video il nome e il titolo di questo libro:

Codice:
for(Iterator<Testo> i = testi.iterator();i.hasNext();){
     Testo testo = (Testo)i.next();
     if(testo.getAutore().equalsIgnoreCase(autore) && testo.getTitolo().equalsIgnoreCase(titolo))
          return testo;
     else
          System.out.println("Il libro " + testo.getTitolo() + " di " + testo.getAutore() + " non è quello che stiamo cercando."); 
}
In questo caso avrebbe senso memorizzare i risultati di getTitolo() e getAutore() in due variabili, poiché entrambi vengono chiamati due volte.
In questo caso utilizzare due variabili piuttosto che chiamare due volte getTitolo() e getAutore() non ha un impatto visibile sulle performance perché sono metodi molto semplici, ma se al loro posto dovessimo chiamare dei metodi che effettuano delle operazioni "pesanti" (es: reperimento/inserimento di una grande mole di dati da/in un database) allora la differenza sarebbe notevole.
__________________
PROCESSORE: AMD Athlon64 2800+ Boxed - MOTHERBOARD: Gigabyte K8NS nForce3 250 - SCHEDA VIDEO: 3D Prophet 9800 Pro 128MB - RAM: 512MB Corsair Value + 512 V-Data - CASE: Chieftech Dragon - ALIMENTATORE: Q-TEC 550W - HARD DISK: Seagate SATA 80 GB - LETTORE DVD: LG 16x52x - MASTERIZZATORE: Nec ND-3520

Ultima modifica di Ballantine : 30-08-2012 alle 00:59.
Ballantine è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2012, 09:48   #5
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Ok, quindi se ho capito bene il compilatore prima esegue (testo.getAutore)-> questo come risultato mi da una stringa e dopo a questa stringa risultante viene applicato il metodo equalIgnoreCase giusto?
Quindi per esempio se avessi avuto ad esempio:
testo.getId che è un metodo che mi restituisce un intero non avrei potuto concatenare il metodo precedente?

ps: che vuol dire una cosa del tipo:
Punteggio tmp = punteggi.get(0); ??
non capisco quel get(0)

Grazie mille! Mi sei stato di aiuto! Ho comprato un libro di java ma dopo aver buttato diverse decine di euro ho visto che non è scritto per niente bene, infatti questi concetti non riesco a reperirle
__________________
Ho concluso felicemente molte trattative su questo forum!

Ultima modifica di Solido : 30-08-2012 alle 10:15.
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2012, 12:23   #6
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da Solido Guarda i messaggi
ps: che vuol dire una cosa del tipo:
Punteggio tmp = punteggi.get(0); ??
non capisco quel get(0)
Ciao
Supponendo che 'punteggi' sia un oggetto di tipo List<Punteggio>, cioè un oggetto che incapsula una lista di oggetti dello stesso tipo (in questo caso Punteggio), il metodo get restituisce l'oggetto che si trova nella lista alla posizione specificata dal parametro passato in ingresso. Quindi in questo caso vai a prendere il primo oggetto (perchè passi 0) che è presente nella lista. Ogni volta che vuoi sapere cosa fa un metodo basta consultare la documentazione online:
http://docs.oracle.com/javase/6/docs....html#get(int)
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield

Ultima modifica di Mettiu_ : 30-08-2012 alle 12:25.
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2012, 12:33   #7
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Ciao
Supponendo che 'punteggi' sia un oggetto di tipo List<Punteggio>, cioè un oggetto che incapsula una lista di oggetti dello stesso tipo (in questo caso Punteggio), il metodo get restituisce l'oggetto che si trova nella lista alla posizione specificata dal parametro passato in ingresso. Quindi in questo caso vai a prendere il primo oggetto (perchè passi 0) che è presente nella lista. Ogni volta che vuoi sapere cosa fa un metodo basta consultare la documentazione online:
http://docs.oracle.com/javase/6/docs....html#get(int)
eh si ci ero arrivato proprio nel momento leggendo altro codice. Grazie mille
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 11:15   #8
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
perdonatemi se vi rompo ancora...adesso sto leggendo un esempio di un sistema di gestione di una squadra di calcio! Il sistema deve tenere conto dei giocatori che stanno nella rosa e delle partite che vengono affrontate dalla squadra, sostituizioni ecc..

Adesso sono nella classe Partita e c'è questo pezzo di codice:

Codice:
public void addPartecipazione(Partecipazione partecipazione){
		partecipazioni.add(partecipazione);
	}
    
	public Partecipazione getPartecipazione(Giocatore g){
		Iterator<Partecipazione> it = partecipazioni.iterator();
		while (it.hasNext()){
			Partecipazione partecipazione = it.next();
			if (partecipazione.getGiocatore() == g) return partecipazione;
		}
		System.out.println("***Attenzione da Partita: non c'è la partecipazione del giocatore "+ g.getNome());
		return null;
	}
    
}

public void addPartecipazione(Partecipazione partecipazione)

il primo Partecipazione è il tipo e il secondo partecipazione è il dato passato?

e poi volevo chiedere una cosa su iterator... non mi torna come faccia a esaminare il primo elemento dato che inizia sempre dal prox elemento:

while (it.hasNext()){
Partecipazione partecipazione = it.next();

__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:09   #9
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da Solido Guarda i messaggi
public void addPartecipazione(Partecipazione partecipazione)

il primo Partecipazione è il tipo e il secondo partecipazione è il dato passato?
Si, partecipazione è l'oggetto passato e Partecipazione il suo tipo.
Quote:
Originariamente inviato da Solido Guarda i messaggi
e poi volevo chiedere una cosa su iterator... non mi torna come faccia a esaminare il primo elemento dato che inizia sempre dal prox elemento:

while (it.hasNext()){
Partecipazione partecipazione = it.next();

Attenzione: nella guardia del while viene chiamato il metodo hasNext() che ti dice semplicemente SE CI SONO O NO oggetti da iterare ma non estrae nulla. Nel corpo del while invece il metodo next() ritorna davvero l'oggetto (che sappiamo esserci perchè altrimenti la guardia fallirebbe e si uscirebbe dal while). Spero di essere stato chiaro
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:11   #10
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Si, partecipazione è l'oggetto passato e Partecipazione il suo tipo.

Attenzione: nella guardia del while viene chiamato il metodo hasNext() che ti dice semplicemente SE CI SONO O NO oggetti da iterare ma non estrae nulla. Nel corpo del while invece il metodo next() ritorna davvero l'oggetto (che sappiamo esserci perchè altrimenti la guardia fallirebbe e si uscirebbe dal while). Spero di essere stato chiaro
si infatti ma io mi riferivo al metodo next() ..ovvero il primo next che viene fatto non viene fatto sul secondo? Oppure parte tipo da un indice -1 e quindi il next si riferisce all'elemento 0?
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:17   #11
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Il concetto di indice, secondo me, è fuoriviante nel caso degli iterator. Un iterator serve a scorrere anche strutture dati non ordinate e non indicizzate da 0 a N-1, come siamo abituati a pensare con gli array. Quindi la prima volta che invochi next() lui prenderà semplicemente il primo elemento in base ad un criterio che dipende dalla struttura dati che stai visitando...
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:32   #12
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Il concetto di indice, secondo me, è fuoriviante nel caso degli iterator. Un iterator serve a scorrere anche strutture dati non ordinate e non indicizzate da 0 a N-1, come siamo abituati a pensare con gli array. Quindi la prima volta che invochi next() lui prenderà semplicemente il primo elemento in base ad un criterio che dipende dalla struttura dati che stai visitando...
Ohhh grazie mille adesso il concetto mi è chiaro... E' che applicandolo su un ArrayList io pensavo che fosse strutturato come un array e quindi questo next mi depistava un pò... adesso cerco di approfondire poi dovrò comprar eun buon libro mi sa... avevo acquistato Java 7 guida completa ma non mi piace per niente...proverò a venderlo
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:37   #13
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da Solido Guarda i messaggi
Ohhh grazie mille adesso il concetto mi è chiaro... E' che applicandolo su un ArrayList io pensavo che fosse strutturato come un array e quindi questo next mi depistava un pò... adesso cerco di approfondire poi dovrò comprar eun buon libro mi sa... avevo acquistato Java 7 guida completa ma non mi piace per niente...proverò a venderlo
Si nel caso di ArrayList scorrere con iterator o col classico ciclo for che va da 0 a DIM-1 è praticamente la stessa cosa. Tuttavia in Java le collezioni di oggetti che implementano l'interfaccia List bisogna sempre scorrerle con un Iterator.
Ciao e buon studio!
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 12:39   #14
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Si nel caso di ArrayList scorrere con iterator o col classico ciclo for che va da 0 a DIM-1 è praticamente la stessa cosa. Tuttavia in Java le collezioni di oggetti che implementano l'interfaccia List bisogna sempre scorrerle con un Iterator.
Ciao e buon studio!
Ecco quindi in questo caso sarà iterator con le sue operazioni interene che si preoccuperà di partire dal primo elemento!
grazie mille intanto ^^
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
DAZN lancia la sua offerta di Natale: My...
Gigabyte fa marcia indietro? Sparito il ...
Alcuni rivenditori giapponesi bloccano l...
Le feste non placano Amazon, anzi: aggio...
Roborock Q10 S5+ a un super prezzo: robo...
Formula sceglie WINDTRE BUSINESS per gar...
EXPO 1.20: AMD migliora il supporto all'...
MacBook Pro con chip M4, 24GB di RAM e 1...
Lefant M330 da 6.000Pa a 139€ o ECOVACS ...
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: 00:16.


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