Duda con multiplicidad en Java

Iniciado por Flemon, Febrero 15, 2016, 01:30:21 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 15, 2016, 01:30:21 PM Ultima modificación: Febrero 15, 2016, 03:02:41 PM por EPSILON
Hola a todo el foro...
Bueno, volviendo a java después de llevar un largo tiempo sin tocarlo me tope con un problema al tratar de ejercitar con un cuadernillo viejo que tengo.

El diagrama de clases es el siguiente


del cual lo represente con las siguientes clases

Clase EmpresaConstructora
Código: java

package Punto2;

import java.util.ArrayList;
import java.util.List;

public class EmpresaConstructora {
   
    private long id;
   
    private String nombre;

    private String rubro;

    private String direccion;
   
    private List<Barrio> barrios;
   
    public EmpresaConstructora() {
    }

    public EmpresaConstructora(long id, String nombre, String rubro, String direccion) {
        this.id = id;
        this.nombre = nombre;
        this.rubro = rubro;
        this.direccion = direccion;
        barrios = new ArrayList<>();
    }
   
    public List<Barrio> getBarrios() {
        return barrios;
    }

    public void setBarrios(List<Barrio> barrios) {
        this.barrios = barrios;
    }
   
    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getRubro() {
        return rubro;
    }

    public void setRubro(String rubro) {
        this.rubro = rubro;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}



Clase Barrio
Código: java

package Punto2;

import java.util.ArrayList;
import java.util.List;

public class Barrio {
   
    private long id;

    private String nombre;

    private String distrito;
   
    private List<EmpresaConstructora> empresaConstructura;
   
    private List<Manzana> manzanas;
   
    public Barrio() {
    }

    public Barrio(long id, String nombre, String distrito) {
        this.id = id;
        this.nombre = nombre;
        this.distrito = distrito;
        empresaConstructura = new ArrayList<>();
        manzanas = new ArrayList<>();
    }
   
    public List<EmpresaConstructora> getEmpresaConstructura() {
        return empresaConstructura;
    }

    public void setEmpresaConstructura(List<EmpresaConstructora> empresaConstructura) {
        this.empresaConstructura = empresaConstructura;
    }

    public List<Manzana> getManzanas() {
        return manzanas;
    }

    public void setManzanas(List<Manzana> manzanas) {
        this.manzanas = manzanas;
    }
   
    public String getDistrito() {
        return distrito;
    }

    public void setDistrito(String distrito) {
        this.distrito = distrito;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
    public double getSuperficieTotalBarrio(){
        //Retornar el total de metros del terreno del barrio teniendo en cuenta
        //la superficie de las manzanas asociadas con el mismo
        double resultado=0;
        for (Manzana manzanas : manzanas) {
            resultado= +manzanas.getSuperficieManzana();
        }               
        return resultado;
    }
    public double getSuperficieTotalCubiertaManzana(String letra){
        //Retornar metros cuadraros cubiertos de una manzana especifica sumando la totalidad de metros
        //cuadrados cubiertos de las viviendas que componen la manzana
        //REUTILIZAR METODO getMetrosCuadradosCubiertos class Vivienda
        double resultado = 0;
       
        return resultado;
    }
    public double getDatosVivienda(String letraManzana, int numeroVivienda){
        //Retornar los datos de la calle, numero de Calle, superficieTerreno y superficieCubierta de una
        //vivienda en particular
        //En caso de no existir la vivienda emitir mensaje "La vivienda buscada no existe en el barrio"
        double resultado=0;
        return resultado;
    }
}


Clase Manzana
Código: java

package Punto2;

import java.util.ArrayList;
import java.util.List;

public class Manzana {
   
    private long id;

    private String letra;

    private double superficieManzana;
   
    private List<Vivienda> viviendas;
   
    private Barrio barrios;
   
    public Manzana() {
    }

    public Manzana(long id, String letra, double superficieManzana, Barrio barrios) {
        this.id = id;
        this.letra = letra;
        this.superficieManzana = superficieManzana;
        this.barrios = barrios;
        viviendas = new ArrayList<>();
    }
   
    public List<Vivienda> getViviendas() {
        return viviendas;
    }

    public void setViviendas(List<Vivienda> viviendas) {
        this.viviendas = viviendas;
    }
   
    public double getSuperficieManzana() {
        return superficieManzana;
    }
   
    public void setSuperficieManzana(double superficieManzana) {
        this.superficieManzana = superficieManzana;
    }

    public String getLetra() {
        return letra;
    }

    public void setLetra(String letra) {
        this.letra = letra;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}


Clase Vivienda
Código: java

package Punto2;

import java.util.ArrayList;
import java.util.List;

public class Vivienda {
   
