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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  asociacion y multiplicidad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: asociacion y multiplicidad  (Leído 6,604 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
asociacion y multiplicidad
« en: 15 Junio 2012, 23:49 pm »

Saludos

Alguien que me diga como puedo traducir de un diagrama UML a codigo una asociación entre dos clases que tiene como multiplicidad 1.......*, tengo entendido que significa que una clase puede tener  ninguna o muchas instancia de la otra clase pero no se como implementarlo

gracias


En línea

Nortis

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #1 en: 16 Junio 2012, 02:41 am »

Te dejo un pdf que para que tiene buena pinta donde explica la multiplicidad y la implementacion: http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CG0QFjAE&url=http%3A%2F%2Fwww.ie.inf.uc3m.es%2Fgrupo%2Fdocencia%2Freglada%2FIs1y2%2FIS2%2FImplementacionAJ.pdf&ei=XNXbT9r1E4aX0QX-54iKCw&usg=AFQjCNHGxPwlmMNKUmDHwmmjjHX7KETAhQ&sig2=4c6sj_GQ-t3I-8YSNXp06Q


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #2 en: 16 Junio 2012, 12:03 pm »

Te recomiendo que leas uml for java programer de el tio bob es un libro con una visión pragmática sin fantasías y mentiras ni academicismos falsos (la pura y cruda verdad)

Te corrijo la relación 1 * es de uno a muchos y java no tiene forma nativa de hacerlo
una Orden tiene una o  muchas líneas

según la escuela de pensamiento del diseño dirigido por el modelo apodado  ddd lease "domain driven design quickly"

la relación de 1 a muchos esta bien en el papel (modelando el negocio) pero la realidad es que no hay forma no engorrosa en java la manera mas correcta es  primero creas un objeto vacío(que tiene relación de 0 a muchos) por ejemplo una orden sin líneas y luego mientras el programa corre agregas las líneas de la orden luego ese objeto de negocio ahora llamado "entidad" lo pasamos a otra clase la cual realiza operaciones con la entidad la cual llamaremos "el Servicio" en ella pones la validación de cardinalidad de uno a mucho

segun ivar jacobson

El modo de distribución digase aplicación web programa de consola web service swing llama a servicios (hasta aqui es ddd) pero estos servicios tiene la característica de ser casos de usos llamemos lo Controlador(recomiendo relación de uno a uno entre caso de uso y clase) dentro de estas Clase(caso de uso) realizamos las reglas de negocio del caso de uso.
A si tendríamos clases como RegistroDeOrden ConsultaDeExistencias SubscripcionDeNembresia ConsultaDeNotas
Dentro de el controlador realizamos la validación de que tenga uno a a muchas lineas

También es posible poner la validación de uno a muchos dentro de la clase pero eso no me gusta ponerla ahi
« Última modificación: 16 Junio 2012, 14:01 pm por sapito169 » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #3 en: 16 Junio 2012, 12:04 pm »

segun ivar

Código
  1. import java.util.ArrayList;
  2. import java.util.Date;
  3. import java.util.List;
  4.  
  5. public class Orden {
  6.  
  7. private List<DetalleOrden> detalleOrdens = new ArrayList<DetalleOrden>();
  8. private Date fecha;
  9.  
  10. public void agregaDetalle(DetalleOrden detalleOrden) {
  11. detalleOrdens.add(detalleOrden);
  12. }
  13.  
  14. public DetalleOrden getDetalle(int indice) {
  15. DetalleOrden detalleOrden = detalleOrdens.get(indice);
  16. return new DetalleOrden(detalleOrden.getProducto(),
  17. detalleOrden.getPrecio());
  18. }
  19.  
  20. public int getCantidad() {
  21. return detalleOrdens.size();
  22. }
  23.  
  24. public double getTotal() {
  25. double total = 0;
  26. for (DetalleOrden detalleOrden : detalleOrdens) {
  27. total = total + detalleOrden.getPrecio();
  28. }
  29. return total;
  30. }
  31.  
  32. public void setFecha(Date fecha) {
  33. this.fecha=fecha;
  34.  
  35. }
  36. }
  37.  

Código
  1. public class RegistroDeOrden implements CasoDeUso {
  2.  
  3. private final Orden orden = new Orden();
  4. private  final BaseDeDatos baseDeDatos=new BaseDeDatos();
  5.  
  6. public void agregarDetalle(DetalleOrden detalleOrden) {
  7. if (detalleOrden.getPrecio() < 20) {
  8. throw new ErrorDePrecioMinimo(
  9. "los gerentes no les gustas que los productos que cuesten menos de 20 soles");
  10. }
  11.  
  12. orden.agregaDetalle(detalleOrden);
  13. }
  14.  
  15. public void registrar() {
  16. if (orden.getCantidad() < 1 && orden.getCantidad() > 10) {
  17. throw new ErrorDeCantidadDeLineas(
  18. "solo se debe registrar ordenes de entre 1 a 10 lineas");
  19. }
  20. orden.setFecha(new Date());
  21. baseDeDatos.grabar(orden);
  22. }
  23.  
  24. }
  25.  
  26.  
« Última modificación: 16 Junio 2012, 12:07 pm por sapito169 » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #4 en: 16 Junio 2012, 12:11 pm »

forma  pura no la recomiendo
Código
  1. import java.util.ArrayList;
  2. import java.util.Date;
  3. import java.util.List;
  4.  
  5. public class Orden {
  6.  
  7. private List<DetalleOrden> detalleOrdens = new ArrayList<DetalleOrden>();
  8. private Date fecha;
  9.  
  10. private Orden() {
  11.  
  12. }
  13. public Orden(DetalleOrden detalleOrden){
  14. if(detalleOrden==null){
  15. throw new NullPointerException();
  16. }
  17. detalleOrdens.add(detalleOrden);
  18. }
  19.  
  20. public void agregaDetalle(DetalleOrden detalleOrden) {
  21. detalleOrdens.add(detalleOrden);
  22. }
  23.  
  24. public DetalleOrden getDetalle(int indice) {
  25. DetalleOrden detalleOrden = detalleOrdens.get(indice);
  26. return new DetalleOrden(detalleOrden.getProducto(),
  27. detalleOrden.getPrecio());
  28. }
  29.  
  30. public int getCantidad() {
  31. return detalleOrdens.size();
  32. }
  33.  
  34. public double getTotal() {
  35. double total = 0;
  36. for (DetalleOrden detalleOrden : detalleOrdens) {
  37. total = total + detalleOrden.getPrecio();
  38. }
  39. return total;
  40. }
  41.  
  42. public void setFecha(Date fecha) {
  43. this.fecha=fecha;
  44.  
  45. }
  46. }
  47.  
  48.  
En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #5 en: 16 Junio 2012, 12:13 pm »

profavor respondanme no me importa respuesta troll ni que critiquen mi codigo
porfavor dime si te sirvio si no entiendes si no estas deacuerdo

otro tema importante quienes de ustedes estan deacuerdo en tener una sona de Negocio libre de framewors donde solo haya clases comunes y corrientes java entidades y casos de usos totalmente libre de cosas raras alguno de ustedes a trabajdo asi?
« Última modificación: 16 Junio 2012, 12:18 pm por sapito169 » En línea

Nortis

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #6 en: 17 Junio 2012, 22:54 pm »

Muy buen código sapito169, lo deja bien claro.
En línea

m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: asociacion y multiplicidad
« Respuesta #7 en: 18 Junio 2012, 02:26 am »

Muchas gracias sapito169 ahora que vea las relaciones 1 * sabré que una clase debe tener muchas instancias y que tendré que utilizar vectores  :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
asociacion en wep
Wireless en Linux
josito12 6 2,846 Último mensaje 29 Septiembre 2010, 22:03 pm
por lilo.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines