Los registros variantes son registros(campos de memoria) tales que en un momento dado sólo uno de sus campos, o colecciones de campos, es válida en un momento dado. En algunos lenguajes de programación es tomada como un tipo de unión, ya que, como veremos a continuación en nuestro ejemplo, se utiliza una misma localidad de memoria para almacenar distintos campos que pudiese tener cualquier tipo de objeto, ya sea el objeto de una clase o el de una estructura, o una unión misma.
En Java y en C#, se utiliza el tipo de dato Object, que al ser inicializado como una instancia de una clase, estructura o unión, toma el valor de ese objeto, el uso de este tipo de dato es muy útil cuando no se sabe qué tipo de objeto se va a capturar, mas sin embargo necesitamos de capturarlo para poder mostrar el valor de sus diversas variables o campos.
mport javax.swing.JOptionPane;
class Cuadrado
{
public int lado;
Cuadrado(int x)
{
lado=x;
}
}
class Triangulo
{
public int base,altura;
Triangulo(int b,int h)
{
base=b;
altura=h;
}
}
class Circulo
{
public int radio;
Circulo(int r)
{
radio=r;
}
}
public class Main
{
public static void main(String[] args)
{
Object resultado=Figura(Integer.parseInt(JOptionPane.showInputDialog("Teclea:\n1. cuadrado/n2. triangulo\n3. ciruclo")));
}
public static Object Figura(int opcion)
{
Object variable=null;
boolean flag=true;
while(flag)
{
switch(opcion)
{
case 1:variable=new Cuadrado(Integer.parseInt(JOptionPane.showInputDialog("Teclea el valor del lado del cuadrado")));
flag=false;
break;
case 2:variable=new Triangulo(Integer.parseInt(JOptionPane.showInputDialog("Teclea el valor de la base del triangulo")),Integer.parseInt(JOptionPane.showInputDialog("Teclea el valor de la altura del cuadrado")));
flag=false;
break;
case 3:variable=new Circulo(Integer.parseInt(JOptionPane.showInputDialog("Teclea el valor del lado del cuadrado")));
flag=false;
break;
default:JOptionPane.showMessageDialog(null,"Ese numero no esta en la lista");
}
}
return variable;
}
}
En este código de Java, se muestra que existe una incertidumbre de qué tipo de figura escogerá el usuario, mas sin embargo, la variable resultado puede capturar cualquier tipo de objeto para así después poder acceder a sus variables.
jueves, 12 de febrero de 2009
Suscribirse a:
Enviar comentarios (Atom)
Hola amigo me parece muy interesante tu Blog!!!
ResponderEliminarespero que te des una vuelta en el mio y me sigas como yo lo hice estamos en contacto saludos!!!
Que tal, soy maestro del Tecnologico y me he puesto a pensar sobre la primera unidad de dicha materia. En la cual, aunque pareciera estar dirigida a Java, yo pienso que es más a C++ por la razon de manejar los tipos struct, union y enum, donde en Java no existe ni struct ni union, por lo que me he puesto a pensar que lo de registros variables no sera otra cosa que las variables register? por la forma de su traducción considero yo. Mas me gustaria saber su opinion.
ResponderEliminar