elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  como hacer un constructor con un iterador
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como hacer un constructor con un iterador  (Leído 3,720 veces)
hardjesjlc

Desconectado Desconectado

Mensajes: 40


http://ldelac.wordpress.com/


Ver Perfil WWW
como hacer un constructor con un iterador
« en: 9 Mayo 2010, 09:34 am »

Hola!
Os explico mi casa, porque estoy bloqueado buscando una solucion y no he visto nada parecido.
Tengo una clase enum con tipos de monedas (EUR, ESP...)
Y tengo Una clase Money con un constructor al que le entra un tipo de moneda y un valor.
Necesito Crear una moneda de Un objeto con cada tipo de moneda, pero hacerlo automaticamente me resulta complicado.
He intentado darle forma con un itrador pero no hay manera.
Alguna idea?
Un saludo!
Gracias!


« Última modificación: 9 Mayo 2010, 09:53 am por hardjesjlc » En línea

hardjesjlc

Desconectado Desconectado

Mensajes: 40


http://ldelac.wordpress.com/


Ver Perfil WWW
Re: como hacer un constructor con un iterador
« Respuesta #1 en: 9 Mayo 2010, 10:30 am »

Voy a poner un poco del codigo a ver si nos queda mas claro.

Tengo esta clase:
Código
  1. public enum Face {
  2. EUR, IEP, ITL, GRD, PTE, ESP, BEF, LUF, ATS, FRF, FIM, NLG, DEM, CYP, MLT, SIT, SKK
  3. }
  4.  

Y esta otra donde hago el constructor:
Código
  1. public class Money implements IMoney, IMoneyModel, Serializable {
  2.  
  3. private static final long serialVersionUID = 162297084430668524L;
  4.  
  5. Face face;
  6. float amount;
  7. static Map<Face, Float> euroExchange;
  8.  
  9. static {
  10. euroExchange = new HashMap<Face, Float>();
  11. euroExchange.put(Face.EUR, 1.0F);
  12. euroExchange.put(Face.IEP, 0.787564F);
  13. euroExchange.put(Face.ITL, 1936.27F);
  14. euroExchange.put(Face.GRD, 340.75F);
  15. euroExchange.put(Face.PTE, 200.428F);
  16. euroExchange.put(Face.ESP, 166.386F);
  17. euroExchange.put(Face.BEF, 40.3399F);
  18. euroExchange.put(Face.LUF, 40.3399F);
  19. euroExchange.put(Face.ATS, 13.7603F);
  20. euroExchange.put(Face.FRF, 6.55957F);
  21. euroExchange.put(Face.FIM, 5.94573F);
  22. euroExchange.put(Face.NLG, 2.20371F);
  23. euroExchange.put(Face.DEM, 1.95583F);
  24. euroExchange.put(Face.CYP, 0.585274F);
  25. euroExchange.put(Face.MLT, 0.4293F);
  26. euroExchange.put(Face.SIT, 239.64F);
  27. euroExchange.put(Face.SKK, 30.126F);
  28. }
  29.  
  30. public Money(Face face, float amount) {
  31. if (amount < 0.0)
  32. throw new IllegalArgumentException("'amount' must be greater or equal than zero");
  33. if (face == null)
  34. throw new IllegalArgumentException("'face' must not be null");
  35.  
  36. this.face = face;
  37. this.amount = round(amount);
  38. }
  39.  

Lo que quiero es hacer un objeto de cada tipo Face con el constructor y no se como recorrer face. O si lo mejor es hacer un iterador para recorrer el map.
Un saludo!


En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: como hacer un constructor con un iterador
« Respuesta #2 en: 9 Mayo 2010, 11:38 am »

No me he enterado muy bien, pero los enum tiene un método values() que te devuelve todos los posibles valores en un array y puedes recorrerlo

Face[] valores = Face.values();

Se bueno.
En línea

hardjesjlc

Desconectado Desconectado

Mensajes: 40


http://ldelac.wordpress.com/


Ver Perfil WWW
Re: como hacer un constructor con un iterador
« Respuesta #3 en: 9 Mayo 2010, 12:36 pm »

Gracias, no habia caido en lo del metodo values.

A ver, lo que tengo que hacer es diseñar pruebas para una interfaz (es un proyecto de la uni) No pretendo que me digais como es, lo que quiero es saber como meterle mano.
Nos dan una clase que implementa a una interfaz con los metodos
Código
  1. Face getFace();
  2.  
  3. float getAmount();
  4.  
  5. IMoney add(IMoney money);
Y la clase enum Face.
Lo que tenemos que hacer es diseñar pruebas para ver que con el metodo ADD, se pasa correctamente de cualquier moneda del enum a Euros y viceversa.

Lo que yo hago es:
un setup multiple para crear una moneda de cada tipo + una moneda EURO y un test para ver si el cambio esta bien hecho.

El problema, es que nos dicen que usemos algo para iterar sobre enum y poder ir creando objetos de cada tipo de moneda y realizar assert, de forma que se pueda cambiar el numero de enu, (es decir, meter mas tipos de monedas) y que lso test sigan funcionando

Espero haberme explicado.
En línea

biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: como hacer un constructor con un iterador
« Respuesta #4 en: 9 Mayo 2010, 18:55 pm »

No te entiendo bien, pero puedes cambiar ese código si no te gusta: Mira esto
http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html
Los enums son clases, puedes ponerle métodos y parámetros, además supongo que podrás extenderlos dinámicamente con subclases para añadir más, o simplemente, ponles un nombre como parámetro, así podrás crear más y ponerles nombre. También creo que puedes hacer que implementen una interfaz.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda]Como pasar este Constructor en Vb a C#
.NET (C#, VB.NET, ASP)
estebanvr 1 2,662 Último mensaje 12 Noviembre 2011, 06:22 am
por estebanvr
Problema con iterador
Programación C/C++
Kherom 2 1,822 Último mensaje 5 Enero 2013, 19:56 pm
por Kherom
Problema con iterador a lista de punteros
Programación C/C++
SrCooper 4 3,107 Último mensaje 24 Julio 2013, 15:43 pm
por Eternal Idol
ayuda: kbhit() en iterador en c++
Programación C/C++
Nico01 6 3,566 Último mensaje 19 Julio 2015, 16:58 pm
por Nico01
[Ayuda] Constructor Global como Helper
PHP
danny920825 0 1,963 Último mensaje 21 Julio 2017, 20:02 pm
por danny920825
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines