Foros del Web » Programación para mayores de 30 ;) » Java »

una uml a patron de diseño

Estas en el tema de una uml a patron de diseño en el foro de Java en Foros del Web. Tengo esta duda con patrones de diseño. me encargaron desarrollar esta uml con el patrón de estado (state). como pueden ver de la clase main ...
  #1 (permalink)  
Antiguo 13/02/2012, 14:01
Avatar de Tyreal  
Fecha de Ingreso: noviembre-2011
Ubicación: ke-li
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
una uml a patron de diseño

Tengo esta duda con patrones de diseño. me encargaron desarrollar esta uml con el patrón de estado (state).



como pueden ver de la clase main ventilador instancia las velocidades baja, media y alta y apagado, que me falto poner alli. ahora se supone que primero esta en off. luego pasa a baja que esta hace llamar a media, media alta y alta de nuevo a off.

en teoria esta fasily pudo usar include en cada clase nomas para hacerlas llamar como se hace en la poo. pero lo que me causa conflicto es que si es diferente utilizando ese patron de diseño.

me pueden explicar o mostarme algo de codigo donde pueda ver algo relacionado a esto.

En verdad les agrdeseria mucho que me puedan resolver esta duda, ya con eso que me expliquen puedo hacer las otras umls uqe tengo que pasar java
  #2 (permalink)  
Antiguo 13/02/2012, 15:01
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: una uml a patron de diseño

No entiendo cúal es tu problema.

¿Puedes explicar un poco mejor que es lo que te funciona o no comprendes?

Saludos.
  #3 (permalink)  
Antiguo 13/02/2012, 15:51
Avatar de Tyreal  
Fecha de Ingreso: noviembre-2011
Ubicación: ke-li
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: una uml a patron de diseño

bueno se supone que devo hacer un ventilador con una clase main que maneje la clases que si esta apagado manda el pensaje esta apagado, luego esta clase llama a la clase velocidad lenta y despliega el mensaje lento. hasi nos vamos con rapido, que este ademas de desir rapido, llama a apagado para terminar el proseso.

como si fuera un siclo a punta de if pero las condiciones son clases, segun lo que dise el diseño de patron state. ando usando el libro diseño de patrones de erich gamma.

pero no logro como aterrizar esa idea para poderme a programar en java. si me puedes dar un ejemplo yo de hi me voy para hacer lo demas
  #4 (permalink)  
Antiguo 13/02/2012, 17:07
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: una uml a patron de diseño

Te dejo un enlace a la wikipedia donde explican qué es y cómo usarlo con un ejemplo en Java bastante claro: http://es.wikipedia.org/wiki/State_(patrón_de_diseño)

Si tienes alguna duda, pregunta.

Saludos.
  #5 (permalink)  
Antiguo 13/02/2012, 17:29
Avatar de Tyreal  
Fecha de Ingreso: noviembre-2011
Ubicación: ke-li
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: una uml a patron de diseño

gracias, pero ya me había fijado. esta mas claro que el agua, con esto podre hacer el ventilador, gracias de todas formas.

al rato pongo lo que hice, en caso que tenga un error o que compile bin para que otros les sirva de ayuda :p ensando:
  #6 (permalink)  
Antiguo 15/02/2012, 10:28
Avatar de Tyreal  
Fecha de Ingreso: noviembre-2011
Ubicación: ke-li
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: una uml a patron de diseño

ok tengo un error al momento de compilara, ya lo rebice junto con mi profe y nomas no dimos que error
El main
Cita:
public class Main {

public static void main(String[] args) {
Abanico fan=new Abanico();

fan.velocidad();
fan.velocidad();
fan.velocidad();
fan.velocidad();
}

}
Clase Banico

Cita:
public class Abanico {
private AlgVelocidad algVelocidad;

public Abanico() {
}
public void setVelocidad(AlgVelocidad alg){
algVelocidad=alg;
}
public void velocidad(){
algVelocidad.velocidad();
}
}
Cita:
public interface AlgVelocidad {
public void velocidad();

}

class VelBaja implements AlgVelocidad{

@Override
public void velocidad() {
System.out.println("Baja");
}

}
como ven esta sencillo el codigo, me marca el siguiente error

Cita:
Exception in thread "main" java.lang.NullPointerException
at practica2.Abanico.velocidad(Abanico.java:20)
at practica2.Main.main(Main.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
error del pointer. ya hise como 3 veces y nada espero que me puedan ayudar
  #7 (permalink)  
Antiguo 15/02/2012, 13:16
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: una uml a patron de diseño

Tienes que ir cambiando los estados si no no funcionará.

Hay varias formas, una es dentro de las subclases que heredan de la interfaz AlgVelocidad.

Código Java:
Ver original
  1. public class Abanico {
  2.  
  3. private AlgVelocidad algVelocidad;
  4.  
  5. public Abanico() {
  6.   algVelocidad = new VelBaja(this);
  7. }
  8.  
  9. public void setVelocidad(AlgVelocidad alg){
  10. algVelocidad=alg;
  11. }
  12. public void velocidad(){
  13. algVelocidad.velocidad();
  14. }
  15. }
  16.  
  17.  
  18.  
  19. public abstract class AlgVelocidad {
  20.  
  21. protected Abanico abanico;
  22.  
  23. public abstract void velocidad();
  24.  
  25.  
  26. }
  27.  
  28. public class VelBaja  extends AlgVelocidad{
  29.  
  30.  
  31. public VelBaja(Abanico abanico){
  32. this.abanico = abanico;
  33. }
  34.  
  35. @Override
  36. public void velocidad() {
  37. System.out.println("Baja");
  38. abanico.setVelocidad(new VelMedia(abanico));
  39. }
  40.  
  41. }
  42.  
  43. public class VelMedia extends AlgVelocidad{
  44.  
  45.  
  46. public VelMedia(Abanico abanico){
  47. this.abanico = abanico;
  48. }
  49.  
  50. @Override
  51. public void velocidad() {
  52. System.out.println("Media");
  53. abanico.setVelocidad(new VelAlta(abanico));
  54. }
  55.  
  56. }
  57.  
  58. public class VelAlta  extends AlgVelocidad{
  59.  
  60.  
  61. public VelAlta(Abanico abanico){
  62. this.abanico = abanico;
  63. }
  64.  
  65. @Override
  66. public void velocidad() {
  67. System.out.println("Alta");
  68. abanico.setVelocidad(new VelBaja(abanico));
  69. }
  70.  
  71. }

Etiquetas: clase, diseño, patron, uml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:56.