SlideShare a Scribd company logo
1 of 29
E.P.N
Programacion Orientada a Objetos

Proyecto del Segundo Bimestre

Nombre: JAIME GUZMAN
Fecha: 12/Ene/2010

Se desea desarrollar una aplicación para administrar los puertos del Ecuador, cada uno de los puertos tiene su nombre, una persona administrador
(cédula, nombre, sueldo) y una ciudad de origen (código, nombre y una persona alcalde)
Los puertos almacenan varios contenedores que llegan al país, ellos registran una placa, el peso en toneladas, un precio base por tonelada, un resumen
del contenido y una persona que es el dueño del contenedor.
Los contenedores pueden ser públicos o privados. Los contenedores públicos contienen un porcentaje de exoneración sobre el precio del contenedor
(el precio se calcula multiplicando un precio base de tonelada por el número de toneladas del contenedor).
El precio del contenedor público se calcula descontando el porcentaje de descuento del precio base. El precio del contenedor privado se calcula
sumando el precio base del contenedor por el número de toneladas más un recargo por cantidad de toneladas, esta cantidad de recargo se incrementa en
uno por cada 10 toneladas de peso.
El puerto debe registrar la cantidad de contenedores que existen actualmente en él, y un indicador de pago (cancelado o adeudado).
Se requieren los siguientes informes:
1.     Un listado de todos los contenedores con los nombres de los propietarios.
2.     Un listado de las placas de los contenedores públicos y privados del puerto.
3.     Un total de pagos recibidos por cada puerto.
4.     Un total de pagos recibidos por todos los puertos del país.
5.     El gobierno desea conocer un listado de todos los contenedores públicos que se encuentran en todos los puertos del país.
6.     El gobierno también desea conocer cuánto recibirá de ingresos por los contenedores privados que han ingresado al país.
7.     Un listado de todas las cédulas y nombres de los propietarios de los contenedores que adeudan al puerto.
Implementar el ingreso, eliminación y actualización de los contenedores además de las siguientes consultas:
1.     Si existe un contenedor y buscarlo por placa
2.     Cuáles son los contenedores de un determinado propietario
3.     Cuáles son los contenedores existentes en un puerto dado
Realizar un menú para manipular la aplicación y desarrollar los pasos para el diseño de un diagrama de clases.
CLASE APLICACION AplicacionPuerto.java

package puertoEcuador;
import java.io.*;
public class AplicacionPuerto {

        /**
         * @param args
         */
        public static void main(String[] args) {
                 // TODO Auto-generated method stub

                 double precioBase= 0;
                 double arancel = 0;
                 double descuento = 0;
                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                 CiudadOrigen ciudad = new CiudadOrigen("001","Quito",new Persona("141234234123","alcalde"));
                 Puerto puerto = new Puerto(new PersonaAdministrador("1721489407","David Guzman",123),ciudad,"Puerto SanBlas");

                 for(;;){

                            try{
                                   System.out.println("Ingrese una opcion: n 1 Para setear impuestos y descuentos n 2 Para ingresar a la aplicacionn"+
                                                      "3 para buscar por placan 4 para buscar por propietarion 5 para enlistar los contenedoresn");
                                   switch(Integer.parseInt(br.readLine())) {
                                   case 1: {
                                             System.out.println("Ingrese impuestos y descuentos n");
                                             System.out.println("Ingrese el precio base para contenedor[dolares]: n");
                                             precioBase = Double.parseDouble(br.readLine());
                                             System.out.println("Ingrese el descuento para contenedor publico [%]: n");
                                             descuento = Double.parseDouble(br.readLine());
                                             System.out.println("Ingrese el arancel para contenedor privado [dolar/tonelada]: n");
                                             arancel = Double.parseDouble(br.readLine());
                                             break;
                                   }
                                   case 2: {
                                             System.out.println("Ingrese la opcion:n 1 añadir un contenedorn 2 eliminar un contenedorn ");
                                             switch(Integer.parseInt(br.readLine())) {
                                             case 1:{
                                                      System.out.println("INGRESAR UN CONTENDEDOR n");
                                                      System.out.println(" Presione P para ingesar un contenedor publico" +
                                                                         " n T para ingresar un contenedor privado");
                                                      String opcion = br.readLine();
                                                      if(opcion.equals("t") || opcion.equals("T")){
System.out.println("Ingrese un contenedor con el formato:n NOMBRE_DEL_PROPIETARIO;" +
                                                                              "CEDULA_DEL_PROPIETARIO;PAGADO
(true/false);PESO;PLACA;RESUMEN_DE_CONTENIDOn ");
                                                      puerto.addContenedorPrivado(br.readLine(), precioBase, arancel);
                                            }
                                            else if(opcion.equals("p") || opcion.equals("P")) {

                                                   System.out.println("Ingrese un contenedor con el formato:n NOMBRE_DEL_PROPIETARIO;" +
                                          "CEDULA_DEL_PROPIETARIO;PAGADO(true/false);PESO;PLACA;RESUMEN_DE_CONTENIDOn ");
                                                   puerto.addContenedorPublico(br.readLine(), precioBase, descuento);
                                            }
                                            break;
                                    }
                                    case 2 : {
                                              System.out.println("ELIMINAR UN CONTENDEDOR n Ingrese la placa: n");
                                              puerto.eliminarContenedorPublico(puerto.buscarContenedorPlaca(br.readLine()));
                                              System.out.println("Se ha eliminado correctamente n");
                                              break;
                                    }
                                    case 3 : {
                                              System.out.println("BUSCAR UN CONTENDEDOR n Ingrese la placa: n");
                                              Object o = puerto.buscarContenedorPlaca(br.readLine());
                                              if(o instanceof ContenedorPublico) {
                                                        ContenedorPublico aux = (ContenedorPublico)o;
                                                        System.out.println(aux.listarParamDeContenedoresPublicos());
                                              }else if(o instanceof ContenedorPrivado) {
                                                        ContenedorPrivado aux = (ContenedorPrivado)o;
                                                        System.out.println(aux.listarParamDeContenedoresPrivados());
                                              }break;
                                    }
                                    case 4: {
                                              System.out.println("BUSCAR UN CONTENDEDOR n Ingrese el nombre del propietario: n");
                                              Object o = puerto.buscarContenedorNombre(br.readLine());
                                              if(o instanceof ContenedorPublico) {
                                                        ContenedorPublico aux = (ContenedorPublico)o;
                                                        System.out.println(aux.listarParamDeContenedoresPublicos());
                                              }else if(o instanceof ContenedorPrivado) {
                                                        ContenedorPrivado aux = (ContenedorPrivado)o;
                                                        System.out.println(aux.listarParamDeContenedoresPrivados());
                                              }break;
                                    }
                                    case 5: {
                                              System.out.println("ENLISTAR CONTENDEDORES n");
                                              System.out.println(puerto.contenedoresDelPuerto());
                                              break;
}case 6: {
                        String nombre = null;
                        String cedula = null;
                        boolean estado = false;
                        double peso =0;
                        String resumen = null;
                        System.out.println("ACTUALIZAR UN CONTENEDORn Ingrese la placa");
                        String placa = br.readLine();
                        System.out.println("Cambiar nombre           y/n:n");
                        if(br.readLine().equals("y")) {
                                  System.out.println("Ingrese nombre: n");
                                  nombre = br.readLine();
                        }
                        System.out.println("Cambiar cedulay/n:n");
                        if(br.readLine().equals("y")) {
                                  System.out.println("Ingrese cedula: n");
                                  cedula = br.readLine();
                        }
                        System.out.println("Poner en pagado          y/n:n");
                        if(br.readLine().equals("y")) {
                                  estado = true;
                        }
                        System.out.println("Cambiar peso y/n:n");
                        if(br.readLine().equals("y")) {
                                  System.out.println("Ingrese peso: n");
                                  peso = Integer.parseInt(br.readLine());
                        }
                        System.out.println("Cambiar resumen          y/n:n");
                        if(br.readLine().equals("y")) {
                                  System.out.println("Ingrese resumen: n");
                                  resumen = br.readLine();
                        }
                        puerto.actualizarContenedorPlaca(placa, nombre, cedula, estado, peso, resumen);
                        break;
             }
             default: {
                        System.out.println("No es una opcion validan");
                        break;
             }
             }
             break;
}
default: {
             System.out.println("No es una opcion valida n");
}
}
}catch(IOException e) {
                                   System.out.println(e.getMessage());
                          }catch(MyException e) {
                                   System.out.println(e.getMessage());
                          }catch(NumberFormatException e) {
                                   System.out.println("Error en el ingreso " + e.getMessage());
                          }


                 }


        }

}




CLASE PUERTO Puerto.java

package puertoEcuador;

import java.util.*;
/**
 * La clase define objetos del tipo <code>Puerto</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class Puerto {

        String nombre;
        CiudadOrigen ciudadOrigen;
        PersonaAdministrador administrador;

        /*Contiene los contenedores publicos del puerto*/
        ArrayList<ContenedorPublico> contenedoresPublicos;

