Torna indietro   Hardware Upgrade Forum > Software > Programmazione

CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-03-2009, 16:45   #1
*MATRIX*
Senior Member
 
Iscritto dal: Aug 2005
Messaggi: 439
[java] override metodi

ciao raga non sono molto pratico di java

mi potete dire se questo override è legale?

__________________
my pc :core duo2 e8500 ,asus rampage formula,corsair dominator 4giga, sapphire ati4870 512mb monitor samsung 22" t220hd vista 32bit
Nel corso della vita, non ci sarà certo penuria di gente che ti dice come vivere, avranno tutte le risposte, cosa dovresti fare, cosa non dovresti fare. Non ci discutere mai, tu di' sempre: «Ah sì? è un'idea davvero brillante» e poi fai come ti pare.(Woody Allen)
*MATRIX* è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 17:31   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non c'è sovrascrittura di metodi in quel diagramma. C'è invece sovraccaricamento (metodo con lo stesso nome ma lista di parametri diversa).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 17:34   #3
*MATRIX*
Senior Member
 
Iscritto dal: Aug 2005
Messaggi: 439
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Non c'è sovrascrittura di metodi in quel diagramma. C'è invece sovraccaricamento (metodo con lo stesso nome ma lista di parametri diversa).
Come posso fare allora per definire il metodo press per ogni sottoclasse?
__________________
my pc :core duo2 e8500 ,asus rampage formula,corsair dominator 4giga, sapphire ati4870 512mb monitor samsung 22" t220hd vista 32bit
Nel corso della vita, non ci sarà certo penuria di gente che ti dice come vivere, avranno tutte le risposte, cosa dovresti fare, cosa non dovresti fare. Non ci discutere mai, tu di' sempre: «Ah sì? è un'idea davvero brillante» e poi fai come ti pare.(Woody Allen)
*MATRIX* è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 18:04   #4
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Per override si intende definire un metodo con la stessa signature (ovvero nome e parametri in ingresso) della classe madre.
Quindi ti basta definire nelle classi figlie lo stesso IDENTICO metodo (in termini di signature ovviamente, il corpo sarà diverso, altrimenti non avrebbe senso ridefinirli) della classe madre, ovvero press()
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 20:39   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da *MATRIX* Guarda i messaggi
Come posso fare allora per definire il metodo press per ogni sottoclasse?
Dipende da "quello che vuoi fare". Se vuoi invocare "il metodo giusto in base al tipo di argomento" allora la faccenda è interessante. Bisogna infatti tener conto che, in Java:

Codice:
class A {
	void metodo(Object arg) {
		System.out.println("object");
	}
}

class B {
	void metodo(String arg) {
		System.out.println("string");
	}
}

A a = new B();
a.metodo("hello world");
Stampa "object" e non "string".

Ciò avviene perchè la risoluzione del nome del metodo da invocare è determinata a tempo di compilazione in base ai metodi disponibili nel tipo in compilazione. A.metodo(una stringa) diventa il metodo(Object) dichiarato in A (ed esteso in B) perchè A non dichiara un metodo(String).

Una soluzione è:

Codice:
class Bottoni {
	void press(Object arg) {}
	void press(char c) {}
	void press(int i) {}
	void press(String s) {}
}

class BottoniAlfabetici {
	void press(char c) {}
}

class BottoniNumerici {
	void press(int i) {}
}

class BottoniOperazioni {
	void press(String s) {}
}
Qui hai sovrascrittura.

Bottoni x = new BottoniAlfabetici();
x.press(10); //-> invoca la definizione di press(int) data in BottoniAlfabetici

Esistono alternative più esotiche, ad esempio una mappa di funtori, o esoteriche, vale a dire l'invocazione riflessiva di metodi.

La prima cambia il design della tua gerarchia di tipi, la seconda non è neppure esprimibile in un diagramma di classi UML riferito a Java .
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2009, 10:36   #6
TorpedoBlu
Senior Member
 
L'Avatar di TorpedoBlu
 
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
meglio lavorare con un interfaccia implementata da una classe delegate che si preoccupa di istanziare la classe giusta / il metodo giusto attraverso il pattern factory.

(se poi dovrai modificare qualcosa o aggiungere nuove implementazioni del metodo non dovrai modificare l'interfaccia, ma solo aggiungere una nuova classe e modificare il factory, disaccoppiando il resto dalle tue classi)
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85
TorpedoBlu è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2009, 14:32   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E come risolvi il problema dell'invocazione dinamica di un metodo sovraccaricato?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2009, 15:55   #8
TorpedoBlu
Senior Member
 
L'Avatar di TorpedoBlu
 
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
E come risolvi il problema dell'invocazione dinamica di un metodo sovraccaricato?
la chiamata è wrappata apposta per non essere più il compilatore a scegliere.

cmq nel disegno il problema è che il metodo deve avere la stessa segnatura.

al massimo wrappi il parametro in ingresso
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85
TorpedoBlu è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2009, 16:32   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
In pratica ad un certo punto sei costretto ad una conversione esplicita.

Rinunciare al typesystem non è una buona idea. Tanto varrebbe usare uno script e rischiare di spararsi nei piedi ogni due enunciati.

Non che l'interfaccia sia una brutta idea, anzi. Bottone grida "interfaccia" in ogni direzione. Le factory poi in Java sono come la manna: risolvono il problema dei costruttori che non restituiscono istanze.

Qui il problema però è che A.press(T) è supposto covariante in B.press(V) per ogni B <: A e T <: V.

Mentre in Java è invariante.

Tra l'altro forse il problema è questo. Non ho ancora saputo se l'intenzione implicita è poter dire:

Bottone x = new BottoneNumerico();
x.press(10);

e non ottenere un lamento dal compilatore o se il problema sia un altro.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!

Ultima modifica di PGI-Bis : 03-04-2009 alle 17:38. Motivo: "supporto covariante" non aveva un gran senso :D.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
Carte Pokémon dimenticate in soff...
Engwe, due e-bike superleggere in offert...
Apple vieta le app che nascondono funzio...
Una tassa da 10 miliardi spaventa Zucker...
Capcom conferma una violazione di CAPCOM...
Nvidia, Anthropic e OpenAI: ecco quanto ...
Nuovissimi sconti Amazon: 7 articoli low...
Google amplia Personal Intelligence con ...
Roborock Saros 20 Flow Complete in offer...
PlayStation dice addio ai dischi dal 202...
Un miliardo e un vecchio legame, cosa c'...
Apple CarPlay e Android Auto wireless a ...
Iliad punta sul Wi-Fi Calling: via ai te...
Tesla con FSD attivo travolge e uccide u...
OPPO Find X10 Series, ecco la strategia ...
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: 11:21.


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