jump to navigation

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.

Comentarios»

1. BYRON - julio 6, 2009

Cuentanos tus experiencias en el curso de C#, que dicen los participantes? seria chevere q ellos posteen en tu blog

2. Diego - julio 7, 2009

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.


Deja un comentario