Como crear un tipo de datos

Disculpa
Tengo la siguiente pregunta estoy creando una clase persona y cada persona puede tener varios teléfonos de distinto tipo me gustaría crear una estructura algo similar a c++ o pascal pero en java todavía no descubro eso por que no me interesa crear una clase que contenga 3 datos que no tienen mucha importancia que serian :
Tipo de teléfono
Numero telefónico
Extensión

3 Respuestas

Respuesta
1
La pregunta que me planteas tiene una fácil solución aunque para que la entiendas deba explicarte antes unas cosillas.
La solución es: Crear la clase! Je je. Sí, eso es justo lo que no quieres hacer pero ahora verás porque esa es la mejor solución.
Como sabrás java es un lenguaje orientado a objetos lo cual quiere decir que su filosofía es totalmente distinta (e incluso contraria) a la estructurada (como el lenguaje C). Java entiende de clases y sólo y exclusivamente de clases. No entiende de estructuras ni de tipos de datos. De hecho eso va en contra de la programación orientada a objetos.
Por otra parte, C++, es un lenguaje que proviene de C, y por tanto lo contiene, con el añadido de que incorpora elementos de programación orientada a objetos (clases, templates, etc.). Al provenir de C, C++ permite crear estructuras de datos, pero al crearlas deja de comportarse como un lenguaje orientado a objetos y pasa a comportarse como C. O lo que es lo mismo, si usamos C++ en el más puro sentido de su filosofía, las estructuras de datos tampoco tienen cabida.
¿Aunque creas que crear la clase? ¿Teléfono? Es absurdo o una pérdida de tiempo porque es pequeña y la utilizas puntualmente, te diré que solventa a la larga muchas situaciones indeseables a la hora de programar. Si evalúas el tiempo necesario para crearla observarás que es mínimo, quizás no superior a cinco minutos. Tan sólo contendría la declaración de las tres variables, uno o dos constructores, los tres consultores y los tres modificadores. En total no más de 20-30 líneas de código simples.
Una vez dicho todo esto y si aún consideras que no es necesario crear dicha clase, te propongo varias soluciones para tu problema.
? Si los tres campos comparten el mismo tipo de datos (entero o long, por ejemplo), tan sólo tendrías que crearte un array de dos dimensiones, una para cada campo del teléfono y otra para cada teléfono. Por ejemplo, para n teléfonos:
int telefonos[n][3];
? Si por el contrario, los tres campos no son del mismo tipo, puedes utilizar la clase que trae java llamada Vector. Un Vector es una colección de objetos de tipos distintos, muy dinámica pues no necesitas saber a priori el número de teléfonos que tiene un usuario. Para crearlo pondríamos lo siguiente:
Vector telefonos = new Vector ();
Para añadir un ?registro? haríamos:
telefonos.add (?A?);
telefonos.add (919191919);
telefonos.add (123);
De manera que cada tres entradas en el vector telefonos constituye un ?registro?.
¿También pues crear algo parecido a una tabla en la que cada columna corresponde a un campo de teléfono y cada fila corresponde a un? ¿Registro?. Se haría así:
Vector telefonos[3];
for (i = 0; i < 3; i++)
telefonos = new Vector ();
?
telefonos[0].add (?A?);
telefonos[1].add (919191919);
telefonos[2].add (123);
Como ves no es muy complicado aunque tiene desventajas frente a implementar la clase teléfono. Una de ellas puede ser modificar un teléfono de un usuario o borrarlo, piénsalo y verás como con la clase teléfono reduces a una o dos líneas de código lo que de alguna de las otras maneras que te he comentado se volvería más pesado y tedioso.
Por tanto te invito fervientemente a que crees la clase pues además de explotar al máximo la potencia que te ofrece java, simplificarás el trabaja a corto, medio y largo plazo.
Espero haberte servido de ayuda y para lo que necesites aquí estoy.
Me convenciste discutiré por este punto con mi grupo de trabajo al principio mi idea era crear un simple Vector y listo después encontré otras colecciones y pensé en un List pero esta parte de entender el manejo de las colecciones se me hace algo complicado. Sacame de la duda en los tutoriales que he visto es la siguiente.
Vector telefono = new Vector();
telefono.addelemen(String[2]);
si creo un Vector de la manera que me indicas me crea un array de 3 dimensiones.
Estoy en la razon o me equivoco pero igual tendria que colocar la telefono.addelement();
Disculpa pero yo he tenido que aprender Java al apurro y ha ciertas áreas no le preste importancia cuando leía tutoriales y ahora veo que tuve que ponerle más atención a las colecciones que a los controles Visuales
Me alegro de haberte convencido y espero que tu hagas lo propio con tu grupo de trabajo. ;-)
Si creas un array de vectores como te indique yo (mediante la sentencia Vector teléfonos[3]), lo que tienes es como un array de dos dimensiones: una dimensión sería los 3 vectores que has creado y la otra sería el número de entradas que tiene cada vector. Si acaso para que lo entiendas mejor, declarar el array de vectores teléfonos[3] es lo mismo que si hubieras creado 3 vectores sueltos:
Vector tipo = new Vector();
Vector telefono = new Vector ();
Vector extension = new Vector ();
Para cada vector, tanto en la opción multidimensional que te propuse en el anterior post, como en la opción que te acabo de proponer (la de crear tres vectores independientes), tienes que utilizar el método add, no es addelemen, sino add simplemente. Para cada opción aquí va un ejemplo:
* Si lo has creado como telefono[3], tendrías que hacer:
telefono[0].add ("tipo");
telefono[1].add (numero);
telefono[2].add (extension);
* Si lo creas como tres vectores independientes:
tipo.add ("tipo");
telefono.add (numero);
extension.add (extension);
Los vectores, como todas las colecciones en java, asignan a cada entrada un índice. Ese índice es el que te servirá para asociar cada registro. De manera que el valor de teléfonos[0] en su posición i, más el valor de teléfonos[1] en la misma posición i, más el valor de teléfonos[2] en la misma posición i conforman la "pseudo estructura" que hemos creado. De igual manera ocurre si lo que has creado han sido tres vectores, el tipo, teléfono y extensión.
Creo que eso es todo, si tienes dudas ya sabes.
Disculpa la demora pero tenia que registrarme en la U.
Estoy leyendo lo que me explicaste y estoy tratando de entenderlo pero te lo volveré a preguntar más adelante
Respuesta
1
Es muy fácil. Intenta pensar en lo que necesitas y tu solo te darás la solución. Recuerda además que en Java TODO son objetos :)
Si una persona puede tener varios números de teléfono, y defines los números de teléfono por "tipo", "numero" y "extensión", entonces créate una clase como si fuera una estructura en C, o una clase en C++ del tipo:
class Telefono
{
private String tipo;
private String telefono;
private String extension;
// metodos set
public void setTelefono ( String telefono ) throws Exception
{
if ( tipo == null )
{
throw new Exception ( "Intentando crear un telefono nulo" );
}
if ( tipo.length () != LONGITUD_DE_TELEFONO )
{
throw new Exception ( "Telefono " + telefono + " no valido" );
}
this.telefono = telefono
}
...
//metodos get
public String getTipo ( )
{
return tipo;
}
...
}
Una vez tengas esto tendrás un objeto "Telefono" definido, con esas tres propiedades que dices. Como te imaginarás lo puedes liar todo lo que quieras.
Tras esto, simplemente tendrás que pensar cuantos teléfonos puede tener un objeto "Persona". Si va a ser un numeor fijo maximo, entonces te aconsejo que utilices un array de objetos "Telefono" (Telefono [] telefono = new Telefono [NUM_MAXIMO_DE_TELEFONOS_POR_PERSONA]), porque es menos pesado para la máquina virtual. Si no sabes a priori el numero máximo de teléfonos puedes utilizar un "List" de objetos "Telefono". Lo más sencillo de utilizar es un "Vector" (java. Útil. Vector) que implementar "List" y es una estructura bastante potente y sencilla.
Piensa siempre de este modo. En Java todo son objetos, y todo lo que quieras representar, por muy raro que sea, lo podrás hacer con objetos. Por supuesto, la forma de definirte tus propios objetos es creando clases nuevas.
Espero haberte ayudado. Si necesitas más información ya sabes donde encontrarme :)
Respuesta
1
<%=Texto%>novasoft
La estructura de c++ es lo mismo que una clase de POO lo que ocurre en la clase es que los atributos pueden ser privados. Si quieres una clase que funcione como una estructura coloca los atributos públicos y listo. Algo así
clase telefono{ public numero }
clase persona {
public telefono tel
}
persona ob=new persona();
ob.tel.numero=99999;
Espero te sirva... sino especifícame más tu pregunta..
Éxitos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas