SlideShare una empresa de Scribd logo
1 de 9
Desarrollar un programa Java que proponga una solución orientada a objetos al siguiente enunciado.

“Se desea realizar un programa que gestione los productos que comercializan varios viveros. De cada
vivero nos interesa saber su nombre y localización. Además, el programa almacenará el nombre y NIF de
sus trabajadores.

Cada uno de los viveros comercializa plantas y árboles, los cuales poseen un identificador de producto, un
nombre y un precio. Además, las plantas poseen un tipo de flor (gamopétalas, dialipétalas, etc.), que debe
ser contemplado por la aplicación. También, las plantas pueden clasificarse en plantas de interior y exterior.
De las primeras nos interesa saber la sensibilidad de luz (valor entero) y humedad ideal, mientras que las de
exterior, la temperatura ideal de conservación y humedad ideal. Por otro lado, los árboles poseerán la
información sobre el tipo de tronco que tienen y el diámetro del mismo (en cms).

Paralelamente a este sistema de información, se pretende crear un sistema inteligente que permita regar a
cada producto con una determinada cantidad de agua. Para ello, todos deberán responder a la acción de
regar con un valor entero que represente la cantidad de agua public int calcularCantidadAgua() que
necesitan.

La implementación del método regar se realizará teniendo en cuenta las siguientes fórmulas.
Árboles -> corteza de corcho= 4 * diámetro; otra corteza = 2 * diámetro
Plantas Interior -> sensibilidad de luz * 3 * humedad
Plantas Exterior -> temperatura * 2 * humedad”

Se pide:
    • Crear dos viveros y agregar varios tipos de productos a cada uno (no tiene un número
        predeterminado de productos).
    • A continuación, se realizarán las siguientes acciones independientemente del número y el tipo de
        objetos creados, es decir, del punto anterior:
            • Mostrar la información de todos los viveros.
            • Obtener los valores de agua para regar todos los productos del vivero “X” e iniciar el
                proceso automático de regadío invocando al método public void riega(Regable r) de la
                clase SistemaRegadio. El método de esta clase se limitará a imprimir por pantalla la
                cantidad de agua que está utilizando para el parámetro r.
            • Mostrar el tipo de flor de las plantas del vivero “X”.
    • Los productos que comercializa cada vivero deberán estar ordenador por identificador de producto.
    • Nos interesa mantener el orden de creación de los viveros.
    • Estructurar el programa en paquetes.




                                                      bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
ContadorIDS.java

package es.java.mentor.actividad2global.productos;

public final class ContadorIDS {
       public static int id = 0;
}


Producto.java

package es.java.mentor.actividad2global.productos;


public abstract class Producto {

       //Atributos
       private int idProducto;
       private String nombre;
       private double precio;

       //Constructor
       public Producto(String nomb, double prec){
              ContadorIDS.id++;
              idProducto = ContadorIDS.id;
              nombre = nomb;
              precio = prec;
       }

       //GETTERS
       public int getIdProducto(){
              return idProducto;
       }

       public String getNombre(){
              return nombre;
       }

       public double getPrecio(){
              return precio;
       }

       //Otros métodos
       public abstract int calcularCantidadAgua();
}



Planta.java

package es.java.mentor.actividad2global.productos;

public abstract class Planta extends Producto {
       //Atributos
       private String tipoFlor;

       //Constructor
       public Planta(String nomb, double prec, String tFlor){
              super(nomb,prec);
              tipoFlor = tFlor;
       }

       //GETTERS
       public String getTipoFlor(){
              return tipoFlor;
       }

       //Otros métodos
       public abstract int calcularCantidadAgua();
}




                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
Arbol.java

package es.java.mentor.actividad2global.productos;

public class Arbol extends Producto {
       //Atributos
       private String tipoCorteza;
       private int diametroTronco;

       //Constructor
       public Arbol(String nomb, double prec, String tCorteza, int diamTronco){
              super(nomb,prec);
              tipoCorteza = tCorteza;
              diametroTronco = diamTronco;
       }

       //Getters
       public String getTipoTronco(){
              return tipoCorteza;
       }

       public int getDiametroTronco(){
              return diametroTronco;
       }

       //Otros métodos
       public int calcularCantidadAgua(){
              //Árboles -> corteza de corcho = 4 * diámetro; otra corteza = 2 * diámetro
              if(tipoCorteza.equalsIgnoreCase("CORCHO") == true){
                      return (4 * diametroTronco);
              }else{
                      return (2 * diametroTronco);
              }
       }
}



