import java.util.Scanner;
import java.text.NumberFormat;
public class ProductoApp{
public static void main(String args []){
System.out.println("Bienvenido a la información de productos\n");
Scanner sc = new Scanner(System.in); // lee un código Libro o Software
String choice = "s";
while (choice.equalsIgnoreCase("s")) {
System.out.print("Ingrese el código del producto: ");
String productoCodigo = sc.next();
sc.nextLine(); // descarta cualquier otro dato de la línea
Producto p = ProductoDB.getProducto(productoCodigo);
if (p != null) System.out.println(p); // equivalente a p.toString()
else System.out.println("No hay producto con este código.\n");
System.out.println("Contador de producto: " + Producto.getContador() + "\n");
System.out.print("Continúa? (s/n): ");
choice = sc.nextLine();
System.out.println() ;
}
}
}
class Producto{
private String codigo;
private String descripcion;
private double precio;
protected static int contador = 0 ;
public Producto() {}
public void setCodigo(String codigo){this.codigo = codigo;}
public String getCodigo(){return codigo;}
public void setDescripcion(String descripcion){this.descripcion = descripcion;}
public String getDescripción(){return descripcion;}
public void setPrecio(double precio){this.precio = precio;}
public double getPrecio(){return precio;}
public String getFormattedPrecio(){
NumberFormat currency = NumberFormat.getCurrencyInstance();
return currency.format(precio);
}
// @override Funciona en NetBeans
public String toString(){
return "Código : "+ codigo + "\n" +
"Descripción: " + descripcion + "\n" +
"Precio : " + this.getFormattedPrecio()+ "\n";
}
public static int getContador(){ return contador;}
}
class ProductoDB {
public static Producto getProducto(String productoCodigo){
Producto p = null;
if (productoCodigo.equalsIgnoreCase("java") || productoCodigo.equalsIgnoreCase("jsps") ||
productoCodigo.equalsIgnoreCase("mcb2")){
Libro li = new Libro ();
if (productoCodigo.equalsIgnoreCase("java")){
li.setCodigo(productoCodigo);
li.setDescripcion("Java SE");
li.setPrecio(49.50);
li.setAutor("José Vargas");
}else if (productoCodigo.equalsIgnoreCase("jsps")){
li.setCodigo(productoCodigo);
li.setDescripcion("Java Servlets y JSP");
li.setPrecio(49.50);
li.setAutor("Manuel Terán");
} else if (productoCodigo.equalsIgnoreCase("mcb2")){
li.setCodigo(productoCodigo);
li.setDescripcion("Fundamentos de Programación");
li.setPrecio(30.50);
li.setAutor("Rafael Obando");
}
p = li;
}else if (productoCodigo.equalsIgnoreCase("txtp")){
Software s = new Software();
s.setCodigo("txtp");
s.setDescripcion("TextPad");
s.setPrecio(27.00);
s.setVersion("4.7.3");
p = s;
}
return p;
}
}
class Libro extends Producto{
private String autor; // nuevo campo
public Libro(){
super();
autor = "";
contador++;
}
public void setAutor(String autor){ this.autor = autor;}
public String getAutor(){return autor;}
// @override Funciona en NetBeans
public String toString(){ return super.toString() + "Autor : "+ autor + "\n";}
}
class Software extends Producto{
private String version; // nuevo campo
public Software(){
super();
version = "";
contador++;
}
public void setVersion(String version){this.version = version;}
public String getVersion(){return version;}
// @override Funciona en NetBeans
public String toString(){return super.toString() + "Versión : " + version + "\n";}
}