Newsgroup: it.comp.java
Titolo: Dal C++ a Java: overloading operatori

ciao a tutti,
ho iniziato da poco a studiare java avendo una base di c++.
In c++ è possibile ridefinire un operatore all'interno di una classe.
Si può fare qualche cosa di simile anche in Java
Ciao
Dario


che io sappia no.
e non si puo' neanche fare eriditarietà multipla.
viva il c++!
;-)


Per fortuna no. L'idea di chi ha creato Java era che l'overloading
degli operatori fosse solo un'inutile complicazione che andava
a scapito della leggibilità del codice.
--
 Giulio Maselli - IZ1ASP
 
http://web.tiscalinet.it/iz1asp
 Il vero indirizzo e-mail è sul sito web.

 viva il c++!
Zitto che ti sente l'uomo brutto e comincia una nuova guerra santa...
:) :)
Speriamo che non abbia notato...

 ha scritto nel messaggio
news:FiQj6.32162$7U4.8...@news.infostrada.it...


 a scapito della leggibilità del codice.
L'idea dei creatori di Java era "abbiamo già tanti cazzi per il culo con la
jvm, la protezione e menate varie... lasciamo stare l'overloading degli
opertaori, lo facciamo un'altra volta".
In quanto alla leggibilità non credo proprio che la peggiori e non credo
certo sia uno dei motivi per cui non sia stato implementato l'overloading.
L'esempio di Dario è lampante.
Allora molto peggiore per la leggibilità secondo me è usare l' = per
l'assegnazione e == per l'uguaglianza.... rimpiango il := del pascal!
Piuttosto, direi che fare c=a+b non fa parte della filosofia OO, mentre
c=a.add(b) sì, forse per questo si è rinunciato all'overloading.

 ha scritto nel messaggio
news:sJOj6.30867$7U4.8...@news.infostrada.it...


> ereditarietą ... multipla č possibili in Java......
non mi risulta, al max puoi implementare le interfacce, ma non č certo la
stessa cosa.
Altrimenti, smentiscimi.

> Si può fare qualche cosa di simile anche in Java
D> che io sappia no.
Infatti. Ma  12 anni fa la  possibilità di ridefinire  un operatore mi
sembrava fantastica mentre ora, dopo aver capito quanto possono essere
comode  notazioni prefisse  e postfisse  il  fatto di  dover usare  un
metodo che si chiama add() al posto di un operatore non mi fa ne caldo
ne freddo.
D> e non si puo' neanche fare eriditarietà multipla.
Non è indispensabile. Nel gruppo "guru" Sadun ha citato un risultato
teorico che indica come "aggregazione + interfaccia" equivalente ad
"ereditarietà multipla".
D> viva il c++!
Nessuno ha mai definito il Java "a bag on a side".
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: sierra alfa india november tango AT echo november golf DOT india tango

> a scapito della leggibilità del codice.
D> però senza l'overloading degli operatori, ad esempio, aritmetici
D> l'utilizzo di oggetti matematici è molto meno intuitivo ed esempio in
D> c++ posso scrivere:
Non  è meno intuitivo.   E' solo  "alieno" alla  tua cultura  e quindi
psicologicamente  ti pare meno  attraente.  Se  avessi alcuni  anni di
lavoro  con  notazioni prefisse  o  postfisse  (dove  tra l'altro  gli
operatori non esistono, + è solo un nome breve per una funzione) l'uso
di metodi non ti pare più così brutto.