        /*Contiene los contenedores privados del puerto*/
        ArrayList<ContenedorPrivado> contenedoresPrivados;
/**
 * Constructor con los siguientes parametros
 *
 * @param administrador
 * @param ciudadOrigen
 * @param nombre
 */
public Puerto(PersonaAdministrador administrador,
                  CiudadOrigen ciudadOrigen, String nombre) {

        this.administrador = administrador;
        this.ciudadOrigen = ciudadOrigen;
        this.nombre = nombre;
        contenedoresPublicos = new ArrayList<ContenedorPublico>();
        contenedoresPrivados = new ArrayList<ContenedorPrivado>();
}

/**
 * @return the nombre
 */
public String getNombre() {

        return nombre;
}

/**
 * @param nombre the nombre to set
 */
public void setNombre(String nombre) {

        this.nombre = nombre;
}

/**
 * El metodo calcula la cantidad de contenedores existentes en el
 * arrayList de <code>Contenedor</code>
 *
 * @return cantidadContenedores
 */
public int calcularCantidadDeContenedores() {

        int cantidadContenedores=0;
        for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {

                 cantidadContenedores++;
        }
for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {

                  cantidadContenedores++;
         }

         return cantidadContenedores;
}

/**
 * El metodo lista la placa del contenedor, la cedula del propietario
 * y el nombre del propietario
 *
 * @return String
 */
public String listarContenedorPropietario() {

         String contenedorDueño = new String();
         for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {

                   contenedorDueño += i.next().toStringContenedorPropietario();
         }
         for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();){

                  contenedorDueño+= i.next().toStringContenedorPropietario();
         }
         return contenedorDueño;
}

/**
 * El metodo retorna un String con el numero de placa
 * de cada contenedor añadiendo un retorno de carro
 *
 * @return String placas
 */
public String listarPlacas() {

         String placas = new String();
         for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {

                   placas+= "Placa publico: "+i.next().placa + "n";
         }
         for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {

                  placas+= "Placa privado: "+i.next().placa + "n";
         }
         return placas;
}

/**
 * El metodo calcula el total de pagos realizados en el puerto
 * sumando el precio total de cada contenedor
 *
 * @return pagos
 */
public double calcularTotalPagosxPuerto() {

         double pagos=0;

         for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {
                   ContenedorPublico aux = i.next();
                   if(aux.estadoContenedor) {
                             pagos+= aux.calcularPrecioTotal();
                   }

         }
         for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {
                   ContenedorPrivado aux = i.next();
                   if(aux.estadoContenedor) {
                             pagos+= aux.calcularPrecioTotal();
                   }
         }
         return pagos;
}

/**
 * El metodo devuelve una lista de los contenedores publicos
 *
 * @return contenedores es un String con la placa, peso, precio del contenedor
 */
public String listarContenedoresPublicos() {

         String contenedores = new String();
         for(Iterator<ContenedorPublico>i=contenedoresPublicos.iterator();i.hasNext();) {
                   ContenedorPublico aux = i.next();
                   contenedores += "placa: "+aux.placa+" "+"peso: "+aux.peso+" "+"Precio total: "+aux.calcularPrecioTotal()+"n";
         }
         return contenedores;
}

/**
 * El metodo calcula el total de pagos realizados en el puerto
 * sumando el precio total de cada contenedor privado
*
* @return pagos
*/
public double calcularIngresosContenedoresPrivados() {

        double pagos=0;
        for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {
                  ContenedorPrivado aux = i.next();
                  if(aux.estadoContenedor) {
                            pagos+= aux.calcularPrecioTotal();
                  }
        }
        return pagos;
}

/**
 * El metodo hace una lista en un String de las personas que
 * adeudan un contenedor mas la placa del contenedor
 *
 * @return deudores String to
 */
public String nombresDeudores() {
         String deudores = new String();
         for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {
                   ContenedorPublico aux = i.next();
                   if(aux.estadoContenedor) {
                             deudores += "Nombre: "+aux.propietario.nombre +" "+"Placa: "+aux.placa +"n";
                   }
         }
         for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {
                   ContenedorPrivado aux = i.next();
                   if(aux.estadoContenedor) {
                             deudores += "Nombre: "+aux.propietario.nombre +" "+"Placa: "+aux.placa +"n";
                   }
         }
         return deudores;
}

/**
 * El metodo hace una lista en un String de las personas que
 * adeudan un contenedor mas la placa del contenedor
 *
 * @return deudores String to
 */
public String cedulasDeudores() {
String deudores = new String();
                for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {
                          ContenedorPublico aux = i.next();
                          if(aux.estadoContenedor) {
                                    deudores += "Cedula: "+aux.propietario.cedula +" "+"Placa: "+aux.placa +"n";
                          }
                }
                for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {
                          ContenedorPrivado aux = i.next();
                          if(aux.estadoContenedor) {
                                    deudores += "Cedula: "+aux.propietario.cedula +" "+"Placa: "+aux.placa +"n";
                          }
                }
                return deudores;
        }

        /**
         * El metodo añade un contenedor, tomando como parametros un string
         * al cual se lo separa en tokens para tener los atributos de un objeto
         * de la clase <code>ContenedorPublico</code>
         *
         * @param contenedor es un String que será separado
         * @param precioxTon
         * @param exoneracion
         * @throws MyException
         * @throws NumberFormatException
         */
        public void addContenedorPublico(String contenedor, double precioxTon, double exoneracion) throws MyException,NumberFormatException {

                StringTokenizer stk = new StringTokenizer(contenedor,";");

                if(stk.countTokens()==6) {

                        Persona persona = new Persona(stk.nextToken(),stk.nextToken());
                        String aux = stk.nextToken();
                        if(!aux.equals("true")&&!aux.equals("false")){

                                  throw new MyException("Error en el ingreso de estado de contenedor debe ser true o false");
                        }else {
                                ContenedorPublico cp = new
ContenedorPublico(persona,Boolean.parseBoolean(aux),Double.parseDouble(stk.nextToken()),stk.nextToken(),stk.nextToken(),precioxTon,exoneracion);
                                if(!existeContenedor(cp)) {
                                          contenedoresPublicos.add(cp);
                                }else {
                                          throw new MyException("Error el contenedor ya existe");
                                }
}

                }else {
                          throw new MyException("Error en el ingreso de delimitadores");
                }

        }

        /**
         * El metodo añade un contenedor, tomando como parametros un string
         * al cual se lo separa en tokens para tener los atributos de un objeto
         * de la clase <code>ContenedorPrivado</code>
         *
         * @param contenedor es un String que será separado
         * @param precioxTon
         * @param recargoxTon
         * @throws MyException
         * @throws NumberFormatException
         */
        public void addContenedorPrivado(String contenedor, double precioxTon, double recargoxTon) throws MyException,NumberFormatException {

                StringTokenizer stk = new StringTokenizer(contenedor,";");

                if(stk.countTokens()==6) {

                          Persona persona = new Persona(stk.nextToken(),stk.nextToken());
                          String aux = stk.nextToken();
                          if(!aux.equals("true")&&!aux.equals("false")){

                                    throw new MyException("Error en el ingreso de estado de contenedor debe ser true o false");
                          }else {
                                ContenedorPrivado cp = new
ContenedorPrivado(persona,Boolean.parseBoolean(aux),Double.parseDouble(stk.nextToken()),stk.nextToken(),stk.nextToken(),precioxTon,recargoxTon);
                                if(!existeContenedor(cp)) {
                                          contenedoresPrivados.add(cp);
                                }else {
                                          throw new MyException("El contenedor ya existe");
                                }

                          }

                }else {
                          throw new MyException("Error en el ingreso de delimitadores");
                }
        }
/**
 * El metodo comprueba si un objeto tiene alguna correspondencia
 * con un contenedor ya sea publico o privado
 *
 * @param o objeto a ser comprobado a traves de coincidiencia de la placa
 * @return boolean true para confirmar la existencia de un contenedor
 */