PlantaInterior.java

package es.java.mentor.actividad2global.productos;

public class PlantaInterior extends Planta {
       //Atributos
       private int sensibilidad_luz; //Valor entero
       private int humedad_ideal; //Porcentaje (ej.30%)

       //Constructor
       public PlantaInterior(String nomb, double prec, String tFlor, int sluz, int humedad){
              super(nomb,prec,tFlor);
              sensibilidad_luz = sluz;
              humedad_ideal = humedad;
       }

       //Getters
       public int getSensibilidadLuz(){
              return sensibilidad_luz;
       }

       public int getHumedad(){
              return humedad_ideal;
       }

       //Otros métodos
       public int calcularCantidadAgua(){
              //Plantas Interior -> sensibilidad de luz * 3 * humedad
              return (sensibilidad_luz * 3 * humedad_ideal);
       }
}




                                                 bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
PlantaExterior.java
package es.java.mentor.actividad2global.productos;

public class PlantaExterior extends Planta{
       //Atributos
       private int tempConservacion; //Temperatura ideal de conservación
       private int humedad_ideal; //Porcentaje (ej.30%)

       //Constructor
       public PlantaExterior(String nomb, double prec, String tFlor, int tConservacion, int
humedad){
              super(nomb,prec,tFlor);
              tempConservacion = tConservacion;
              humedad_ideal = humedad;
       }

       //GETTERS
       public int getTempConservacion(){
              return tempConservacion;
       }

       public int getHumedadIdeal(){
              return humedad_ideal;
       }

       //Otros métodos
       public int calcularCantidadAgua(){
              //Plantas Exterior -> temperatura * 2 * humedad”
              return (tempConservacion * 2 * humedad_ideal);
       }
}


Trabajador.java

package es.java.mentor.actividad2global.trabajadores;

public class Trabajador {
       //Atributos
       private String nif;
       private String nombre;

       //Constructor
       public Trabajador(String nf, String nomb){
              nif = nf;
              nombre = nomb;
       }

       //GETTERS
       public String getNif(){
              return nif;
       }

       public String getNombre(){
              return nombre;
       }
}


SistemaRegadio.java

package es.java.mentor.actividad2global.Riego;
import java.util.ArrayList;
import java.util.Iterator;

public class SistemaRegadio {
       //Atributos
       private int cantidadAgua = 0;

       public void riega(ArrayList<Integer> r){
              Iterator<Integer> it = r.iterator();
              while(it.hasNext()){
                      cantidadAgua += it.next();
              }

              System.out.println("Cantidad de agua a utilizar: " + cantidadAgua);
       }
}



                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
Vivero.java
package es.java.mentor.actividad2global.viveros;
import es.java.mentor.actividad2global.trabajadores.Trabajador;
import es.java.mentor.actividad2global.productos.*;
import es.java.mentor.actividad2global.Riego.*;
import java.util.ArrayList;
import java.util.Iterator;

public class Vivero {
       //Atributos
       private String nombre;
       private String localizacion;

       private ArrayList<Trabajador> trabajadores = new ArrayList<Trabajador>();
       private ArrayList<Object> productos = new ArrayList<Object>();


       //CONSTRUCTOR
       public Vivero(String nomb, String loc){
              nombre = nomb;
              localizacion = loc;
       }

       //GETTERS
       public String getNombre(){
              return nombre;
       }

       public String getLocalizacion(){
              return localizacion;
       }

       //OTROS MÉTODOS
       public void altaTrabajador(Trabajador t){
              trabajadores.add(t);
       }

       public void altaProducto(Object p){
              productos.add(p);
       }

       public void regarProductos(){
               ArrayList<Integer> cantidadesDeAgua = new ArrayList<Integer>();
               if(productos.isEmpty()==true){
                      System.out.println("No hay productos...");
               }else{
                      System.out.println("Regando los productos del vivero: " + this.nombre + "-" +
this.localizacion);
                      Iterator<Object> it = productos.iterator();
                      while(it.hasNext()){
                              Producto po = (Producto)it.next();
                              cantidadesDeAgua.add(po.calcularCantidadAgua());
                      }
                      //--- Regar ---
                      SistemaRegadio sr = new SistemaRegadio();
                      sr.riega(cantidadesDeAgua);
                      //-------------
               }
       }

