Sobrecarga de operadores - como fazer?

5 respostas
J

Olá!! Estou precisando realizar multiplicação de matrizes através do algoritmo de Strassen e estou pensando em sobrecarregar os operadores de multiplicação e atribuição, porém em Java não é como em C++. Então gostaria de saber a opinião de vcs sobre qual é a melhor forma de implementar em Java uma sobrecarga de operadores. Andei lendo e vi que muitos recomendam a criação de interfaces mas estou pensando em criar uma classe matriz com as funcionalidades que eu preciso e a matriz propriamente dita como atributo da classe. Qual a melhor abordagem ??

Até

5 Respostas

R

Se não me engano, em java não é possivel implementar sobrecarga de operadores…

[]´s

duardor

como seria a abordagem por interface?
se eu tivesse esse problema ( e jah tive na em uma disciplina q se chama grafos) eu jah tinha feito uma classe q faria isso por mim… dai vc faz com overload de metodos
tipo

static int [][] multiplicaca(int mat1[][], int mat2[][])
no caso de duas matrizes(lembra de testar os tamanhos delas)

static int[][] multiplicaca(int mat1[][], int escalar)
no caso de uma matriz e um escalar

deu pra sacar neh???

Abraços

Operador_Nabla

Eu aceitaria numa boa esta idéia de que Java não suporta sobrecarga de operadores (uma pena!), não fosse uma pequena curiosidade: aparentemente, a classe String sobrecarrega o operador + para concatenar strings.

Como isto foi implementado? Eu tentei ler o código-fonte String.java que vem com a Sun JDK, mas não encontrei nada (ou passei batido por algum ponto).

cv1

Nabla, Strings sao parte da definicao da linguagem, e + eh, de certa forma, um operador sobrecarregado atraves de “syntactic sugar”. Ou seja, eh parte da especificacao da linguagem que “+” eh um operador que pode somar duas Strings, mas nao eh algo acessivel ao programador, e voce nao vai achar muito codigo relacionado a isso nos sources da JDK: o codigo que lida com isso é o javac (que não tem os fontes “abertos”).

Operador_Nabla

Obrigado pelo esclarecimento!

Criado 25 de abril de 2003
Ultima resposta 26 de abr. de 2004
Respostas 5
Participantes 5