public boolean existeContenedor(Object o) {

        if(o instanceof ContenedorPublico || o instanceof ContenedorPrivado) {
                  if(o instanceof ContenedorPublico) {
                             ContenedorPublico aux = (ContenedorPublico)o;
                             for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {
                                       if(aux.placa.equals(i.next().placa)) {
                                                 return true;
                                       }
                             }
                             for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) {
                                       if(aux.placa.equals(i.next().placa)) {
                                                 return true;
                                       }
                             }
                  }
                  else if(o instanceof ContenedorPrivado) {
                             ContenedorPrivado aux = (ContenedorPrivado)o;
                             for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {
                                       if(aux.placa.equals(i.next().placa)) {
                                                 return true;
                                       }
                             }
                             for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) {
                                       if(aux.placa.equals(i.next().placa)) {
                                                 return true;
                                       }
                             }
                  }
        }return false;
}

/**
 * EL metodo elimina un contenedor verificando si este existe
 *
 * @param o es un objeto de la clase <code>Object</code>
 * @throws MyException
 */
public void eliminarContenedorPublico(Object o) throws MyException {
if(existeContenedor(o)) {

                  contenedoresPublicos.remove(o);
                  contenedoresPrivados.remove(o);
        }else {
                  throw new MyException("No existe el contenedor");
        }
}

/**
 * El metodo busca un contendor por su placa y lo devuelve
 *
 * @param placaBuscada
 * @return
 */
public Object buscarContenedorPlaca(String placaBuscada) {

        for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {
                  ContenedorPublico aux = i.next();
                  if(aux.placa.equals(placaBuscada)) {
                            return aux;
                  }
        }

        for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {
                  ContenedorPrivado aux = i.next();
                  if(aux.placa.equals(placaBuscada)) {
                            return aux;
                  }
        }
        return null;
}

/**
 * El metodo busca un contenedor por el nombre de su propietario y lo devuelve
 *
 * @param nombre es el nombre del propietario del contenedor
 * @return Object
 */
public Object buscarContenedorNombre(String nombre) {

        for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {
                  ContenedorPublico aux = i.next();
                  if(aux.propietario.nombre.equals(nombre)) {
                            return aux;
}
        }

        for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {
                  ContenedorPrivado aux = i.next();
                  if(aux.propietario.nombre.equals(nombre)) {
                            return aux;
                  }
        }
        return null;
}

/**
 * El metodo busca un contendor por su placa y lo devuelve
 *
 * @param placaBuscada
 * @return
 */
public void actualizarContenedorPlaca(String placaBuscada,String nombre,
                                   String cedula,boolean estado, double peso,
                                   String resumen) {

        for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {
                  ContenedorPublico aux = i.next();
                  if(aux.placa.equals(placaBuscada)) {
                            if(nombre!=null){
                                       aux.propietario.setNombre(nombre);
                            }else if(cedula!=null) {
                                       aux.propietario.setCedula(cedula);
                            }else if(estado==true || estado==false) {
                                       aux.setEstadoContenedor(estado);
                            }else if(peso!=0) {
                                       aux.setPeso(peso);
                            }else if(resumen!=null) {
                                       aux.setResumen(resumen);
                            }
                  }
        }

        for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {
                  ContenedorPrivado aux = i.next();
                  if(aux.placa.equals(placaBuscada)) {
                            if(nombre!=null){
                                      aux.propietario.setNombre(nombre);
                            }else if(cedula!=null) {
                                      aux.propietario.setCedula(cedula);
}else if(estado==true || estado==false) {
                                         aux.setEstadoContenedor(estado);
                              }else if(peso!=0) {
                                         aux.setPeso(peso);
                              }else if(resumen!=null) {
                                         aux.setResumen(resumen);
                              }

                     }
            }
    }

    /**
     * Devuelve un String con todos los contenedores existentes
     *
     * @return String
     */
    public String contenedoresDelPuerto() {

            String cp = new String();
            for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) {
                      ContenedorPublico con = i.next();
                      cp+= con.toStringContenedorPropietario()+ con.listarParamDeContenedoresPublicos()+"n";
            }

            for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) {
                      ContenedorPrivado con = i.next();
                      cp+= con.toStringContenedorPropietario() + con.listarParamDeContenedoresPrivados()+"n";
            }
            return "Puerto: "+this.nombre+ "n" + cp;
    }
}
CLASE CIUDAD ORIGEN CiudadOrigen.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>CiudadOrigen</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class CiudadOrigen {

        /* Atributo que define el codigo de una ciudad*/
        private String codigo;

        /* Atributo que define el nombre de una ciudad*/
        public String nombre;

        Persona alcalde;

        /**
         * Constructor por default
         */
        public CiudadOrigen() {

        }

        /**
         * Constructor con tres campos
         *
         * @param codigo contiene el campo para el atributo <code>codigo</code>
         * @param nombre contiene el campo para el atributo <code>nombre</code>
         * @param alcalde objeto de la clase <code>Person</code>
         */
        public CiudadOrigen(String codigo, String nombre, Persona alcalde) {

                 this.codigo = codigo;
                 this.nombre = nombre;
                 this.alcalde = alcalde;
        }

        /**
         * Constructor copia
         *
         * @param nuevaCiudad objeto de la clase <code>CiudadOrigen</code>
         */
public CiudadOrigen(CiudadOrigen nuevaCiudad) {

        this.codigo = nuevaCiudad.codigo;
        this.nombre = nuevaCiudad.nombre;
        this.alcalde = nuevaCiudad.alcalde;
}

/**
 * Retorna el campo <code>codigo</code>
 *
 * @return codigo campo que contiene el atributo <code>codigo</code>
 */
public String getCodigo() {

        return codigo;
}

/**
 * Metodo que setea el campo <code>codigo</code>
 *
 * @param codigo contiene el campo para el atributo <code>codigo</code>
 */
public void setCodigo(String codigo) {

        this.codigo = codigo;
}

/**
 * Retorna el campo <code>nombre</code>
 *
 * @return nombre campo que contiene el atributo <code>codigo</code>
 */
public String getNombre() {

        return nombre;
}

/**
 * Metodo que setea el campo <code>nombre</code>
 *
 * @param nombre contiene el campo para el atributo <code>nombre</code>
 */
public void setNombre(String nombre) {

        this.nombre = nombre;
}
/**
         * @return the alcalde
         */
        public Persona getAlcalde() {

                 return alcalde;
        }

        /**
         * @param alcalde the alcalde to set
         */
        public void setAlcalde(Persona alcalde) {

                 this.alcalde = alcalde;
        }


}

CLASE Contenedor Contenedor.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>Contenedor</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class Contenedor {

        /*campo que contiene la placa del contenedor*/
        protected String placa;

        protected double peso;
        protected double precioBasexTonelada;
        /*campo que contiene el resumen del contenido del contenedor*/
        public String resumen;

        /*Atributo que define el estado de un contenedor true=pagado false=adeudado*/
        protected boolean estadoContenedor;

        Persona propietario;

        /**
* Constructor con parametros de la clase <code>Contenedor</code>
*
* @param estadoContenedor
* @param peso
* @param placa
* @param precioBasexTonelada
* @param resumen
* @param propietario
*/
public Contenedor(boolean estadoContenedor, double peso, String placa,
                 double precioBasexTonelada, String resumen, Persona propietario) {

         this.estadoContenedor = estadoContenedor;
         this.peso = peso;
         this.placa = placa;
         this.precioBasexTonelada = precioBasexTonelada;
         this.resumen = resumen;
         this.propietario = propietario;
}

/**
 * Constructor por default
 */
public Contenedor() {

}

/**
 * Constructor tipo copia
 *
 * @param contenedor objeto de la clase <code>Contenedor</code>
 */
public Contenedor(Contenedor contenedor) {

         this.placa = contenedor.placa;
         this.peso = contenedor.peso;
         this.precioBasexTonelada = contenedor.precioBasexTonelada;
         this.resumen = contenedor.resumen;
         this.estadoContenedor = contenedor.estadoContenedor;
         this.propietario = contenedor.propietario;
}

/**
 * @return the placa
 */
public String getPlaca() {
return placa;
}

/**
 * @param placa the placa to set
 */
public void setPlaca(String placa) {

         this.placa = placa;
}

/**
 * @return the peso
 */
public double getPeso() {

         return peso;
}

/**
 * @param peso the peso to set
 */
public void setPeso(double peso) {

         this.peso = peso;
}

/**
 * @return the precioBasexTonelada
 */
public double getPrecioBasexTonelada() {

         return precioBasexTonelada;
}

/**
 * @param precioBasexTonelada the precioBasexTonelada to set
 */
public void setPrecioBasexTonelada(double precioBasexTonelada) {

         this.precioBasexTonelada = precioBasexTonelada;
}

/**
 * @return the resumen
*/
public String getResumen() {

         return resumen;
}

/**
 * @param resumen the resumen to set
 */
public void setResumen(String resumen) {

         this.resumen = resumen;
}

/**
 * @return the estadoContenedor
 */
public boolean getEstadoContenedor() {

         return estadoContenedor;
}

/**
 * @param estadoContenedor the estadoContenedor to set
 */
public void setEstadoContenedor(boolean estadoContenedor) {

         this.estadoContenedor = estadoContenedor;
}

/**
 * @return the propietario
 */
public Persona getPropietario() {

         return propietario;
}

/**
 * @param propietario the propietario to set
 */
public void setPropietario(Persona propietario) {

         this.propietario = propietario;
}
/**
         * El metodo calcula el precio base de un contenedor de
         * la clase <code>Contenedor</code>
         *
         * @return precioBase es el precio que se paga por cada tonelada
         */
        public double calcularPrecioBase() {

                 return this.peso*this.precioBasexTonelada;
        }

        /**
         * El metodo devuelve un string con la placa del contenedor
         * y la informacion del propietario
         *
         * @return String
         */
        public String toStringContenedorPropietario() {

                 return this.placa + " " + this.propietario.getCedula() + " " + this.propietario.getNombre()+ "n";
        }
}

