[ Foro de C# ]

Clase Matriz

02-Oct-2014 10:58
Invitado (Joseba)
5 Respuestas

Hola!
He intentado hacer el ejercicio del punto 6.12: "Desarrolla una clase "Matriz", que represente a una matriz de 3x3, con métodos para indicar el valor que hay en una posición, leer el valor de una posición, escribir la matriz en pantalla y sumar dos matrices."

Pero no soy capar de crear una clase Matriz que se comporte como un array para poder hacer la sobrecarga de operadores del ejemplo: "public static Matriz operator +(Matriz mat1, Matriz mat2)"

¿Cómo has creado esa clase Matriz?

Gracias, un saludo.


03-Oct-2014 22:37
Nacho Cabanes (+30)

¿Cómo has hecho la clase Matriz? Ayudaría ver el código que ya has implementado.

Lo más natural es que internamente contenga un array bidimensional, de modo que esas operaciones se limitan a recorrerlo con un doble "for" anidado.


04-Oct-2014 11:56
Invitado (Joseba)

La clase Matriz no la tengo implementada porque veo imposible implementar una clase que se comporporte como un array bidimensional.
Quiero decir que la sintaxis:
Matriz matriz = new Matriz() está claro,
pero depues la sintasis :
matriz[0,0] no lo veo.
Sí veo algo como
matriz.algo[0,0]

Por eso te pregunto como la has implementado tú. Creo que en el ejercicio hay un error de enunciado.


Saludos.


05-Oct-2014 02:14
Nacho Cabanes (+30)

Olvídate de los corchetes. Lo importante de una clase no es la notación (no todos los lenguajes te permitirán redefinir el operador [] ), sino que engloba unos datos y un comportamiento. Se podrían hacer cosas como

 
dato = Matriz.Leer(3,5);
Matriz.Guardar(3, 5, 9.4);
resultado = Matriz.CalcularDeterminante();
 


y una notación como esa (o muy similar) sería válida en casi cualquier lenguaje orientado a objetos.


06-Oct-2014 13:09
Invitado (Joseba)

Ahora ya me queda claro... en C# no se puede redefinir el operador [].

Gracias.


06-Oct-2014 13:24
Nacho Cabanes (+30)

Así es. Si quieres más detalles, en la propia MSDN tienes la lista de operadores que se pueden sobrecargar
http://msdn.microsoft.com/en-us/library/8edha89s.aspx






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)