Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

academy.oracle.

com

Conceptos fundamentales de Java


Sección 5: Creación de un proyecto de inventario
Solución del proyecto
Visión general
Este proyecto avanzará al ritmo del usuario en las secciones 4, 5, 6 y 7 del curso. Después de cada sección, se
podrán realizar más aportaciones hasta que se cree una aplicación Java completa para mantener el inventario. En
cada parte, tome como base la última parte de modo que se cumplan tanto los requisitos anteriores como los nuevos.
Incluya todas las partes en un paquete denominado inventario.

Cree un programa de inventario que se pueda utilizar para una serie de productos distintos (CD, DVD, software, etc.).

Tema(s):

• Entrada del teclado/escáner (sección 5.1)


• Campos booleanos y operadores ternarios (sección 5.1)

1. Abra el programa de inventario que se ha creado en la sección 4: Creación de un proyecto de inventario

2. Modifique la clase ProductTester.

a) Agregue un escáner denominado in al principio de su método main.

b) Cree las variables locales que almacenarán los valores de cada uno de los atributos de la clase Product.
Asigne a las variables el nombre tempNumber, tempName, tempQty y tempPrice.

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
2

c) Pida al usuario que introduzca valores para cada uno de los atributos de la clase Product. Solicite el
nombre, la cantidad, el precio y el número de elemento, y almacene los valores en las variables locales
temporales que acaba de crear.

d) Utilice los valores que ha introducido el usuario para crear el objeto p1. Esto significa que utilizará el
constructor que toma 4 parámetros en lugar del constructor predeterminado.

3. Pida al usuario que le proporcione valores para p2.

a) Utilice las mismas variables locales que antes para obtener la entrada del usuario para crear
el objeto p2. Copie y pegue el código después de la línea que crea el objeto p1.

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
3

b) Ejecute el programa e identifique dónde se ha producido un error.

c) El programa no aparece para solicitarle un valor para el nombre. Esto se debe a que el último
valor introducido ha sido un valor numérico y ha dejado algunos caracteres especiales en el
buffer de entrada. Para limpiar el buffer de entrada, agregue la siguiente sentencia antes de
solicitar valores para p2:

in.nextLine();

Esto obtiene valores almacenados en el buffer y los descarta dejando un buffer vacío.

d) Ejecute el programa ahora, no debería presentar errores y debería mostrar todos los valores,
incluidos los que ha introducido el usuario en la consola.

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
4

e) Cierre el objeto Scanner cuando termine con él.

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
5

4. Querrá poder marcar los productos como activos o descatalogados. Si se descataloga un producto,
significa que las existencias restantes de dicho producto serán las últimas y no se realizarán más
pedidos.

a) Agregue una instancia boolean a la clase Product denominada Activo que tenga un valor true
predeterminado.

b) Cree métodos getter/setter para este nuevo campo.

c) Agregue el valor de este nuevo campo al método toString() para que la salida coincida con lo
siguiente:
Item Number : 1
Name : Greatest Hits
Quantity in stock: 25
Price : 9.99
Product Status : true

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
6

5. Al ejecutar el código, se visualiza el valor true o false para Activo. Esto no es fácil de usar y lo mejor
sería que la salida indicara Activo (true) o Descatalogado (false). Para ello, agregue un operador
ternario en el método toString().

6. Llame al setter de la clase de controlador y defina el valor activo en false para el objeto p6 antes de
visualizar los valores en la pantalla. Ejecute y pruebe el código.

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
7

7. Cree un método en la clase Product que devolverá el valor de inventario para cada elemento. Utilice el
precio del producto multiplicado por la cantidad de existencias para calcular el valor de inventario. No
utilice ninguna variable local en este método; solo tiene que devolver el valor en una única línea de
código.

8. Actualice el método toString() en la clase Product para incluir una llamada al método en el método
getInventoryValue() que acaba de crear para que la salida sea de la siguiente forma:

Item Number : 1
Name : Greatest Hits
Quantity in stock: 25
Price : 9.99
Stock Value : 249.75
Product Status : true

9. Guarde el proyecto.

Solución de código:
Clase Object

package inventory;