       public void mostrarTipoFlor_Plantas(){
               if(productos.isEmpty() == true){
                      System.out.println("No hay productos...");
               }else{
                      Iterator<Object> it = productos.iterator();
                      System.out.println("Tipos de Flor de las plantas del vivero: " + this.nombre);
                      while(it.hasNext()){
                              Producto pr = (Producto)it.next();
                              if(pr instanceof Planta){
                                     System.out.println("--- PLANTA ------------");
                                     System.out.println("ID: " + pr.getIdProducto());
                                     System.out.println("NOMBRE: " + pr.getNombre());
                                     System.out.println("TIPO DE FLOR: " + ((Planta)
pr).getTipoFlor());
                                     System.out.println("-----------------------");
                              }
                      }
               }
       }


                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
public void mostrarInfo(){

       System.out.println("================================================================");
              System.out.println("INFORMACIÓN DEL VIVERO " + nombre + "-" + localizacion);

       System.out.println("================================================================");
              //--- Trabajadores ---
              if(trabajadores.isEmpty() == true){
                      System.out.println("- No tiene trabajadores.");
              }else{
                      Iterator<Trabajador> it = trabajadores.iterator();
                      while(it.hasNext()){
                             Trabajador tr = it.next();
                             System.out.println("--- TRABAJADOR --------");
                             System.out.println("NIF: " + tr.getNif());
                             System.out.println("NOMBRE: " + tr.getNombre());
                             System.out.println("-----------------------");
                      }
              }
              //--- Productos ---
              if(productos.isEmpty() == true){
                      System.out.println("- No tiene productos.");
              }else{
                      Iterator<Object> it = productos.iterator();
                      while(it.hasNext()){

                             Producto pr = (Producto)it.next();

                             System.out.println("--- PRODUCTO ----------");
                             //--- Común a todos los productos ---
                             System.out.println("ID: " + pr.getIdProducto());
                             System.out.println("NOMBRE: " + pr.getNombre());
                             System.out.println("PRECIO: " + pr.getPrecio());
                             //--- Común a todos los productos ---
                             if(pr instanceof PlantaInterior){
                                    System.out.println("TIPO DE FLOR: " + ((PlantaInterior)
pr).getTipoFlor());
                                    System.out.println("SENSIBILIDAD DE LUZ: " + ((PlantaInterior)
pr).getSensibilidadLuz());
                                    System.out.println("HUMEDAD IDEAL: " + ((PlantaInterior)
pr).getHumedad());
                             }else if(pr instanceof PlantaExterior){
                                    System.out.println("TIPO DE FLOR: " + ((PlantaExterior)
pr).getTipoFlor());
                                     System.out.println("TEMPERATURA CONSERVACIÓN: " +
((PlantaExterior) pr).getTempConservacion());
                                     System.out.println("HUMEDAD IDEAL: " + ((PlantaExterior)
pr).getHumedadIdeal());
                             }else if(pr instanceof Arbol){
                                     System.out.println("TIPO CORTEZA: " + ((Arbol)
pr).getTipoTronco());
                                     System.out.println("DIÁMETRO TRONCO: " + ((Arbol)
pr).getDiametroTronco());
                             }
                             System.out.println("-----------------------");
                      }
               }
       }
}




                                                 bitCoach::Juan Bautista Cascallar Lorenzo::Página 6
gestionViveros.java

package es.java.mentor.actividad2global.viveros;
import java.util.ArrayList;
import java.util.Iterator;

public class gestionViveros {
       //Atributos
       private ArrayList<Vivero> viveros = new ArrayList<Vivero>();

       //Otros métodos
       public void altaVivero(Vivero v){
              viveros.add(v);
       }

       public void mostrarInfoViveros(){
              if(viveros.isEmpty() == true){
                      System.out.println("No hay ningún vivero.");
              }else{
                      Iterator<Vivero> it = viveros.iterator();
                      while(it.hasNext()){
                             Vivero v = it.next();
                             v.mostrarInfo();
                      }
              }
       }

