Interfaces y Arrays Tridimensionales julio 5, 2009
Posted by xibian in General.trackback
Hola quisiera compartir unas preguntas y respuestas que surgieron en el curso de C# por parte de una compañera pilas:
Interfaces
¿Una interfaz puede acceder a todos los miembros de una clase, sin restricción?
Una interfaz es la declaración de los métodos , propiedades, eventos que debe cumplir e implementar la clase que la hereda, es decir que las interfaces no tienen código operativo, su función es la de establecer declaraciones que cumplan las clases, como una especie de contrato y la accesibilidad de sus métodos , propiedades, eventos y demás la establecen los modificadores de acceso que le coloquemos public, private, internal, protected..
¿Una clase puede implementar un número ilimitado de interfaces?
Si, una clase puede implementar N interfaces, lo cual es bueno porque te permite establecer y extender funcionalidad de diversas clases que implementas esas interfaces.
¿Si dos o más interfaces implementadas en una clase tienen métodos con nombres iguales o parametros iguales no se crearía un conflicto?
No se crearia conflicto debido a lo siguiente:
Existen dos maneras de implementar un interfaz Explicita e Implicita.
Forma Implicita——
Si dos interfaces tienen una propiedad llamada color y una clase implementa dichas interfaces, entonces se crea una sola propiedad llamada color, y evitarias el error por repetir la propiedad color dos veces.
Ejemplo:
1: public int color
2: {
3: get
4: {
5: throw new NotImplementedException();
6: }
7: set
8: {
9: throw new NotImplementedException();
10: }
11: }
Forma Explicita—–
Si la primera interfaz se llama Avion y la segunda Barco y ambas tienen la propiedad color, lo que se hace es tener ambas propiedades especificando el tipo, de la siguiente forma:
1: int Barco.color
2: {
3: get
4: {
5: throw new NotImplementedException();
6: }
7: set
8: {
9: throw new NotImplementedException();
10: }
11: }
12:
13: int Avion.color
14: {
15: get
16: {
17: throw new NotImplementedException();
18: }
19: set
20: {
21: throw new NotImplementedException();
22: }
23: }
Array Tridimensional
Al momento de asignar por valor un array he encontrado una asignación asi:
string [, , ] nomtri ={ {"a", "b"}, {"c", "d"}}, {{"e", "f"}, {"g", h"}}
Console.Writeline (nomtri [0,0,0]; //a
Console.Writeline (nomtri [0,0,1]; // b
Bueno el punto es que no entiendo por que [0,0,0] matematicamente es fila y columna pero aca hay tres indices…
Respuesta:
El array del cual nos indicas es un array de tipo tri-dimensional, en fisica creo deben haber visto en la parte de vectores las dimensiones X,Y,Z el modelo es el mismo para el array.
Generalmente trabajamos en dos dimensiones X,Y(filas,columnas), pero en este array se manejan 3 y verdaderamente es un poco dificil de manejar, mas que nada al momento de entender el código y más aún hay que cambiar algo.
La forma más simple de declararlo es esta:
1: int[,,] galaxia = new int[4,5,3];
Un ejemplo sería algo así:
1: // Crear Galaxia
2: int[,,] galaxia = new int [10, 5, 3];
3:
4: // Crear dos elementos galaxia con nivel de luminosidad 3 y 9(valor)
5: galaxia[1, 3, 2] = 3;
6: galaxia[4, 1, 2] = 9;
7:
8: // Mostrar el numero de dimensiones y elementos
9: Console.WriteLine("galaxia.Rank (numero de dimensiones) = " + galaxia.Rank);
10: Console.WriteLine("galaxia.Length (numero de elementos) = " + galaxia.Length);
11:
12: // Mostrar elementos
13: // QUe tengan luminosidad diferente a 0
14: for (int x = 0; x < galaxia.GetLength(0); x++)
15: {
16: for (int y = 0; y < galaxia.GetLength(1); y++)
17: {
18: for (int z = 0; z < galaxia.GetLength(2); z++)
19: {
20: if (galaxia[x, y, z] != 0)
21: {
22: Console.WriteLine("galaxia[" + x + ", " + y + ", " + z +"] = " +
23: galaxia[x, y, z]);
24: }
25: }
26: }
Saludos.
Cuentanos tus experiencias en el curso de C#, que dicen los participantes? seria chevere q ellos posteen en tu blog
Hasta el momento me parecen buenas, igual en cuatro horas a la semana tratamos de dar lo mejor posible en los conceptos, pero igual el tiempo es corto, si les hemos dicho que visiten los blogs, igual tenemos creado un group para ver los comentarios, sugerencias y avances.