Ejercicio #1 Java(Principiante)

Iniciado por ToxicSmoke, 23 Marzo 2014, 05:09 AM

0 Miembros y 1 Visitante están viendo este tema.

ToxicSmoke

Esta es un pequeño ejercicio elaborado para las personas que esten aprendiendo el lenguaje de java y que quieran desarrollar su logica ya que un programador no solo es programador porque sabe de lenguajes sino porque su logica esta bien encaminada, como decimos con nuestros compañeros "cuando adquirimos el octavo sentido de programador o nuestra armadura celestial".
a continuacion el Primer Ejercicio y espero que les guste tambien pondre codigo del desarrollo.

EJERCICIO JAVA

1.   Crear una clase llamada RentItem que tiene los siguientes atributos:
     a.   Código de Item
     b.   Nombre de Item
     c.   Precio de renta de Item

En el constructor se inicializan los primeros 3 atributos por medio de parámetros. La cantidad de copias se inicializan en 0.
Tiene las siguientes funciones:
     a.   redefine toString para retornar una String con los valores de los 3 atributos.
     b.   double pagoRenta(int días) que solamente retorna 0.
     c.   Funciones get para los 4 atributos.
     d.   String submenu( ). Retorna una String con las subopciones que pueden ejecutarse para la clase. Para esta clase padre se retorna: "1-Imprimir"
     e.   void ejecutarOpcion(int opcion). Dado una opción entera que se recibe se ejecuta una determinada operación. Si se recibe 1 se Imprimen los 4 valores de la clase en pantalla, si es otro valor, se retorna "Opcion No Valida"


2.   Crear una clase llamada Movie que hereda de la clase RentItem. Además tiene 1 atributo extra llamado estado, que por default en el constructor se inicializa como "ESTRENO".
Tiene las siguientes funciones:
     a.   set y get para Estreno.
     b.   Redefine toString para tomar lo que retorna su padre y agregarle el estado además del texto " – Movie".
     c.   Redefine pagoRenta(int días). Tomando las siguientes consideraciones: el pago a retornar es el precio de renta del ítem PERO si la película es ESTRENO y si los días se pasan de 2, se cobra 50 lps por cada dia adicional. Si la película NO ES ESTRENO y si los días se pasan de 5 se cobran 30 lps por cada dia adicional como recargo.
     d.   Redefine la función submenú para adicionarle a lo que ya da el padre: "\n2-Cambiar Estado"
     e.   Redefine ejecutarOpcion tomando en cuenta su función submenú, asi que si se recibe 1 se imprimen todos sus valores, si recibe 2 se pide del teclado el nuevo estado para actualizarlo, si recibe 3 se tira "OPCION NO VALIDA"

3.   Crear una clase llamada PS3Game que hereda de la clase RentItem. Además tiene un atributo extra de tipo Calendar para guardar la fecha de publicación. En el constructor se inicializa dicha fecha con el dia actual, además el precio de renta es fijo y es de Lps. 30.
Tiene las siguientes funciones:
     a.   Redefine toString  para adicionarle a lo que ya retorna el padre la fecha de publicación además del texto " – PS3 Game".  
     b.   void setFechaPublicacion(int year, int mes, int dia). Actualiza la fecha de publicación.
     c.   Redefine pagoRenta(int días) que retorna el precio de renta por cada dia que se recibe.
     d.   Redefine la función submenú para adicionarle a lo que ya da el padre: "\n2- Actualizar Fecha de Publicacion"
     e.   Redefine ejecutarOpcion tomando en cuenta su función submenú, asi que si se recibe 1 se imprimen todos sus valores, si recibe 2 se pide del teclado los valores adecuados para llamar la función setFechaPublicacion, si recibe 3 se tira "OPCION NO VALIDA".

4.   Crear una clase que contiene el main, dentro del main se tiene un ARRAYLIST para guardar objetos Movie o PS3Game. El Main tiene un menú con las siguientes opciones:
     a.   Agregar Item. Se pide del teclado el tipo, si se ingresa "MOVIE" se crear una nueva movie y se agrega al arreglo, si se ingresa "PS3" se crea un nuevo ps3game ítem y se agrega al arreglo, caso contrario se imprime "TIPO INCORRECTO". Cualquier valor requerido se ingresa del teclado.
     b.   Rentar. Se ingresa el código del Item, y si este existe, se imprime todos los valores del objeto y se pide del teclado los días a rentar para luego imprimir su monto a pagar. Si no existe se imprime "Item No Existe"
     c.   Ejecutar Sub Menú. Se pide del teclado el código del ítem, si este existe se imprime su submenú del ítem además de adicionarle el texto "Escoja Opción: ",   por lo que se pide del teclado seguidamente la opción a ejecutar de acuerdo a lo que dicta el submenú. Con la ayuda de la función ejecutarOpcion se procede a llamar la opción seleccionada.
     d.   Imprimir Todo. Imprime todos los datos de todos los ítems agregados.


SUERTE!!

ToxicSmoke