       public void regarProductosDelViveroX(String nomb){

                if(viveros.isEmpty() == true){
                       System.out.println("No hay ningún vivero.");
                }else{
                       boolean existe = false;
                       Iterator<Vivero> it = viveros.iterator();
                       while(it.hasNext()){
                               Vivero v = it.next();
                               if(v.getNombre().equalsIgnoreCase(nomb) == true){
                                      v.regarProductos();
                                      existe = true;
                                      break;
                               }
                       }
                       if(existe == false){
                               System.out.println("No existe el vivero: " + nomb);
                       }

                }
       }

}//Fin clase.




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 7
testViveros.java

package es.java.mentor.actividad2global.pruebas;

import es.java.mentor.actividad2global.productos.*;
import es.java.mentor.actividad2global.viveros.*;
import es.java.mentor.actividad2global.trabajadores.*;

public class testViveros {

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

              //--- Crea dos Viveros ---
              //Vivero(String nomb, String loc)
              gestionViveros gv = new gestionViveros();
              Vivero v01 = new Vivero("VIVERO_N1","ZONA NORTE");
              Vivero v02 = new Vivero("VIVERO_N2","ZONA SUR");
              gv.altaVivero(v01);
              gv.altaVivero(v02);


              //--- Trabajadores ---
              Trabajador tr01 = new Trabajador("44556656-T","José Luis Almadro");
              Trabajador tr02 = new Trabajador("65423552-B","Alberto Martínez Santos");

               //--- Productos ---
               //PlantaInterior(String nomb, double prec, String tFlor, int sluz, int humedad)
               PlantaInterior pi01 = new PlantaInterior("PLANTA INTERIOR
01",20.5,"GAMOPÉTALA",3,10);
               PlantaInterior pi02 = new PlantaInterior("PLANTA INTERIOR
02",30.5,"DIALIPÉTALA",7,20);
               //PlantaExterior(String nomb, double prec, String tFlor, int tConservacion, int
humedad)
               PlantaExterior pe01 = new PlantaExterior("PLANTA EXTERIOR
01",12.5,"DIALIPÉTALA",10,25);
               PlantaExterior pe02 = new PlantaExterior("PLANTA EXTERIOR 02",12,"GAMOPÉTALA",8,15);
               //Arbol(String nomb, double prec, String tCorteza, int diamTronco)
               Arbol arb01 = new Arbol("ARBOL 01",40.5,"CORCHO",20);
               Arbol arb02 = new Arbol("ARBOL 02",30.5,"OTRA CORTEZA",30);

              //--- Construir v01 ---
              v01.altaTrabajador(tr01);
              v01.altaProducto(pi01);
              v01.altaProducto(pe01);
              v01.altaProducto(arb01);

              //--- Construir v02 ---
              v02.altaTrabajador(tr02);
              v02.altaProducto(pi02);
              v02.altaProducto(pe02);
              v02.altaProducto(arb02);

              //MOSTAR INFORMACIÓN DE TODOS LOS VIVEROS
              gv.mostrarInfoViveros();

              //REGAR TODOS LOS PRODUCTOS DEL VIVERO V01 Y DEL VIVERO V02
              gv.regarProductosDelViveroX("VIVERO_N1");
              gv.regarProductosDelViveroX("VIVERO_N2");

              //TIPOS DE FLOR DE LAS PLANTAS DEL VIVERO V01 Y DEL VIVERO V02
              v01.mostrarTipoFlor_Plantas();
              v02.mostrarTipoFlor_Plantas();
       }
}




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 8
Diagrama de clases UML




