Eu programo C++ e estou iniciando no mundo java. E fiquei com a seguinte dúvida: em java existe sobrecarga de operador como em C++? Não né?! Como faço para suprir essa necessidade? Só com herança?!
Valeu pessoal!
Eu programo C++ e estou iniciando no mundo java. E fiquei com a seguinte dúvida: em java existe sobrecarga de operador como em C++? Não né?! Como faço para suprir essa necessidade? Só com herança?!
Valeu pessoal!
nao existe… com assim usar heranca pra suprir sobrecarga de operador?? crie um metodo… ao inves de
c = a + b
faca
c = a.add(b)
Olá
Levi, estudei C++ logo que foi lançado e poucas vezes vi vantagens na sobrecarga de operadores. Já li que sua maior serventia aparece nos softwares científicos. Mas para mim ele torna o código muito dificil de ser lido, fica tudo parecendo código de concurso de Perl mais obscuro (acreditem, existia este concurso).
Dê um exemplo onde seu uso em C++ é absolutamente indispensável para ver se a gente consegue uma alternativa Java mais fácil de ler.
[]s
Luca
Eu acho que o Sérgio já deixou claro. Eu estava pensando no caso de uma classe Matriz, por exemplo, aí na hora de fazer a multiplicação. Acho que por estar acostumado a programar em C++ eu acho mais fácil e legivel sobrecarregar o operador de multiplicação. Mas funciona perfeitamente fazer um método… Questão de costume. Se eu me deparar com alguma situação em que eu esteja realmente “viciado” em sobrecarregar e não encontrar uma solução em java, eu volto a perguntar. Minha intenção é sair fora do C mesmo, eu quero programar JAVA! heheheheehehehe
valeu pessoal, brigadão!
[quote=“Luca”]Olá
Dê um exemplo onde seu uso em C++ é absolutamente indispensável para ver se a gente consegue uma alternativa Java mais fácil de ler.
[]s
Luca[/quote]
Sobrecarga de operadores é muito legal, e util, para 5 operadores: ‘[]’ ‘()’, ‘->’, ‘=’ e ‘==’. Luca, não vejo necessidade de dizer quão uteis eles são. Especialmente para programação genérica, os dois primeiros permitem misturar tipos primitivos e objetos de uma forma muito elegante.
Os demais operadores são uteis quando voce quer desenvolver uma mini ‘domain specific language’ usando C++. De fato acredito que se não for para isso é uma tremenda burrice.
‘new’ eh um operador que eu sempre sonhei em poder sobrecarregar… no Groovy, se nao me engano, dah
louds, tem como vc passar pra gente um exemplo de código que a sobrecarga de um desses 5 operadores é essencial? E como seria a solução em JAVA tão elegante quanto a sugeriada em C++?
Nao existe nenhum caso onde sobrecarga de operadores eh “essencial”, mas existem diversos casos onde eh “mais elegante” usar. Por isso nao foi incluso no Java, ja que a ideia fundamental da coisa era ser uma linguagem pequena o suficiente para ser extremamente facil de aprender. Por isso as mudancas da JDK 1.5 demoraram tanto pra vir – até todo mundo se convencer de que realmente era necessário, precisamos do C# como competicao
Vale lembrar que java e c++ são linguagens diferentes com necessidades diferentes. Então existem algumas afirmações que não valem entre ambas.
Vejamos, sobrecarregar ‘=’ e ‘==’ é fundamental para o bom comportamento da tua classe com a maioria de algoritmos e estruturas de dados da stl.
Acho que essa discussão de se PRECISA ou NÃO operator overloading é besteira. Nenhum acrecenta a semantica da linguagem. Apesar do uso racional aumentar a legibilidade do código.
List list = ...
return list[0];
Puxa, esse pedaço de código é perfeitamente claro, apenas de ser 0% mais funcional que:
List list = ...
return list.get(0);
Esse tipo de discução vai vir a tona com muito mais força caso entre em discução a possibilidade de se introduzirem properties em java.