aqui les dejo el codigo del ejercicio, si llegaran a tener algun error avisar de inmediato y arreglare el error Gracias y espero que hayan resuelto el ejercicio.

Código (java) [Seleccionar]
import java.util.Calendar;
import java.util.Scanner;

//CLASE PS3
public class PS3Game extends RentItem {
    private Calendar fechapublic;
    private String genero;

    public PS3Game(int c, String n) {
        super(c,n, 30);
        fechapublic = Calendar.getInstance();
    }

    @Override
    public String toString() {
        return super.toString() + " fechapublic=" +
                fechapublic.getTime() + " - PS3 GAME";
    }

    @Override
    public double pagoRenta(int dias) {
        return dias * precio;
    }

    @Override
    public String subMenu() {
        return super.subMenu() +
                "\n2-Cambiar Fecha.";
    }

    public void setFechaPublic(int y, int m, int d){
        fechapublic.set(y, m-1, d);
    }

    @Override
    public void ejecutarOpcion(int op) {
        Scanner lea = new Scanner(System.in);
       
        switch(op){
            case 1:
                System.out.println(this);
                break;
            case 2:
                System.out.println("Ingrese año: ");
                int y = lea.nextInt();
                System.out.println("Ingrese Mes: ");
                int m = lea.nextInt();
                System.out.println("Ingrese dia: ");
                int d = lea.nextInt();
                setFechaPublic(y, m, d);
                break;
            case 3:
                System.out.println("OPCION NO VALIDA");
        }
    } 
}
//CLASEMOVIE

import java.util.Scanner;

public class Movie extends RentItem {
    private String estado;
   

    public Movie(int codigo, String nombre, double precio) {
        super(codigo, nombre, precio);
        estado = "ESTRENO";
       
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @Override
    public String toString() {
        return super.toString() + " estado=" +
                estado + " -MOVIE";
    }
   
    @Override
    public double pagoRenta(int dias) {
        double tot = this.precio;
       
        if( estado.equals("ESTRENO")){
            if(dias > 2)
                tot += (dias-2) * 50;
        }
        else{
            if(dias > 5)
                tot += (dias-5) * 30;
        }
        return tot;
    }
   
    @Override
    public String subMenu() {
        return super.subMenu() + "\n2-Cambiar Estado.";
    }
   
    @Override
    public void ejecutarOpcion(int op) {
        Scanner lea = new Scanner(System.in);
       
        switch(op){
            case 1:
                System.out.println(this);
               
                break;
            case 2:
                System.out.println("Ingrese estado: ");
                setEstado(lea.next());
                break;
            case 3:
                System.out.println("OPCION NO VALIDA");
        }
    }   
}


//MAIN

import java.util.ArrayList;
import java.util.Scanner;


public class Main {
    static ArrayList<RentItem> items = new ArrayList<>();
    static Scanner lea = new Scanner(System.in);
       
    public static void main(String[] args) {
        int op;
        Scanner lea = new Scanner(System.in);
       
        do{
            System.out.println("1- Agregar");
            System.out.println("2- Rentar");
            System.out.println("3- SubMenu");
   
            System.out.println("4- Salir");
            System.out.println("Escoja Opcion: ");
            op = lea.nextInt();
           
            switch(op){
                case 1:
                    System.out.println("Tipo?: ");
                    String tipo = lea.next();
                    addItem(tipo);
                    break;
                case 2:
                    System.out.println("Codigo: ");
                    int cod = lea.nextInt();
                    rentarItem(cod);
                    break;
                case 3:
                    System.out.println("Codigo: ");
                    cod = lea.nextInt();
                    subMenuItem(cod);
                    break;                 
            }
           
        }while(op!=4);
    }

    private static void addItem(String tipo) {
            System.out.println("ingrese codigo");
        int codigo = lea.nextInt();
       
        if( buscar(codigo) == null ){
            System.out.println("ingrese nombre");
            String n = lea.next();

            if( tipo.equalsIgnoreCase("MOVIE")){
                System.out.println("ingrese el precio");
                double precio = lea.nextDouble();
                items.add( new Movie(codigo, n, precio) );
            }
            else if( tipo.equalsIgnoreCase("PS3")){
                items.add( new PS3Game(codigo, n) );
            }
        }
        else{
            System.out.println("CODIGO YA EXISTE");
        }
    }

    private static void rentarItem(int cod) {
        RentItem ri = buscar(cod);
        if( ri != null ){
            int dias = lea.nextInt();
            double result = ri.pagoRenta(dias);
            System.out.println(result);
        }
    }

    private static void subMenuItem(int cod) {
        RentItem ri = buscar(cod);
        if( ri != null ){
            System.out.println(ri.subMenu());
            System.out.println("Elija opcion: ");
            int op = lea.nextInt();
            ri.ejecutarOpcion(op);
        }
    }
   
    private static RentItem buscar(int cod){
        for(RentItem ri : items){
            if(ri.codigo == cod)
                return ri;
        }
        return null;
    } 
}