                         bitCoach::Juan Bautista Cascallar Lorenzo::Página 9

Más contenido relacionado

La actualidad más candente

Normativ np 086-2005
Normativ np 086-2005Normativ np 086-2005
Normativ np 086-2005Alina Miron
 
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017Nicky Bloor
 
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기SangIn Choung
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldYura Nosenko
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiCysinfo Cyber Security Community
 
remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal Tobias Neitzel
 
Ui testing in xcode
Ui testing in xcodeUi testing in xcode
Ui testing in xcodeallanh0526
 
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web TechnologiesOWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web TechnologiesFrans Rosén
 
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourSoroush Dalili
 
Présentation CSRF (complète avec démo)
Présentation CSRF (complète avec démo)Présentation CSRF (complète avec démo)
Présentation CSRF (complète avec démo)LeGauloisFr
 
HTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versionsHTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versionsneexemil
 
No drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightNo drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightMastacheata1
 

La actualidad más candente (13)

Normativ np 086-2005
Normativ np 086-2005Normativ np 086-2005
Normativ np 086-2005
 
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017
Nicky Bloor - BaRMIe - Poking Java's Back Door - 44CON 2017
 
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 world
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
 
remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal
 
Ui testing in xcode
Ui testing in xcodeUi testing in xcode
Ui testing in xcode
 
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web TechnologiesOWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
 
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
 
論理回路2017 no.6
論理回路2017 no.6論理回路2017 no.6
論理回路2017 no.6
 
Présentation CSRF (complète avec démo)
Présentation CSRF (complète avec démo)Présentation CSRF (complète avec démo)
Présentation CSRF (complète avec démo)
 
HTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versionsHTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versions
 
No drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwrightNo drama here - E2E-testing django with playwright
No drama here - E2E-testing django with playwright
 

Destacado

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iteratorjubacalo
 
Java HashMap
Java HashMapJava HashMap
Java HashMapjubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 

Destacado (20)

Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iterator
 
Java HashMap
Java HashMapJava HashMap
Java HashMap
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 

Similar a Programa Java que gestiona los productos que comercializan varios viveros

Similar a Programa Java que gestiona los productos que comercializan varios viveros (20)

Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Metodos 2
Metodos 2Metodos 2
Metodos 2
 
Herencia encapsulación polimorfismo
Herencia encapsulación polimorfismoHerencia encapsulación polimorfismo
Herencia encapsulación polimorfismo
 
Metodos,variables, pasodeparametros
Metodos,variables, pasodeparametrosMetodos,variables, pasodeparametros
Metodos,variables, pasodeparametros
 
Package operaciones
Package operacionesPackage operaciones
Package operaciones
 
Programas de Java en BlueJ
Programas de Java en BlueJProgramas de Java en BlueJ
Programas de Java en BlueJ
 
Instituto tecnológico de matehuala
Instituto  tecnológico  de  matehualaInstituto  tecnológico  de  matehuala
Instituto tecnológico de matehuala
 
Patrones utiles para solid
Patrones utiles para solidPatrones utiles para solid
Patrones utiles para solid
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
MéTodos
MéTodosMéTodos
MéTodos
 
MéTodos
MéTodosMéTodos
MéTodos
 
MéTodos
MéTodosMéTodos
MéTodos
 
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
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5
 
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
 
Guia5 java
Guia5 javaGuia5 java
Guia5 java
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Tareas agrupadas
Tareas agrupadasTareas agrupadas
Tareas agrupadas
 
Tareas agrupadas
Tareas agrupadasTareas agrupadas
Tareas agrupadas
 

Más de jubacalo

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

Más de jubacalo (16)

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Word VBA
Word VBAWord VBA
Word VBA
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Último

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaJuan Carlos Fonseca Mata
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirPaddySydney1
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 

Último (20)

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - Botánica
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartir
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 

Programa Java que gestiona los productos que comercializan varios viveros