public class Product {


//Declaraciones de campo de instancia
private int itemNumber; //valor único de identificación
private String name; //nombre del producto
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
8

private int qtyInStock; //cantidad en existencias


private double price; //precio del producto
private boolean active = true; //estado del producto

//constructor predeterminado que inicializa variables de instancia


//los valores numéricos son 0 (cero) y los valores de cadena son "" (null)
public Product()
{
}//final del constructor

//constructor que permite la configuración de los valores iniciales para productos


public Product(int number, String name, int qty, double price)
{
this.itemNumber = number;
this.name = name;
this.qtyInStock = qty;
this.price = price;
}//final del constructor

//devuelve el valor actual de itemNumber


public int getItemNumber() {
return itemNumber;
}//final del método getItemNumber

//actualiza el valor de itemNumber


public void setItemNumber(int itemNumber) {
this.itemNumber = itemNumber;
}//final del método setItemNumber

//devuelve el valor actual del nombre


public String getName() {
return name;
}//final del método getName

//actualiza el valor del nombre


public void setName(String name) {
this.name = name;
}//final del método setName

//devuelve el valor actual de qtyInStock


public int getQtyInStock() {
return qtyInStock;
}//final del método getQtyInStock

//actualiza el valor de qtyInStock


public void setQtyInStock(int qtyInStock) {
this.qtyInStock = qtyInStock;
}//final del método setQtyInStock

//devuelve el valor actual del precio


public double getPrice() {
return price;
}//final del método getPrice

//actualiza el valor del precio


public void setPrice(double price) {
this.price = price;
}//final del método setPrice

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
9

//devuelve el valor actual de Activo


public boolean getActive() {
return active;
}//final del método getActive

//actualiza el valor de Activo


public void setActive(boolean active) {
this.active = active;
}//final del método setActive

//obtener valor total del inventario para este producto


public double getInventoryValue()
{
return price * qtyInStock;
}//final del método getInventoryValue

//sustituir método toString() de la clase Object


//para permitir la visualización de cada objeto en la consola
public String toString()
{
return "\n\nItem Number : " + this.itemNumber
+ "\nName : " + this.name
+ "\nQuantity in stock: " + this.qtyInStock
+ "\nPrice : " + this.price
+ "\nStock Value : " + getInventoryValue()
+ "\nProduct Status : " + (this.active?"Active":"Discontinued");
}//final del método toString

}//final de clase Product

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
10

Clase Main (prueba)

package inventory;

import java.util.Scanner;

public class ProductTester {


public static void main(String[] args) {
//crear un objeto Scanner para entrada del teclado
Scanner in = new Scanner(System.in);
//crear variables locales
int tempNumber;
String tempName;
int tempQty;
double tempPrice;

//solicitar al usuario que introduzca la información del producto


System.out.print("\n\nIntroduzca el nombre del producto: ");
tempName = in.nextLine();
System.out.print("Introduzca la cantidad de existencias de este producto: ");
tempQty = in.nextInt();
System.out.print("Introduzca el precio de este producto: ");
tempPrice = in.nextDouble();
System.out.print("Introduzca el número de elemento: ");
tempNumber = in.nextInt();

//crear el primer producto con la información introducida por el usuario


Product p1 = new Product(tempNumber, tempName, tempQty, tempPrice);

//solicitar al usuario que introduzca la información del producto


in.nextLine();
System.out.print("\n\nIntroduzca el nombre del producto: ");
tempName = in.nextLine();
System.out.print("Introduzca la cantidad de existencias de este producto: ");
tempQty = in.nextInt();
System.out.print("Introduzca el precio de este producto: ");
tempPrice = in.nextDouble();
System.out.print("Introduzca el número de elemento: ");
tempNumber = in.nextInt();

//crear dos objetos con el constructor predeterminado


Product p2 = new Product(tempNumber, tempName, tempQty, tempPrice);

//cerrar el objeto Scanner


in.close();

//crear cuatro objetos con valores para los argumentos


//esto usará el constructor sobrecargado
Product p3 = new Product(3, "Hot Shots", 75, 8.99);
Product p4 = new Product(4, "Brothers In Arms", 200, 7.75);
Product p5 = new Product(5, "Fantastic", 500, 9.50);
Product p6 = new Product(6, "The Party Album", 150, 4.00);

//definir el campo activo en false


p6.setActive(false);

//visualizar la descripción de cada objeto como se describe en el método


toString()
System.out.println(p1);
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.
11

System.out.println(p2);
System.out.println(p3);
System.out.println(p4);
System.out.println(p5);
System.out.println(p6);
}//final del método main
}//final de clase ProductTaster
Resultado:
Introduzca el nombre del producto: Dreams we never lost
Introduzca la cantidad de existencias de este producto: 200
Introduzca el precio de este producto: 8,50
Introduzca el número de elemento: 1
Introduzca el nombre del producto: Down oin Deptford Broadway
Introduzca la cantidad de existencias de este producto: 100
Introduzca el precio de este producto: 4,99
Introduzca el número de elemento: 2

Número de elemento : 1
Nombre : Dreams we never lost
Cantidad en existencias : 200
Precio : 8.5
Valor de existencias : 1700,0
Estado del producto : Active

Número de elemento : 2
Nombre : Down on Deptford Broadway
Cantidad en existencias : 100
Precio : 4,99
Valor de existencias : 499,0
Estado del producto : Active

Número de elemento : 3
Nombre : Hot Shots
Cantidad en existencias : 75
Precio : 8,99
Valor de existencias : 674,25
Estado del producto : Active

Número de elemento : 4
Nombre : Brothers In Arms
Cantidad en existencias : 200
Precio : 7,75
Valor de existencias : 1550,0
Estado del producto : Active

Número de elemento : 5
Nombre : Fantastic
Cantidad en existencias : 500
Precio : 9.5
Valor de existencias : 4750,0
Estado del producto : Active

Número de elemento : 6
Nombre : The Party Album
Cantidad en existencias : 150
Precio : 4,0
Valor de existencias : 600.0
Estado del producto : Descatalogado
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres
pueden ser marcas comerciales de sus respectivos propietarios.

También podría gustarte