CLASE CONTENEDOR PUBLICO ContenedorPublico.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>ContenedorPublico</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class ContenedorPublico extends Contenedor {

        /*Porcentaje de exoneracion es un atributo que se da en tanto por ciento*/
        private double porcentajeExoneracion;

        /**
         * @return the porcentajeExoneracion
         */
        public double getPorcentajeExoneracion() {

                 return porcentajeExoneracion;
        }
/**
 * @param porcentajeExoneracion the porcentajeExoneracion to set
 */
public void setPorcentajeExoneracion(double porcentajeExoneracion) {

        this.porcentajeExoneracion = porcentajeExoneracion;
}

/**
 * Constructor con los siguientes campos:
 *
 * @param estadoContenedor
 * @param peso
 * @param placa
 * @param precioBasexTonelada
 * @param resumen
 * @param propietario
 * @param porcentajeExoneracion
 */
public ContenedorPublico(Persona propietario, boolean estadoContenedor, double peso,
                  String placa, String resumen,double precioBasexTonelada,
                  double porcentajeExoneracion) {
         super(estadoContenedor, peso, placa, precioBasexTonelada, resumen,
                            propietario);
         this.porcentajeExoneracion = porcentajeExoneracion;
}

/**
 * Metodo que calcula el precio total que se pagara por un contenedor
 * del tipo <code>ContenedorPublico</code>
 *
 * @return precioTotal es el precio total que se pagara por el contenedor
 *                  publico incluido el porcentaje de exoneración.
 */
public double calcularPrecioTotal() {

        return super.calcularPrecioBase()-(super.calcularPrecioBase()*this.porcentajeExoneracion/100);
}

/**
 * Metodo que lista en un String todos los atribuots de un contenedor
 * publico
 *
 * @return String parametros de <code>ContenedorPublico</code>
 */
public String listarParamDeContenedoresPublicos() {
return "Placa: "+ super.placa + " Peso: "+ super.peso + " resumen: "+super.resumen + " Pagado: "+super.estadoContenedor + " Precio total:
"+calcularPrecioTotal();
         }

}

CLASE CONTENEDOR Privado ContenedorPrivado.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>ContenedorPrivado</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class ContenedorPrivado extends Contenedor {

        private double recargoxTonelada;

        /**
         * @return the porcentajeRecargoxTonelada
         */
        public double getPorcentajeRecargoxTonelada() {

                 return recargoxTonelada;
        }

        /**
         * @param porcentajeRecargoxTonelada the porcentajeRecargoxTonelada to set
         */
        public void setPorcentajeRecargoxTonelada(double recargoxTonelada) {

                 this.recargoxTonelada = recargoxTonelada;
        }

        /**
         * Constructor con los siguientes parametros:
         *
         * @param estadoContenedor
         * @param peso
         * @param placa
         * @param precioBasexTonelada
         * @param resumen
         * @param propietario
* @param recargoxTonelada
         */
        public ContenedorPrivado(Persona propietario, boolean estadoContenedor, double peso,
                          String placa, String resumen, double precioBasexTonelada,
                          double recargoxTonelada) {
                 super(estadoContenedor, peso, placa, precioBasexTonelada, resumen,
                                   propietario);
                 this.recargoxTonelada = recargoxTonelada;
        }

        /**
         * Metodo que calcula el valor del recargo en dolares
         *
         * @return recargo valor del recargo en dolares/tonelada
         */
        public double calcularRecargo() {

                 for(int n=0; n<=super.peso ; n+=10) {

                          this.recargoxTonelada+=1;
                 }

                 return recargoxTonelada;
        }

        /**
         * Metodo que calcula el precio total de un contenedor de la clase
         * <code>Contenedor</code>
         *
         * @return precioTotal es el precio incluido el recargo, en dolares.
         */
        public double calcularPrecioTotal() {

                 return super.calcularPrecioBase()+ this.calcularRecargo()*super.peso;
        }

        /**
         * Metodo que lista en un String todos los atribuots de un contenedor
         * privado
         *
         * @return String parametros de <code>ContenedorPrivado</code>
         */
        public String listarParamDeContenedoresPrivados() {

                 return "Placa: "+ super.placa + " Peso: "+ super.peso + " resumen: "+super.resumen + " Pagado: "+super.estadoContenedor + " Precio total:
"+calcularPrecioTotal();
}
}

CLASE exception MyException.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>MyException</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class MyException extends Exception {


        /**
         *
         */
        private static final long serialVersionUID = 1L;

        public MyException(String msg) {
                super(msg);
        }

}


CLASE PERSONA Persona.java

package puertoEcuador;

/**
 * La clase define objetos del tipo <code>Persona</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class Persona {

        protected String cedula;
        protected String nombre;

        /**
         * @return the cedula
         */
public String getCedula() {

         return cedula;
}

/**
 * @param cedula the cedula to set
 */
public void setCedula(String cedula) {

         this.cedula = cedula;
}

/**
 * @return the nombre
 */
public String getNombre() {

         return nombre;
}

/**
 * @param nombre the nombre to set
 */
public void setNombre(String nombre) {

         this.nombre = nombre;
}

/**
 * Constructor con dos parametros
 *
 * @param cedula
 * @param nombre
 */
public Persona(String nombre, String cedula) {

         this.cedula = cedula;
         this.nombre = nombre;
}

/**
 * Constructor por default
 */
public Persona() {
}

        /**
         * Constructor tipo copia
         *
         * @param persona objeto de la clase <code>Persona</code>
         */
        public Persona(Persona persona) {

                 this.cedula = persona.cedula;
                 this.nombre = persona.nombre;
        }

}



CLASE PERSONA ADMINISTRADOR PersonaAdministrador.java


package puertoEcuador;

/**
 * La clase define objetos del tipo <code>PersonaAdministrador</code>
 *
 * @author davidGuzman
 * @version 1.0
 */
public class PersonaAdministrador extends Persona {

        private double sueldo;

        /**
         * @return the sueldo
         */
        public double getSueldo() {

                 return sueldo;
        }

        /**
         * @param sueldo the sueldo to set
         */
        public void setSueldo(double sueldo) {

                 this.sueldo = sueldo;
}

    /**
     * Constructor de la clase <code>PersonaAdministrador</code>
     *
     * @param cedula
     * @param nombre
     * @param sueldo
     */
    public PersonaAdministrador(String cedula, String nombre, double sueldo) {
             super(cedula, nombre);
             this.sueldo = sueldo;
    }
}

More Related Content

Viewers also liked

La crisis bajomedieval
La crisis bajomedievalLa crisis bajomedieval
La crisis bajomedievalOscar Leon
 
El Sistema Electoral En España
El Sistema Electoral En EspañaEl Sistema Electoral En España
El Sistema Electoral En EspañaOscar Leon
 
Plaquette "Motiva mobilité"
Plaquette "Motiva mobilité"Plaquette "Motiva mobilité"
Plaquette "Motiva mobilité"Prof. Zwi Segal
 
Estudio Juventud y Sociedad De La Informacion (Modulo 4)
Estudio Juventud y Sociedad De La Informacion (Modulo 4)Estudio Juventud y Sociedad De La Informacion (Modulo 4)
Estudio Juventud y Sociedad De La Informacion (Modulo 4)guestfc5383
 
Mi Presentacion Jose Leonel Silva Guillen
Mi Presentacion  Jose Leonel Silva GuillenMi Presentacion  Jose Leonel Silva Guillen
Mi Presentacion Jose Leonel Silva Guillenzorrito20
 
Présentation Motiva Engagement System 2017
Présentation Motiva Engagement System 2017 Présentation Motiva Engagement System 2017
Présentation Motiva Engagement System 2017 Prof. Zwi Segal
 