    private long id;

    private int nroVivienda;

    private String calle;

    private int numeroCalle;

    private double superficieTerreno;
   
    private List<Habitacion> habitaciones;
   
    private Manzana manzanas;
           
    public Vivienda() {
    }

    public Vivienda(long id, int nroVivienda, String calle, int numeroCalle, double superficieTerreno, Manzana manzanas) {
        this.id = id;
        this.nroVivienda = nroVivienda;
        this.calle = calle;
        this.numeroCalle = numeroCalle;
        this.superficieTerreno = superficieTerreno;
        this.manzanas = manzanas;
        habitaciones = new ArrayList<>();
    }

    public Manzana getManzanas() {
        return manzanas;
    }

    public void setManzanas(Manzana manzanas) {
        this.manzanas = manzanas;
    }   
   
    public double getSuperficieTerreno() {
        return superficieTerreno;
    }

    public List<Habitacion> getHabitaciones() {
        return habitaciones;
    }

    public void setHabitaciones(List<Habitacion> habitaciones) {
        this.habitaciones = habitaciones;
    }
   
    public void setSuperficieTerreno(double superficieTerreno) {
        this.superficieTerreno = superficieTerreno;
    }

    public int getNumeroCalle() {
        return numeroCalle;
    }

    public void setNumeroCalle(int numeroCalle) {
        this.numeroCalle = numeroCalle;
    }

    public String getCalle() {
        return calle;
    }

    public void setCalle(String calle) {
        this.calle = calle;
    }

    public int getNroVivienda() {
        return nroVivienda;
    }

    public void setNroVivienda(int nroVivienda) {
        this.nroVivienda = nroVivienda;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
    public double getMetrosCuadradosCubiertos(){
        //Retornar total de metros Cuadrado de vivienda teniendo en cuenta la cantidad de habitaciones asociadas
        //Al finalizar el calculo validar que el valor obtenido no se mayor a la Sup del terreno
        //Si ocurre esto emitir excepcion con mensaje "La superficie cubierta no puede ser mayor a la sup del terreno"
        double resultado =0;
        int cantidadHabitaciones =0;
        double supTotalHabitaciones=0;
        for (Habitacion habitacione : habitaciones) {
            supTotalHabitaciones = +habitacione.getMetrosCuadrados();
            cantidadHabitaciones++;
        }
        if(supTotalHabitaciones > getSuperficieTerreno() ){
            System.out.println("La superficie cubierta no puede ser mayor a la sup del terreno");
            System.out.println("\nCantidad de Habitaciones: "+cantidadHabitaciones);
        }
        System.out.println("Cantidad de habitaciones "+cantidadHabitaciones);
        return resultado;
    }
}



Clase Habitacion
Código: java

package Punto2;

public class Habitacion {
   
    private long id;

    private String descripcion;

    private long metrosCuadrados;
   
    private Vivienda viviendas;
   
    public Habitacion() {
    }

    public Habitacion(long id, String descripcion, long metrosCuadrados, Vivienda viviendas) {
        this.id = id;
        this.descripcion = descripcion;
        this.metrosCuadrados = metrosCuadrados;
        this.viviendas = viviendas;
    }
   
    public Vivienda getViviendas() {
        return viviendas;
    }

    public void setViviendas(Vivienda viviendas) {
        this.viviendas = viviendas;
    }
   
    public long getMetrosCuadrados() {
        return metrosCuadrados;
    }

    public void setMetrosCuadrados(long metrosCuadrados) {
        this.metrosCuadrados = metrosCuadrados;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}



ahora quería saber su opinión si están bien representadas las relaciones
No intentes pararme, trata de defenderte, trata de matarme, pero de cualqueir forma TE SUPERARE

Febrero 16, 2016, 08:14:14 AM #1 Ultima modificación: Febrero 16, 2016, 08:16:31 AM por Hu3c0
Yo creo que te debes enfocar en los requerimientos me explico:
Una empresa constructora  puede estar en un barrio y en un barrio puede estar una empresa constructora esto sería  1+1
Una empresa constructora puede estar en muchos barrios y en un barrio  pueden haber muchas empresas constructoras esto sería N+N

En el ejemplo de la manzana:
Una manzana puede estar en una vivienda y en una vivienda pueden haber muchas manzanas  esto sería N + 1

Como ves todo depende  de las relaciones de las entidades que te expongan en los requerimientos.En las relaciones de muchos a muchos la
relación se convierte en otra entidad esto te estoy hablando bajo  la idea de una BD , creo que para el caso te vale exactamente lo mismo.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta