Autor Tema: Ejercicio (CU00667B), ejemplo método set que recibe un objeto en Java  (Leído 3124 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenos Tardes

Hago entrega del ejercicio del capitulo 67°, debo confesar que fue bastante complicado para mi esto.. Cuando lo complete ayer a la media noche, con sueño me fui a desahogarme con poker xDD

Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de cantantes como se desee. Para ello usa un bucle while que dé opción a elegir al usuario).

Clase CantanteFamoso:

Código: [Seleccionar]
package ArrayObject2;

public class CantanteFamoso {
    private String nombre;
    private String discosConMasVentas;
   
    public CantanteFamoso(){
        nombre = "";
        discosConMasVentas = "";
    }
   
    public CantanteFamoso(String nombre, String discosConMasVentas){
        this.nombre = nombre;
        this.discosConMasVentas = discosConMasVentas;
    }
   
    public String getDiscoConMasVentas(){
        return discosConMasVentas;
    }
   
    public String getNombre(){
        return nombre;
    }
   
}

Clase Lector
Código: [Seleccionar]
package ArrayObject2;
import java.util.Scanner;

public class Lectores {
    public String LeerCadena(){
        Scanner in = new Scanner(System.in);
        return in.nextLine();
    }
}

Clase ListaCantantesFamosos:
Código: [Seleccionar]
package ArrayObject2;
import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos {
    ArrayList <CantanteFamoso> cantantes;
    public ListaCantantesFamosos(){
        cantantes = new <CantanteFamoso> ArrayList();
    }
   
    public void setCantanteFamoso(CantanteFamoso Cantante){
        cantantes.add(Cantante);
    }
   
    public void getCantanteFamoso(){
        CantanteFamoso cantante;
        Iterator<CantanteFamoso> sin = cantantes.iterator();
        while(sin.hasNext()){
            cantante = sin.next();
            System.out.print("Cantante: " + cantante.getNombre());
            System.out.println("        Discos con mas ventas: " + cantante.getDiscoConMasVentas());
        }       
    }
}

Clase Test:
Código: [Seleccionar]
package ArrayObject2;

public class Test {
    public static void main(String[]args){
        CantanteFamoso cantante1, cantante2; String dato, cant, disc;
        ListaCantantesFamosos List = new ListaCantantesFamosos();
        Lectores leer = new Lectores();                       
        cantante1 = new CantanteFamoso("Damon Albarn", "Blur"); cantante2 = new CantanteFamoso("Lady Gaga", "The Fame Monster");
        List.setCantanteFamoso(cantante1);
        List.setCantanteFamoso(cantante2);
        System.out.println("La lista contiene los siguientes datos: ");
        List.getCantanteFamoso();
        System.out.println("  ");
        boolean si, no = false;
        while(no == false){
            si = false; no = false;             
            System.out.println("Ingrese otro artista mas: ");
            cant = leer.LeerCadena();
            System.out.println("Ingrese su album mas vendido: ");         
            disc = leer.LeerCadena();
            List.setCantanteFamoso(new CantanteFamoso(cant, disc));
            System.out.println("  ");
            System.out.println("La lista contiene los siguientes datos: ");
            List.getCantanteFamoso();     
            System.out.println("  ");
            while (no == false && si == false){
              System.out.println("¿Deseas agregar otro artista y su album?");
              dato = leer.LeerCadena();
              if(dato.equalsIgnoreCase("Si") == true){si = true; System.out.println("  ");}
              else if(dato.equalsIgnoreCase("No") == true){no = true;}
              else System.out.println("Opcion desconocida, intente de nuevo.");
        }
        }           
    }
}

Esta vez la parte que anteriormente hice con variables enteras que funcionaban como un "Switch", lo desarrolle con variables Booleanas!





Seguire leyendo y leyendo este ejercicio, para poder manejar con mas facilidad  estos casos en que los parametros de los metodos son objetos.

Muchas gracias y saludos a todos!
« Última modificación: 10 de Abril 2015, 00:13 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio (CU00667B), Array de Objetos CantanteFamoso.
« Respuesta #1 en: 10 de Abril 2015, 00:13 »
Hola Dan en la clase CantanteFamoso el nombre de atributo discosConMasVentas parece referirse a varios discos, al ser un solo disco es más adecuado discoConMasVentas. Si fuera en plural parece una colección de elementos. Si es singular un solo elemento.

En la clase ListaCantantesFamosos tenemos algo que se comenta en otros hilos en ejercicios similares: el nombre de método getCantanteFamoso no es adecuado. Un get debe devolver algo, tener un return. Este método no tiene return.

En la clase test estos nombres de variables son confusos,  boolean si, no = false;

Deberías usar nombres menos confusos. Por ejemplo boolean continuar.

Ten en cuenta que si, no hacen referencia a una misma cosa. Sólo te haría falta una variable, no veo necesario usar dos.

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".