SlideShare una empresa de Scribd logo
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

PPSX
Flutter do zero a publicacao
PPT
C pointers
PPTX
Pointer in c
PPTX
Pointer to function 1
PPTX
Pointer in c program
PDF
Introduction to python
PPTX
Linked list (1).pptx
PPTX
Functions in c
Flutter do zero a publicacao
C pointers
Pointer in c
Pointer to function 1
Pointer in c program
Introduction to python
Linked list (1).pptx
Functions in c

La actualidad más candente (20)

PPTX
Function overloading
PPTX
Function in c
PPTX
Call by value or call by reference in C++
PDF
Writing native Linux desktop apps with JavaScript
PPT
File in C Programming
PPTX
Java Hello World Program
PPTX
Operators in java
PPTX
Interfaces c#
PPT
PPTX
Function in c program
PDF
Python Workshop Part 2. LUG Maniapl
DOCX
18 dec pointers and scope resolution operator
PPTX
Polymorphism in c++
PDF
구글테스트
PPTX
PPTX
Understanding java streams
PPTX
Encapsulation C++
PPTX
Full Python in 20 slides
PPTX
POINTERS IN C
PPTX
Chapter 07 inheritance
Function overloading
Function in c
Call by value or call by reference in C++
Writing native Linux desktop apps with JavaScript
File in C Programming
Java Hello World Program
Operators in java
Interfaces c#
Function in c program
Python Workshop Part 2. LUG Maniapl
18 dec pointers and scope resolution operator
Polymorphism in c++
구글테스트
Understanding java streams
Encapsulation C++
Full Python in 20 slides
POINTERS IN C
Chapter 07 inheritance
Publicidad

Destacado (20)

PDF
Java AWT Calculadora
PDF
Java Applet:::Pelota que rebota en un recinto.
PDF
Java ArrayList Iterator
PDF
Java HashMap
PDF
Jsp directiva page
PDF
Find File Servlet DB
PDF
Explicación del código del Servlet HolaMundo
PDF
Acciones JSP
PDF
Proyecto JSP
PDF
Elementos de script en JSP
PDF
Servlets que manejan datos de formularios HTML
PDF
Acceso a BBDD mediante un servlet
PDF
Servlet Hola Mundo con Eclipse y Tomcat
PDF
Java AWT Tres en Raya
PDF
Java Thread Cronometro
PDF
Sincronizar Threads
PDF
Java::Acceso a Bases de Datos
PDF
jQuery Mobile :: Cuadros de diálogo
PDF
Práctica Completa en Flash – ActionScript
PDF
jQuery Mobile :: Enlaces a páginas internas.
Java AWT Calculadora
Java Applet:::Pelota que rebota en un recinto.
Java ArrayList Iterator
Java HashMap
Jsp directiva page
Find File Servlet DB
Explicación del código del Servlet HolaMundo
Acciones JSP
Proyecto JSP
Elementos de script en JSP
Servlets que manejan datos de formularios HTML
Acceso a BBDD mediante un servlet
Servlet Hola Mundo con Eclipse y Tomcat
Java AWT Tres en Raya
Java Thread Cronometro
Sincronizar Threads
Java::Acceso a Bases de Datos
jQuery Mobile :: Cuadros de diálogo
Práctica Completa en Flash – ActionScript
jQuery Mobile :: Enlaces a páginas internas.
Publicidad

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

PPTX
Encapsulamiento
PPTX
Metodos 2
PPTX
Herencia encapsulación polimorfismo
PPTX
Metodos,variables, pasodeparametros
DOCX
Package operaciones
PDF
Programas de Java en BlueJ
PDF
Instituto tecnológico de matehuala
PPTX
Patrones utiles para solid
PDF
JavaScript no es Vietnam
PDF
Intro aplicaciones web con php
PPTX
MéTodos
PPTX
MéTodos
PPTX
MéTodos
DOCX
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
PDF
Introducción a la programación y la informática. Tema 5
DOC
P R A C T I C A2
PDF
Guia5 java
PDF
DOCX
Tareas agrupadas
DOCX
Tareas agrupadas
Encapsulamiento
Metodos 2
Herencia encapsulación polimorfismo
Metodos,variables, pasodeparametros
Package operaciones
Programas de Java en BlueJ
Instituto tecnológico de matehuala
Patrones utiles para solid
JavaScript no es Vietnam
Intro aplicaciones web con php
MéTodos
MéTodos
MéTodos
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
Introducción a la programación y la informática. Tema 5
P R A C T I C A2
Guia5 java
Tareas agrupadas
Tareas agrupadas

Más de jubacalo (16)

PDF
MIT App Inventor2 Pintar en Imagen
PDF
Cronómetro con MIT App Inventor 2
PDF
App Android MiniBanco
PDF
Configurar entorno Android
PDF
Crear Base de Datos en Oracle
PDF
Web de noticias en Ajax
PDF
Escenarios
PDF
Matrices02
PDF
Gráficos
PDF
Tabla Dinámica
PDF
Tabla de Datos
PDF
Textura de agua
PDF
Funciones lógicas y condicionales
PDF
Solver
PDF
Word VBA
PDF
Java Thread Cronometro
MIT App Inventor2 Pintar en Imagen
Cronómetro con MIT App Inventor 2
App Android MiniBanco
Configurar entorno Android
Crear Base de Datos en Oracle
Web de noticias en Ajax
Escenarios
Matrices02
Gráficos
Tabla Dinámica
Tabla de Datos
Textura de agua
Funciones lógicas y condicionales
Solver
Word VBA
Java Thread Cronometro

Último (20)

PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
ciencias-1.pdf libro cuarto basico niños
Tomo 1 de biologia gratis ultra plusenmas
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
caso clínico iam clinica y semiología l3.pptx
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
DI, TEA, TDAH.pdf guía se secuencias didacticas
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Escuela Sabática 6. A través del Mar Rojo.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Lección 6 Escuela Sab. A través del mar rojo.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf

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