  • 1. Desarrollar un programa Java que proponga una solución orientada a objetos al siguiente enunciado. “Se desea realizar un programa que gestione los productos que comercializan varios viveros. De cada vivero nos interesa saber su nombre y localización. Además, el programa almacenará el nombre y NIF de sus trabajadores. Cada uno de los viveros comercializa plantas y árboles, los cuales poseen un identificador de producto, un nombre y un precio. Además, las plantas poseen un tipo de flor (gamopétalas, dialipétalas, etc.), que debe ser contemplado por la aplicación. También, las plantas pueden clasificarse en plantas de interior y exterior. De las primeras nos interesa saber la sensibilidad de luz (valor entero) y humedad ideal, mientras que las de exterior, la temperatura ideal de conservación y humedad ideal. Por otro lado, los árboles poseerán la información sobre el tipo de tronco que tienen y el diámetro del mismo (en cms). Paralelamente a este sistema de información, se pretende crear un sistema inteligente que permita regar a cada producto con una determinada cantidad de agua. Para ello, todos deberán responder a la acción de regar con un valor entero que represente la cantidad de agua public int calcularCantidadAgua() que necesitan. La implementación del método regar se realizará teniendo en cuenta las siguientes fórmulas. Árboles -> corteza de corcho= 4 * diámetro; otra corteza = 2 * diámetro Plantas Interior -> sensibilidad de luz * 3 * humedad Plantas Exterior -> temperatura * 2 * humedad” Se pide: • Crear dos viveros y agregar varios tipos de productos a cada uno (no tiene un número predeterminado de productos). • A continuación, se realizarán las siguientes acciones independientemente del número y el tipo de objetos creados, es decir, del punto anterior: • Mostrar la información de todos los viveros. • Obtener los valores de agua para regar todos los productos del vivero “X” e iniciar el proceso automático de regadío invocando al método public void riega(Regable r) de la clase SistemaRegadio. El método de esta clase se limitará a imprimir por pantalla la cantidad de agua que está utilizando para el parámetro r. • Mostrar el tipo de flor de las plantas del vivero “X”. • Los productos que comercializa cada vivero deberán estar ordenador por identificador de producto. • Nos interesa mantener el orden de creación de los viveros. • Estructurar el programa en paquetes. bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
  • 2. ContadorIDS.java package es.java.mentor.actividad2global.productos; public final class ContadorIDS { public static int id = 0; } Producto.java package es.java.mentor.actividad2global.productos; public abstract class Producto { //Atributos private int idProducto; private String nombre; private double precio; //Constructor public Producto(String nomb, double prec){ ContadorIDS.id++; idProducto = ContadorIDS.id; nombre = nomb; precio = prec; } //GETTERS public int getIdProducto(){ return idProducto; } public String getNombre(){ return nombre; } public double getPrecio(){ return precio; } //Otros métodos public abstract int calcularCantidadAgua(); } Planta.java package es.java.mentor.actividad2global.productos; public abstract class Planta extends Producto { //Atributos private String tipoFlor; //Constructor public Planta(String nomb, double prec, String tFlor){ super(nomb,prec); tipoFlor = tFlor; } //GETTERS public String getTipoFlor(){ return tipoFlor; } //Otros métodos public abstract int calcularCantidadAgua(); } bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
  • 3. Arbol.java package es.java.mentor.actividad2global.productos; public class Arbol extends Producto { //Atributos private String tipoCorteza; private int diametroTronco; //Constructor public Arbol(String nomb, double prec, String tCorteza, int diamTronco){ super(nomb,prec); tipoCorteza = tCorteza; diametroTronco = diamTronco; } //Getters public String getTipoTronco(){ return tipoCorteza; } public int getDiametroTronco(){ return diametroTronco; } //Otros métodos public int calcularCantidadAgua(){ //Árboles -> corteza de corcho = 4 * diámetro; otra corteza = 2 * diámetro if(tipoCorteza.equalsIgnoreCase("CORCHO") == true){ return (4 * diametroTronco); }else{ return (2 * diametroTronco); } } } PlantaInterior.java package es.java.mentor.actividad2global.productos; public class PlantaInterior extends Planta { //Atributos private int sensibilidad_luz; //Valor entero private int humedad_ideal; //Porcentaje (ej.30%) //Constructor public PlantaInterior(String nomb, double prec, String tFlor, int sluz, int humedad){ super(nomb,prec,tFlor); sensibilidad_luz = sluz; humedad_ideal = humedad; } //Getters public int getSensibilidadLuz(){ return sensibilidad_luz; } public int getHumedad(){ return humedad_ideal; } //Otros métodos public int calcularCantidadAgua(){ //Plantas Interior -> sensibilidad de luz * 3 * humedad return (sensibilidad_luz * 3 * humedad_ideal); } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
  • 4. PlantaExterior.java package es.java.mentor.actividad2global.productos; public class PlantaExterior extends Planta{ //Atributos private int tempConservacion; //Temperatura ideal de conservación private int humedad_ideal; //Porcentaje (ej.30%) //Constructor public PlantaExterior(String nomb, double prec, String tFlor, int tConservacion, int humedad){ super(nomb,prec,tFlor); tempConservacion = tConservacion; humedad_ideal = humedad; } //GETTERS public int getTempConservacion(){ return tempConservacion; } public int getHumedadIdeal(){ return humedad_ideal; } //Otros métodos public int calcularCantidadAgua(){ //Plantas Exterior -> temperatura * 2 * humedad” return (tempConservacion * 2 * humedad_ideal); } } Trabajador.java package es.java.mentor.actividad2global.trabajadores; public class Trabajador { //Atributos private String nif; private String nombre; //Constructor public Trabajador(String nf, String nomb){ nif = nf; nombre = nomb; } //GETTERS public String getNif(){ return nif; } public String getNombre(){ return nombre; } } SistemaRegadio.java package es.java.mentor.actividad2global.Riego; import java.util.ArrayList; import java.util.Iterator; public class SistemaRegadio { //Atributos private int cantidadAgua = 0; public void riega(ArrayList<Integer> r){ Iterator<Integer> it = r.iterator(); while(it.hasNext()){ cantidadAgua += it.next(); } System.out.println("Cantidad de agua a utilizar: " + cantidadAgua); } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
  • 5. Vivero.java package es.java.mentor.actividad2global.viveros; import es.java.mentor.actividad2global.trabajadores.Trabajador; import es.java.mentor.actividad2global.productos.*; import es.java.mentor.actividad2global.Riego.*; import java.util.ArrayList; import java.util.Iterator; public class Vivero { //Atributos private String nombre; private String localizacion; private ArrayList<Trabajador> trabajadores = new ArrayList<Trabajador>(); private ArrayList<Object> productos = new ArrayList<Object>(); //CONSTRUCTOR public Vivero(String nomb, String loc){ nombre = nomb; localizacion = loc; } //GETTERS public String getNombre(){ return nombre; } public String getLocalizacion(){ return localizacion; } //OTROS MÉTODOS public void altaTrabajador(Trabajador t){ trabajadores.add(t); } public void altaProducto(Object p){ productos.add(p); } public void regarProductos(){ ArrayList<Integer> cantidadesDeAgua = new ArrayList<Integer>(); if(productos.isEmpty()==true){ System.out.println("No hay productos..."); }else{ System.out.println("Regando los productos del vivero: " + this.nombre + "-" + this.localizacion); Iterator<Object> it = productos.iterator(); while(it.hasNext()){ Producto po = (Producto)it.next(); cantidadesDeAgua.add(po.calcularCantidadAgua()); } //--- Regar --- SistemaRegadio sr = new SistemaRegadio(); sr.riega(cantidadesDeAgua); //------------- } } public void mostrarTipoFlor_Plantas(){ if(productos.isEmpty() == true){ System.out.println("No hay productos..."); }else{ Iterator<Object> it = productos.iterator(); System.out.println("Tipos de Flor de las plantas del vivero: " + this.nombre); while(it.hasNext()){ Producto pr = (Producto)it.next(); if(pr instanceof Planta){ System.out.println("--- PLANTA ------------"); System.out.println("ID: " + pr.getIdProducto()); System.out.println("NOMBRE: " + pr.getNombre()); System.out.println("TIPO DE FLOR: " + ((Planta) pr).getTipoFlor()); System.out.println("-----------------------"); } } } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
  • 6. public void mostrarInfo(){ System.out.println("================================================================"); System.out.println("INFORMACIÓN DEL VIVERO " + nombre + "-" + localizacion); System.out.println("================================================================"); //--- Trabajadores --- if(trabajadores.isEmpty() == true){ System.out.println("- No tiene trabajadores."); }else{ Iterator<Trabajador> it = trabajadores.iterator(); while(it.hasNext()){ Trabajador tr = it.next(); System.out.println("--- TRABAJADOR --------"); System.out.println("NIF: " + tr.getNif()); System.out.println("NOMBRE: " + tr.getNombre()); System.out.println("-----------------------"); } } //--- Productos --- if(productos.isEmpty() == true){ System.out.println("- No tiene productos."); }else{ Iterator<Object> it = productos.iterator(); while(it.hasNext()){ Producto pr = (Producto)it.next(); System.out.println("--- PRODUCTO ----------"); //--- Común a todos los productos --- System.out.println("ID: " + pr.getIdProducto()); System.out.println("NOMBRE: " + pr.getNombre()); System.out.println("PRECIO: " + pr.getPrecio()); //--- Común a todos los productos --- if(pr instanceof PlantaInterior){ System.out.println("TIPO DE FLOR: " + ((PlantaInterior) pr).getTipoFlor()); System.out.println("SENSIBILIDAD DE LUZ: " + ((PlantaInterior) pr).getSensibilidadLuz()); System.out.println("HUMEDAD IDEAL: " + ((PlantaInterior) pr).getHumedad()); }else if(pr instanceof PlantaExterior){ System.out.println("TIPO DE FLOR: " + ((PlantaExterior) pr).getTipoFlor()); System.out.println("TEMPERATURA CONSERVACIÓN: " + ((PlantaExterior) pr).getTempConservacion()); System.out.println("HUMEDAD IDEAL: " + ((PlantaExterior) pr).getHumedadIdeal()); }else if(pr instanceof Arbol){ System.out.println("TIPO CORTEZA: " + ((Arbol) pr).getTipoTronco()); System.out.println("DIÁMETRO TRONCO: " + ((Arbol) pr).getDiametroTronco()); } System.out.println("-----------------------"); } } } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 6
  • 7. gestionViveros.java package es.java.mentor.actividad2global.viveros; import java.util.ArrayList; import java.util.Iterator; public class gestionViveros { //Atributos private ArrayList<Vivero> viveros = new ArrayList<Vivero>(); //Otros métodos public void altaVivero(Vivero v){ viveros.add(v); } public void mostrarInfoViveros(){ if(viveros.isEmpty() == true){ System.out.println("No hay ningún vivero."); }else{ Iterator<Vivero> it = viveros.iterator(); while(it.hasNext()){ Vivero v = it.next(); v.mostrarInfo(); } } } public void regarProductosDelViveroX(String nomb){ if(viveros.isEmpty() == true){ System.out.println("No hay ningún vivero."); }else{ boolean existe = false; Iterator<Vivero> it = viveros.iterator(); while(it.hasNext()){ Vivero v = it.next(); if(v.getNombre().equalsIgnoreCase(nomb) == true){ v.regarProductos(); existe = true; break; } } if(existe == false){ System.out.println("No existe el vivero: " + nomb); } } } }//Fin clase. bitCoach::Juan Bautista Cascallar Lorenzo::Página 7
  • 8. testViveros.java package es.java.mentor.actividad2global.pruebas; import es.java.mentor.actividad2global.productos.*; import es.java.mentor.actividad2global.viveros.*; import es.java.mentor.actividad2global.trabajadores.*; public class testViveros { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //--- Crea dos Viveros --- //Vivero(String nomb, String loc) gestionViveros gv = new gestionViveros(); Vivero v01 = new Vivero("VIVERO_N1","ZONA NORTE"); Vivero v02 = new Vivero("VIVERO_N2","ZONA SUR"); gv.altaVivero(v01); gv.altaVivero(v02); //--- Trabajadores --- Trabajador tr01 = new Trabajador("44556656-T","José Luis Almadro"); Trabajador tr02 = new Trabajador("65423552-B","Alberto Martínez Santos"); //--- Productos --- //PlantaInterior(String nomb, double prec, String tFlor, int sluz, int humedad) PlantaInterior pi01 = new PlantaInterior("PLANTA INTERIOR 01",20.5,"GAMOPÉTALA",3,10); PlantaInterior pi02 = new PlantaInterior("PLANTA INTERIOR 02",30.5,"DIALIPÉTALA",7,20); //PlantaExterior(String nomb, double prec, String tFlor, int tConservacion, int humedad) PlantaExterior pe01 = new PlantaExterior("PLANTA EXTERIOR 01",12.5,"DIALIPÉTALA",10,25); PlantaExterior pe02 = new PlantaExterior("PLANTA EXTERIOR 02",12,"GAMOPÉTALA",8,15); //Arbol(String nomb, double prec, String tCorteza, int diamTronco) Arbol arb01 = new Arbol("ARBOL 01",40.5,"CORCHO",20); Arbol arb02 = new Arbol("ARBOL 02",30.5,"OTRA CORTEZA",30); //--- Construir v01 --- v01.altaTrabajador(tr01); v01.altaProducto(pi01); v01.altaProducto(pe01); v01.altaProducto(arb01); //--- Construir v02 --- v02.altaTrabajador(tr02); v02.altaProducto(pi02); v02.altaProducto(pe02); v02.altaProducto(arb02); //MOSTAR INFORMACIÓN DE TODOS LOS VIVEROS gv.mostrarInfoViveros(); //REGAR TODOS LOS PRODUCTOS DEL VIVERO V01 Y DEL VIVERO V02 gv.regarProductosDelViveroX("VIVERO_N1"); gv.regarProductosDelViveroX("VIVERO_N2"); //TIPOS DE FLOR DE LAS PLANTAS DEL VIVERO V01 Y DEL VIVERO V02 v01.mostrarTipoFlor_Plantas(); v02.mostrarTipoFlor_Plantas(); } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 8
  • 9. Diagrama de clases UML bitCoach::Juan Bautista Cascallar Lorenzo::Página 9