Frase simples final
Frase simples finalFrase simples final
Frase simples finalCarlos Lima
 
Datos escale i.e 50108 mario vargas llosa
Datos escale i.e 50108 mario vargas llosaDatos escale i.e 50108 mario vargas llosa
Datos escale i.e 50108 mario vargas llosaCuSi NiCol
 
Presentación animal literario
Presentación animal literarioPresentación animal literario
Presentación animal literarioOscar Leon
 
Calidad Menorca 2008
Calidad Menorca 2008Calidad Menorca 2008
Calidad Menorca 2008sv1969
 

Viewers also liked (20)

La crisis bajomedieval
La crisis bajomedievalLa crisis bajomedieval
La crisis bajomedieval
 
El Sistema Electoral En España
El Sistema Electoral En EspañaEl Sistema Electoral En España
El Sistema Electoral En España
 
La Mezcla Comercial
La Mezcla ComercialLa Mezcla Comercial
La Mezcla Comercial
 
Plaquette "Motiva mobilité"
Plaquette "Motiva mobilité"Plaquette "Motiva mobilité"
Plaquette "Motiva mobilité"
 
Interview - MEA
Interview - MEAInterview - MEA
Interview - MEA
 
Estudio Juventud y Sociedad De La Informacion (Modulo 4)
Estudio Juventud y Sociedad De La Informacion (Modulo 4)Estudio Juventud y Sociedad De La Informacion (Modulo 4)
Estudio Juventud y Sociedad De La Informacion (Modulo 4)
 
La Web 2.0
La Web 2.0La Web 2.0
La Web 2.0
 
Mi Presentacion Jose Leonel Silva Guillen
Mi Presentacion  Jose Leonel Silva GuillenMi Presentacion  Jose Leonel Silva Guillen
Mi Presentacion Jose Leonel Silva Guillen
 
Présentation Motiva Engagement System 2017
Présentation Motiva Engagement System 2017 Présentation Motiva Engagement System 2017
Présentation Motiva Engagement System 2017
 
Software Portables
Software  PortablesSoftware  Portables
Software Portables
 
fiesta de pomapata
fiesta de pomapatafiesta de pomapata
fiesta de pomapata
 
La Empresa
La EmpresaLa Empresa
La Empresa
 
AerinLauderforT&C
AerinLauderforT&C AerinLauderforT&C
AerinLauderforT&C
 
Frase simples final
Frase simples finalFrase simples final
Frase simples final
 
Datos escale i.e 50108 mario vargas llosa
Datos escale i.e 50108 mario vargas llosaDatos escale i.e 50108 mario vargas llosa
Datos escale i.e 50108 mario vargas llosa
 
Empresa 1.2
Empresa 1.2Empresa 1.2
Empresa 1.2
 
Presentación animal literario
Presentación animal literarioPresentación animal literario
Presentación animal literario
 
Tortura
TorturaTortura
Tortura
 
Calidad Menorca 2008
Calidad Menorca 2008Calidad Menorca 2008
Calidad Menorca 2008
 
Tarea Mami
Tarea MamiTarea Mami
Tarea Mami
 

Similar to Informe Poo

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto PooEPN
 
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer  Formulario Con Su CodificacióNCrear El Proyecto Y El Primer  Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer Formulario Con Su CodificacióNjameszx
 
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer  Formulario Con Su CodificacióNCrear El Proyecto Y El Primer  Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer Formulario Con Su CodificacióNjameszx
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estaticaJoeCorp
 
Formulario Para Agregar ArtíCulos
Formulario Para Agregar ArtíCulosFormulario Para Agregar ArtíCulos
Formulario Para Agregar ArtíCulosjameszx
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2climancc
 
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetosluis freddy
 
Proyecto Poogame Bus
Proyecto Poogame BusProyecto Poogame Bus
Proyecto Poogame BusEPN
 
Manual de shine system
Manual de shine systemManual de shine system
Manual de shine systemRafa
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 

Similar to Informe Poo (20)

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto Poo
 
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer  Formulario Con Su CodificacióNCrear El Proyecto Y El Primer  Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
 
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer  Formulario Con Su CodificacióNCrear El Proyecto Y El Primer  Formulario Con Su CodificacióN
Crear El Proyecto Y El Primer Formulario Con Su CodificacióN
 
Codificacion
CodificacionCodificacion
Codificacion
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
Formulario Para Agregar ArtíCulos
Formulario Para Agregar ArtíCulosFormulario Para Agregar ArtíCulos
Formulario Para Agregar ArtíCulos
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2
 
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
Proyecto Poogame Bus
Proyecto Poogame BusProyecto Poogame Bus
Proyecto Poogame Bus
 
Manual de shine system
Manual de shine systemManual de shine system
Manual de shine system
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 

Recently uploaded

Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxFabianValenciaJabo
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalRosarioChoque3
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Carol Andrea Eraso Guerrero
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 

Recently uploaded (20)

Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 

