Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
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


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Prosegue lo sviluppo del telescopio spaz...
28 astronauti cinesi hanno condotto un'e...
Dal Padiglione Italia al mercato globale...
POCO M8: display AMOLED luminoso, batter...
ECOVACS, tante novità a Las Vegas...
Caso Galaxy Ring difettoso: Samsung chiu...
Targa e assicurazione per monopattini el...
AI Cloud Protect: la soluzione di Check ...
Nuovo spettacolare video del razzo spazi...
Hisense presenta a CES 2026 il display M...
XPeng P7+ è pronta per l'Europa: ...
IKEA nuove lampade Matter annunciate al ...
Il telescopio Hubble potrebbe andare dis...
Hisense introduce RGB MiniLED evo (a qua...
Deumidificatore De'Longhi in offerta su ...
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: 02:43.


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