Informe Poo

  • 1. E.P.N Programacion Orientada a Objetos Proyecto del Segundo Bimestre Nombre: JAIME GUZMAN Fecha: 12/Ene/2010 Se desea desarrollar una aplicación para administrar los puertos del Ecuador, cada uno de los puertos tiene su nombre, una persona administrador (cédula, nombre, sueldo) y una ciudad de origen (código, nombre y una persona alcalde) Los puertos almacenan varios contenedores que llegan al país, ellos registran una placa, el peso en toneladas, un precio base por tonelada, un resumen del contenido y una persona que es el dueño del contenedor. Los contenedores pueden ser públicos o privados. Los contenedores públicos contienen un porcentaje de exoneración sobre el precio del contenedor (el precio se calcula multiplicando un precio base de tonelada por el número de toneladas del contenedor). El precio del contenedor público se calcula descontando el porcentaje de descuento del precio base. El precio del contenedor privado se calcula sumando el precio base del contenedor por el número de toneladas más un recargo por cantidad de toneladas, esta cantidad de recargo se incrementa en uno por cada 10 toneladas de peso. El puerto debe registrar la cantidad de contenedores que existen actualmente en él, y un indicador de pago (cancelado o adeudado). Se requieren los siguientes informes: 1. Un listado de todos los contenedores con los nombres de los propietarios. 2. Un listado de las placas de los contenedores públicos y privados del puerto. 3. Un total de pagos recibidos por cada puerto. 4. Un total de pagos recibidos por todos los puertos del país. 5. El gobierno desea conocer un listado de todos los contenedores públicos que se encuentran en todos los puertos del país. 6. El gobierno también desea conocer cuánto recibirá de ingresos por los contenedores privados que han ingresado al país. 7. Un listado de todas las cédulas y nombres de los propietarios de los contenedores que adeudan al puerto. Implementar el ingreso, eliminación y actualización de los contenedores además de las siguientes consultas: 1. Si existe un contenedor y buscarlo por placa 2. Cuáles son los contenedores de un determinado propietario 3. Cuáles son los contenedores existentes en un puerto dado Realizar un menú para manipular la aplicación y desarrollar los pasos para el diseño de un diagrama de clases.
  • 2. CLASE APLICACION AplicacionPuerto.java package puertoEcuador; import java.io.*; public class AplicacionPuerto { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub double precioBase= 0; double arancel = 0; double descuento = 0; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); CiudadOrigen ciudad = new CiudadOrigen("001","Quito",new Persona("141234234123","alcalde")); Puerto puerto = new Puerto(new PersonaAdministrador("1721489407","David Guzman",123),ciudad,"Puerto SanBlas"); for(;;){ try{ System.out.println("Ingrese una opcion: n 1 Para setear impuestos y descuentos n 2 Para ingresar a la aplicacionn"+ "3 para buscar por placan 4 para buscar por propietarion 5 para enlistar los contenedoresn"); switch(Integer.parseInt(br.readLine())) { case 1: { System.out.println("Ingrese impuestos y descuentos n"); System.out.println("Ingrese el precio base para contenedor[dolares]: n"); precioBase = Double.parseDouble(br.readLine()); System.out.println("Ingrese el descuento para contenedor publico [%]: n"); descuento = Double.parseDouble(br.readLine()); System.out.println("Ingrese el arancel para contenedor privado [dolar/tonelada]: n"); arancel = Double.parseDouble(br.readLine()); break; } case 2: { System.out.println("Ingrese la opcion:n 1 añadir un contenedorn 2 eliminar un contenedorn "); switch(Integer.parseInt(br.readLine())) { case 1:{ System.out.println("INGRESAR UN CONTENDEDOR n"); System.out.println(" Presione P para ingesar un contenedor publico" + " n T para ingresar un contenedor privado"); String opcion = br.readLine(); if(opcion.equals("t") || opcion.equals("T")){
  • 3. System.out.println("Ingrese un contenedor con el formato:n NOMBRE_DEL_PROPIETARIO;" + "CEDULA_DEL_PROPIETARIO;PAGADO (true/false);PESO;PLACA;RESUMEN_DE_CONTENIDOn "); puerto.addContenedorPrivado(br.readLine(), precioBase, arancel); } else if(opcion.equals("p") || opcion.equals("P")) { System.out.println("Ingrese un contenedor con el formato:n NOMBRE_DEL_PROPIETARIO;" + "CEDULA_DEL_PROPIETARIO;PAGADO(true/false);PESO;PLACA;RESUMEN_DE_CONTENIDOn "); puerto.addContenedorPublico(br.readLine(), precioBase, descuento); } break; } case 2 : { System.out.println("ELIMINAR UN CONTENDEDOR n Ingrese la placa: n"); puerto.eliminarContenedorPublico(puerto.buscarContenedorPlaca(br.readLine())); System.out.println("Se ha eliminado correctamente n"); break; } case 3 : { System.out.println("BUSCAR UN CONTENDEDOR n Ingrese la placa: n"); Object o = puerto.buscarContenedorPlaca(br.readLine()); if(o instanceof ContenedorPublico) { ContenedorPublico aux = (ContenedorPublico)o; System.out.println(aux.listarParamDeContenedoresPublicos()); }else if(o instanceof ContenedorPrivado) { ContenedorPrivado aux = (ContenedorPrivado)o; System.out.println(aux.listarParamDeContenedoresPrivados()); }break; } case 4: { System.out.println("BUSCAR UN CONTENDEDOR n Ingrese el nombre del propietario: n"); Object o = puerto.buscarContenedorNombre(br.readLine()); if(o instanceof ContenedorPublico) { ContenedorPublico aux = (ContenedorPublico)o; System.out.println(aux.listarParamDeContenedoresPublicos()); }else if(o instanceof ContenedorPrivado) { ContenedorPrivado aux = (ContenedorPrivado)o; System.out.println(aux.listarParamDeContenedoresPrivados()); }break; } case 5: { System.out.println("ENLISTAR CONTENDEDORES n"); System.out.println(puerto.contenedoresDelPuerto()); break;
  • 4. }case 6: { String nombre = null; String cedula = null; boolean estado = false; double peso =0; String resumen = null; System.out.println("ACTUALIZAR UN CONTENEDORn Ingrese la placa"); String placa = br.readLine(); System.out.println("Cambiar nombre y/n:n"); if(br.readLine().equals("y")) { System.out.println("Ingrese nombre: n"); nombre = br.readLine(); } System.out.println("Cambiar cedulay/n:n"); if(br.readLine().equals("y")) { System.out.println("Ingrese cedula: n"); cedula = br.readLine(); } System.out.println("Poner en pagado y/n:n"); if(br.readLine().equals("y")) { estado = true; } System.out.println("Cambiar peso y/n:n"); if(br.readLine().equals("y")) { System.out.println("Ingrese peso: n"); peso = Integer.parseInt(br.readLine()); } System.out.println("Cambiar resumen y/n:n"); if(br.readLine().equals("y")) { System.out.println("Ingrese resumen: n"); resumen = br.readLine(); } puerto.actualizarContenedorPlaca(placa, nombre, cedula, estado, peso, resumen); break; } default: { System.out.println("No es una opcion validan"); break; } } break; } default: { System.out.println("No es una opcion valida n"); } }
  • 5. }catch(IOException e) { System.out.println(e.getMessage()); }catch(MyException e) { System.out.println(e.getMessage()); }catch(NumberFormatException e) { System.out.println("Error en el ingreso " + e.getMessage()); } } } } CLASE PUERTO Puerto.java package puertoEcuador; import java.util.*; /** * La clase define objetos del tipo <code>Puerto</code> * * @author davidGuzman * @version 1.0 */ public class Puerto { String nombre; CiudadOrigen ciudadOrigen; PersonaAdministrador administrador; /*Contiene los contenedores publicos del puerto*/ ArrayList<ContenedorPublico> contenedoresPublicos; /*Contiene los contenedores privados del puerto*/ ArrayList<ContenedorPrivado> contenedoresPrivados;
  • 6. /** * Constructor con los siguientes parametros * * @param administrador * @param ciudadOrigen * @param nombre */ public Puerto(PersonaAdministrador administrador, CiudadOrigen ciudadOrigen, String nombre) { this.administrador = administrador; this.ciudadOrigen = ciudadOrigen; this.nombre = nombre; contenedoresPublicos = new ArrayList<ContenedorPublico>(); contenedoresPrivados = new ArrayList<ContenedorPrivado>(); } /** * @return the nombre */ public String getNombre() { return nombre; } /** * @param nombre the nombre to set */ public void setNombre(String nombre) { this.nombre = nombre; } /** * El metodo calcula la cantidad de contenedores existentes en el * arrayList de <code>Contenedor</code> * * @return cantidadContenedores */ public int calcularCantidadDeContenedores() { int cantidadContenedores=0; for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { cantidadContenedores++; }
  • 7. for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { cantidadContenedores++; } return cantidadContenedores; } /** * El metodo lista la placa del contenedor, la cedula del propietario * y el nombre del propietario * * @return String */ public String listarContenedorPropietario() { String contenedorDueño = new String(); for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { contenedorDueño += i.next().toStringContenedorPropietario(); } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();){ contenedorDueño+= i.next().toStringContenedorPropietario(); } return contenedorDueño; } /** * El metodo retorna un String con el numero de placa * de cada contenedor añadiendo un retorno de carro * * @return String placas */ public String listarPlacas() { String placas = new String(); for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { placas+= "Placa publico: "+i.next().placa + "n"; } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { placas+= "Placa privado: "+i.next().placa + "n"; } return placas;
  • 8. } /** * El metodo calcula el total de pagos realizados en el puerto * sumando el precio total de cada contenedor * * @return pagos */ public double calcularTotalPagosxPuerto() { double pagos=0; for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { ContenedorPublico aux = i.next(); if(aux.estadoContenedor) { pagos+= aux.calcularPrecioTotal(); } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { ContenedorPrivado aux = i.next(); if(aux.estadoContenedor) { pagos+= aux.calcularPrecioTotal(); } } return pagos; } /** * El metodo devuelve una lista de los contenedores publicos * * @return contenedores es un String con la placa, peso, precio del contenedor */ public String listarContenedoresPublicos() { String contenedores = new String(); for(Iterator<ContenedorPublico>i=contenedoresPublicos.iterator();i.hasNext();) { ContenedorPublico aux = i.next(); contenedores += "placa: "+aux.placa+" "+"peso: "+aux.peso+" "+"Precio total: "+aux.calcularPrecioTotal()+"n"; } return contenedores; } /** * El metodo calcula el total de pagos realizados en el puerto * sumando el precio total de cada contenedor privado
  • 9. * * @return pagos */ public double calcularIngresosContenedoresPrivados() { double pagos=0; for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { ContenedorPrivado aux = i.next(); if(aux.estadoContenedor) { pagos+= aux.calcularPrecioTotal(); } } return pagos; } /** * El metodo hace una lista en un String de las personas que * adeudan un contenedor mas la placa del contenedor * * @return deudores String to */ public String nombresDeudores() { String deudores = new String(); for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { ContenedorPublico aux = i.next(); if(aux.estadoContenedor) { deudores += "Nombre: "+aux.propietario.nombre +" "+"Placa: "+aux.placa +"n"; } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { ContenedorPrivado aux = i.next(); if(aux.estadoContenedor) { deudores += "Nombre: "+aux.propietario.nombre +" "+"Placa: "+aux.placa +"n"; } } return deudores; } /** * El metodo hace una lista en un String de las personas que * adeudan un contenedor mas la placa del contenedor * * @return deudores String to */ public String cedulasDeudores() {
  • 10. String deudores = new String(); for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { ContenedorPublico aux = i.next(); if(aux.estadoContenedor) { deudores += "Cedula: "+aux.propietario.cedula +" "+"Placa: "+aux.placa +"n"; } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { ContenedorPrivado aux = i.next(); if(aux.estadoContenedor) { deudores += "Cedula: "+aux.propietario.cedula +" "+"Placa: "+aux.placa +"n"; } } return deudores; } /** * El metodo añade un contenedor, tomando como parametros un string * al cual se lo separa en tokens para tener los atributos de un objeto * de la clase <code>ContenedorPublico</code> * * @param contenedor es un String que será separado * @param precioxTon * @param exoneracion * @throws MyException * @throws NumberFormatException */ public void addContenedorPublico(String contenedor, double precioxTon, double exoneracion) throws MyException,NumberFormatException { StringTokenizer stk = new StringTokenizer(contenedor,";"); if(stk.countTokens()==6) { Persona persona = new Persona(stk.nextToken(),stk.nextToken()); String aux = stk.nextToken(); if(!aux.equals("true")&&!aux.equals("false")){ throw new MyException("Error en el ingreso de estado de contenedor debe ser true o false"); }else { ContenedorPublico cp = new ContenedorPublico(persona,Boolean.parseBoolean(aux),Double.parseDouble(stk.nextToken()),stk.nextToken(),stk.nextToken(),precioxTon,exoneracion); if(!existeContenedor(cp)) { contenedoresPublicos.add(cp); }else { throw new MyException("Error el contenedor ya existe"); }
  • 11. } }else { throw new MyException("Error en el ingreso de delimitadores"); } } /** * El metodo añade un contenedor, tomando como parametros un string * al cual se lo separa en tokens para tener los atributos de un objeto * de la clase <code>ContenedorPrivado</code> * * @param contenedor es un String que será separado * @param precioxTon * @param recargoxTon * @throws MyException * @throws NumberFormatException */ public void addContenedorPrivado(String contenedor, double precioxTon, double recargoxTon) throws MyException,NumberFormatException { StringTokenizer stk = new StringTokenizer(contenedor,";"); if(stk.countTokens()==6) { Persona persona = new Persona(stk.nextToken(),stk.nextToken()); String aux = stk.nextToken(); if(!aux.equals("true")&&!aux.equals("false")){ throw new MyException("Error en el ingreso de estado de contenedor debe ser true o false"); }else { ContenedorPrivado cp = new ContenedorPrivado(persona,Boolean.parseBoolean(aux),Double.parseDouble(stk.nextToken()),stk.nextToken(),stk.nextToken(),precioxTon,recargoxTon); if(!existeContenedor(cp)) { contenedoresPrivados.add(cp); }else { throw new MyException("El contenedor ya existe"); } } }else { throw new MyException("Error en el ingreso de delimitadores"); } }
  • 12. /** * El metodo comprueba si un objeto tiene alguna correspondencia * con un contenedor ya sea publico o privado * * @param o objeto a ser comprobado a traves de coincidiencia de la placa * @return boolean true para confirmar la existencia de un contenedor */ public boolean existeContenedor(Object o) { if(o instanceof ContenedorPublico || o instanceof ContenedorPrivado) { if(o instanceof ContenedorPublico) { ContenedorPublico aux = (ContenedorPublico)o; for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { if(aux.placa.equals(i.next().placa)) { return true; } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext();) { if(aux.placa.equals(i.next().placa)) { return true; } } } else if(o instanceof ContenedorPrivado) { ContenedorPrivado aux = (ContenedorPrivado)o; for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { if(aux.placa.equals(i.next().placa)) { return true; } } for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext();) { if(aux.placa.equals(i.next().placa)) { return true; } } } }return false; } /** * EL metodo elimina un contenedor verificando si este existe * * @param o es un objeto de la clase <code>Object</code> * @throws MyException */ public void eliminarContenedorPublico(Object o) throws MyException {
  • 13. if(existeContenedor(o)) { contenedoresPublicos.remove(o); contenedoresPrivados.remove(o); }else { throw new MyException("No existe el contenedor"); } } /** * El metodo busca un contendor por su placa y lo devuelve * * @param placaBuscada * @return */ public Object buscarContenedorPlaca(String placaBuscada) { for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { ContenedorPublico aux = i.next(); if(aux.placa.equals(placaBuscada)) { return aux; } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { ContenedorPrivado aux = i.next(); if(aux.placa.equals(placaBuscada)) { return aux; } } return null; } /** * El metodo busca un contenedor por el nombre de su propietario y lo devuelve * * @param nombre es el nombre del propietario del contenedor * @return Object */ public Object buscarContenedorNombre(String nombre) { for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { ContenedorPublico aux = i.next(); if(aux.propietario.nombre.equals(nombre)) { return aux;
  • 14. } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { ContenedorPrivado aux = i.next(); if(aux.propietario.nombre.equals(nombre)) { return aux; } } return null; } /** * El metodo busca un contendor por su placa y lo devuelve * * @param placaBuscada * @return */ public void actualizarContenedorPlaca(String placaBuscada,String nombre, String cedula,boolean estado, double peso, String resumen) { for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { ContenedorPublico aux = i.next(); if(aux.placa.equals(placaBuscada)) { if(nombre!=null){ aux.propietario.setNombre(nombre); }else if(cedula!=null) { aux.propietario.setCedula(cedula); }else if(estado==true || estado==false) { aux.setEstadoContenedor(estado); }else if(peso!=0) { aux.setPeso(peso); }else if(resumen!=null) { aux.setResumen(resumen); } } } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { ContenedorPrivado aux = i.next(); if(aux.placa.equals(placaBuscada)) { if(nombre!=null){ aux.propietario.setNombre(nombre); }else if(cedula!=null) { aux.propietario.setCedula(cedula);
  • 15. }else if(estado==true || estado==false) { aux.setEstadoContenedor(estado); }else if(peso!=0) { aux.setPeso(peso); }else if(resumen!=null) { aux.setResumen(resumen); } } } } /** * Devuelve un String con todos los contenedores existentes * * @return String */ public String contenedoresDelPuerto() { String cp = new String(); for(Iterator<ContenedorPublico>i = contenedoresPublicos.iterator(); i.hasNext(); ) { ContenedorPublico con = i.next(); cp+= con.toStringContenedorPropietario()+ con.listarParamDeContenedoresPublicos()+"n"; } for(Iterator<ContenedorPrivado>i = contenedoresPrivados.iterator(); i.hasNext(); ) { ContenedorPrivado con = i.next(); cp+= con.toStringContenedorPropietario() + con.listarParamDeContenedoresPrivados()+"n"; } return "Puerto: "+this.nombre+ "n" + cp; } }
  • 16. CLASE CIUDAD ORIGEN CiudadOrigen.java package puertoEcuador; /** * La clase define objetos del tipo <code>CiudadOrigen</code> * * @author davidGuzman * @version 1.0 */ public class CiudadOrigen { /* Atributo que define el codigo de una ciudad*/ private String codigo; /* Atributo que define el nombre de una ciudad*/ public String nombre; Persona alcalde; /** * Constructor por default */ public CiudadOrigen() { } /** * Constructor con tres campos * * @param codigo contiene el campo para el atributo <code>codigo</code> * @param nombre contiene el campo para el atributo <code>nombre</code> * @param alcalde objeto de la clase <code>Person</code> */ public CiudadOrigen(String codigo, String nombre, Persona alcalde) { this.codigo = codigo; this.nombre = nombre; this.alcalde = alcalde; } /** * Constructor copia * * @param nuevaCiudad objeto de la clase <code>CiudadOrigen</code> */
  • 17. public CiudadOrigen(CiudadOrigen nuevaCiudad) { this.codigo = nuevaCiudad.codigo; this.nombre = nuevaCiudad.nombre; this.alcalde = nuevaCiudad.alcalde; } /** * Retorna el campo <code>codigo</code> * * @return codigo campo que contiene el atributo <code>codigo</code> */ public String getCodigo() { return codigo; } /** * Metodo que setea el campo <code>codigo</code> * * @param codigo contiene el campo para el atributo <code>codigo</code> */ public void setCodigo(String codigo) { this.codigo = codigo; } /** * Retorna el campo <code>nombre</code> * * @return nombre campo que contiene el atributo <code>codigo</code> */ public String getNombre() { return nombre; } /** * Metodo que setea el campo <code>nombre</code> * * @param nombre contiene el campo para el atributo <code>nombre</code> */ public void setNombre(String nombre) { this.nombre = nombre; }
  • 18. /** * @return the alcalde */ public Persona getAlcalde() { return alcalde; } /** * @param alcalde the alcalde to set */ public void setAlcalde(Persona alcalde) { this.alcalde = alcalde; } } CLASE Contenedor Contenedor.java package puertoEcuador; /** * La clase define objetos del tipo <code>Contenedor</code> * * @author davidGuzman * @version 1.0 */ public class Contenedor { /*campo que contiene la placa del contenedor*/ protected String placa; protected double peso; protected double precioBasexTonelada; /*campo que contiene el resumen del contenido del contenedor*/ public String resumen; /*Atributo que define el estado de un contenedor true=pagado false=adeudado*/ protected boolean estadoContenedor; Persona propietario; /**
  • 19. * Constructor con parametros de la clase <code>Contenedor</code> * * @param estadoContenedor * @param peso * @param placa * @param precioBasexTonelada * @param resumen * @param propietario */ public Contenedor(boolean estadoContenedor, double peso, String placa, double precioBasexTonelada, String resumen, Persona propietario) { this.estadoContenedor = estadoContenedor; this.peso = peso; this.placa = placa; this.precioBasexTonelada = precioBasexTonelada; this.resumen = resumen; this.propietario = propietario; } /** * Constructor por default */ public Contenedor() { } /** * Constructor tipo copia * * @param contenedor objeto de la clase <code>Contenedor</code> */ public Contenedor(Contenedor contenedor) { this.placa = contenedor.placa; this.peso = contenedor.peso; this.precioBasexTonelada = contenedor.precioBasexTonelada; this.resumen = contenedor.resumen; this.estadoContenedor = contenedor.estadoContenedor; this.propietario = contenedor.propietario; } /** * @return the placa */ public String getPlaca() {
  • 20. return placa; } /** * @param placa the placa to set */ public void setPlaca(String placa) { this.placa = placa; } /** * @return the peso */ public double getPeso() { return peso; } /** * @param peso the peso to set */ public void setPeso(double peso) { this.peso = peso; } /** * @return the precioBasexTonelada */ public double getPrecioBasexTonelada() { return precioBasexTonelada; } /** * @param precioBasexTonelada the precioBasexTonelada to set */ public void setPrecioBasexTonelada(double precioBasexTonelada) { this.precioBasexTonelada = precioBasexTonelada; } /** * @return the resumen
  • 21. */ public String getResumen() { return resumen; } /** * @param resumen the resumen to set */ public void setResumen(String resumen) { this.resumen = resumen; } /** * @return the estadoContenedor */ public boolean getEstadoContenedor() { return estadoContenedor; } /** * @param estadoContenedor the estadoContenedor to set */ public void setEstadoContenedor(boolean estadoContenedor) { this.estadoContenedor = estadoContenedor; } /** * @return the propietario */ public Persona getPropietario() { return propietario; } /** * @param propietario the propietario to set */ public void setPropietario(Persona propietario) { this.propietario = propietario; }
  • 22. /** * El metodo calcula el precio base de un contenedor de * la clase <code>Contenedor</code> * * @return precioBase es el precio que se paga por cada tonelada */ public double calcularPrecioBase() { return this.peso*this.precioBasexTonelada; } /** * El metodo devuelve un string con la placa del contenedor * y la informacion del propietario * * @return String */ public String toStringContenedorPropietario() { return this.placa + " " + this.propietario.getCedula() + " " + this.propietario.getNombre()+ "n"; } } CLASE CONTENEDOR PUBLICO ContenedorPublico.java package puertoEcuador; /** * La clase define objetos del tipo <code>ContenedorPublico</code> * * @author davidGuzman * @version 1.0 */ public class ContenedorPublico extends Contenedor { /*Porcentaje de exoneracion es un atributo que se da en tanto por ciento*/ private double porcentajeExoneracion; /** * @return the porcentajeExoneracion */ public double getPorcentajeExoneracion() { return porcentajeExoneracion; }
  • 23. /** * @param porcentajeExoneracion the porcentajeExoneracion to set */ public void setPorcentajeExoneracion(double porcentajeExoneracion) { this.porcentajeExoneracion = porcentajeExoneracion; } /** * Constructor con los siguientes campos: * * @param estadoContenedor * @param peso * @param placa * @param precioBasexTonelada * @param resumen * @param propietario * @param porcentajeExoneracion */ public ContenedorPublico(Persona propietario, boolean estadoContenedor, double peso, String placa, String resumen,double precioBasexTonelada, double porcentajeExoneracion) { super(estadoContenedor, peso, placa, precioBasexTonelada, resumen, propietario); this.porcentajeExoneracion = porcentajeExoneracion; } /** * Metodo que calcula el precio total que se pagara por un contenedor * del tipo <code>ContenedorPublico</code> * * @return precioTotal es el precio total que se pagara por el contenedor * publico incluido el porcentaje de exoneración. */ public double calcularPrecioTotal() { return super.calcularPrecioBase()-(super.calcularPrecioBase()*this.porcentajeExoneracion/100); } /** * Metodo que lista en un String todos los atribuots de un contenedor * publico * * @return String parametros de <code>ContenedorPublico</code> */ public String listarParamDeContenedoresPublicos() {
  • 24. return "Placa: "+ super.placa + " Peso: "+ super.peso + " resumen: "+super.resumen + " Pagado: "+super.estadoContenedor + " Precio total: "+calcularPrecioTotal(); } } CLASE CONTENEDOR Privado ContenedorPrivado.java package puertoEcuador; /** * La clase define objetos del tipo <code>ContenedorPrivado</code> * * @author davidGuzman * @version 1.0 */ public class ContenedorPrivado extends Contenedor { private double recargoxTonelada; /** * @return the porcentajeRecargoxTonelada */ public double getPorcentajeRecargoxTonelada() { return recargoxTonelada; } /** * @param porcentajeRecargoxTonelada the porcentajeRecargoxTonelada to set */ public void setPorcentajeRecargoxTonelada(double recargoxTonelada) { this.recargoxTonelada = recargoxTonelada; } /** * Constructor con los siguientes parametros: * * @param estadoContenedor * @param peso * @param placa * @param precioBasexTonelada * @param resumen * @param propietario
  • 25. * @param recargoxTonelada */ public ContenedorPrivado(Persona propietario, boolean estadoContenedor, double peso, String placa, String resumen, double precioBasexTonelada, double recargoxTonelada) { super(estadoContenedor, peso, placa, precioBasexTonelada, resumen, propietario); this.recargoxTonelada = recargoxTonelada; } /** * Metodo que calcula el valor del recargo en dolares * * @return recargo valor del recargo en dolares/tonelada */ public double calcularRecargo() { for(int n=0; n<=super.peso ; n+=10) { this.recargoxTonelada+=1; } return recargoxTonelada; } /** * Metodo que calcula el precio total de un contenedor de la clase * <code>Contenedor</code> * * @return precioTotal es el precio incluido el recargo, en dolares. */ public double calcularPrecioTotal() { return super.calcularPrecioBase()+ this.calcularRecargo()*super.peso; } /** * Metodo que lista en un String todos los atribuots de un contenedor * privado * * @return String parametros de <code>ContenedorPrivado</code> */ public String listarParamDeContenedoresPrivados() { return "Placa: "+ super.placa + " Peso: "+ super.peso + " resumen: "+super.resumen + " Pagado: "+super.estadoContenedor + " Precio total: "+calcularPrecioTotal();
  • 26. } } CLASE exception MyException.java package puertoEcuador; /** * La clase define objetos del tipo <code>MyException</code> * * @author davidGuzman * @version 1.0 */ public class MyException extends Exception { /** * */ private static final long serialVersionUID = 1L; public MyException(String msg) { super(msg); } } CLASE PERSONA Persona.java package puertoEcuador; /** * La clase define objetos del tipo <code>Persona</code> * * @author davidGuzman * @version 1.0 */ public class Persona { protected String cedula; protected String nombre; /** * @return the cedula */
  • 27. public String getCedula() { return cedula; } /** * @param cedula the cedula to set */ public void setCedula(String cedula) { this.cedula = cedula; } /** * @return the nombre */ public String getNombre() { return nombre; } /** * @param nombre the nombre to set */ public void setNombre(String nombre) { this.nombre = nombre; } /** * Constructor con dos parametros * * @param cedula * @param nombre */ public Persona(String nombre, String cedula) { this.cedula = cedula; this.nombre = nombre; } /** * Constructor por default */ public Persona() {
  • 28. } /** * Constructor tipo copia * * @param persona objeto de la clase <code>Persona</code> */ public Persona(Persona persona) { this.cedula = persona.cedula; this.nombre = persona.nombre; } } CLASE PERSONA ADMINISTRADOR PersonaAdministrador.java package puertoEcuador; /** * La clase define objetos del tipo <code>PersonaAdministrador</code> * * @author davidGuzman * @version 1.0 */ public class PersonaAdministrador extends Persona { private double sueldo; /** * @return the sueldo */ public double getSueldo() { return sueldo; } /** * @param sueldo the sueldo to set */ public void setSueldo(double sueldo) { this.sueldo = sueldo;
  • 29. } /** * Constructor de la clase <code>PersonaAdministrador</code> * * @param cedula * @param nombre * @param sueldo */ public PersonaAdministrador(String cedula, String nombre, double sueldo) { super(cedula, nombre); this.sueldo = sueldo; } }