Autor Tema: Los métodos repetitivos en java se consideran un mal diseño CU00666B  (Leído 2339 veces)

CarlosAndres21

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Esta es mi solucion al ejercicio CU00666B sobre el uso de la clase ArrayList y sus metodos. Creo que funciona


EJERCICIO

Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos, pida dos cantantes famosos más al usuario, los añada a la lista y muestre el contenido de la lista por pantalla. Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.

Clase EntradaDeTeclado

Código: [Seleccionar]
import java.util.Scanner;
//Importacion del codigo de la clase Scanner desde la bibliotaca Java

//Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado{


private String entradaTeclado;//Variable de instancia(campo)de la clase


public EntradaDeTeclado(){//Constructor


    entradaTeclado="";


pedirEntrada();//Esto es una llamada a un metodo interno.Al crear un objeto ejecutamos ep metodo
}//Cierre del constructor


public void pedirEntrada(){//Metodo de la clase

      Scanner entradaEscaner=new Scanner(System.in);
 
  entradaTeclado=entradaEscaner.nextLine();}//Cierre del metodo pedirEntrada
 
 
 
 
    public  String getEntrada(){
return entradaTeclado;}//Cierre del metodo getEntrada



public String getPrimerPalabra(){
/*IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO== POR ESO ESTO NO FUNCIONARA

   if(entradaTeclado.substring(0,1)=="j"{
   system.out.println("Hemos detectado una j");}
   else{system.out.println("Mira esto:"entradaTeclado.substring(0,1));}*/

for(int i=0;
     i<entradaTeclado.length()-i;
i++){
if (entradaTeclado.substring(i,i+1).equals("   ") ){
//IMPORTANTISIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0,i+1);
  }
  }return entradaTeclado;//Caso de que no se detecte un ningun espacio devolvemos lo que haya
  }//Cierre del metodo getPrimerPalabra
 
 
 
  public int getLongitud(){
  //Metodo de la clase
  return entradaTeclado.length();
  }//Cierre del metodo getLongitud
                      }//Cierre de la clase}



Clase ListaCantantesFamosos

Código: [Seleccionar]
import java.util.*;


public class ListaCantantesFamosos{
private String nombreDeLaLista;
private ArrayList<String> listadenombres;

public ListaCantantesFamosos (String nombre){
nombreDeLaLista=nombre;
listadenombres=new ArrayList<String>();
}
public void addCantante1(String valor_cantante1){listadenombres.add("Dany Worsnop");}
public void addCantante2(String valor_cantante2){listadenombres.add("Vic Fuentes");}
public void addCantante3(String vapor_cantante3){listadenombres.add("Oliver Sykes");}

public void addNombre(String valor_nombre){listadenombres.add(valor_nombre);}

public String getNombre(int posicion){if(posicion>=0 && posicion<listadenombres.size()){return listadenombres.get(posicion);}
                                      else{return "No existe nombre para la posicion solicitada";}
}
}



Clase TestListaCantantesFamosos

Código: [Seleccionar]
import java.util.*;


public class TestListaCantantesFamosos{
public static void main(String []args){
System.out.println("Empezamos el programa");

System.out.println("Introduzca el nombre de dos cantantes famosos");

EntradaDeTeclado entrada4=new EntradaDeTeclado();
EntradaDeTeclado entrada5=new EntradaDeTeclado();

System.out.println("Gracias");

ListaCantantesFamosos lista1=new ListaCantantesFamosos("Cantantes");

lista1.addCantante1("");
lista1.addCantante2("");
lista1.addCantante3("");

lista1.addNombre(entrada4.getEntrada());
lista1.addNombre(entrada5.getEntrada());

System.out.println("ARTISTAS FAMOSOS"+"\n"+lista1.getNombre(0)+"\n"+lista1.getNombre(1)+"\n"+lista1.getNombre(2)+"\n"+lista1.getNombre(3)+"\n"+lista1.getNombre(4));

}
}


Muchas Gracias.



 
« Última modificación: 05 de Noviembre 2015, 09:31 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:solucion al ejercicio CU00666 sobre Clase ArrayList en java.
« Respuesta #1 en: 05 de Noviembre 2015, 09:31 »
Hola Carlos Andres

Estos métodos resultan repetitivos:

Código: [Seleccionar]
public void addCantante1(String valor_cantante1){listadenombres.add("Dany Worsnop");}
public void addCantante2(String valor_cantante2){listadenombres.add("Vic Fuentes");}
public void addCantante3(String vapor_cantante3){listadenombres.add("Oliver Sykes");}

Si ya dispones del método addNombre lo lógico es usar ese método. Tener esa repetición de métodos se considera un mal diseño.

Además tampoco tiene sentido que le pases un parámetro a un método si luego no usas ese parámetro. Por ejemplo valor_cantante1 no se usa, entonces ¿para qué lo tienes como parámetro?

Deberías corregir esto y replantear el ejercicio eliminando todo lo sobrante. Haz la búsqueda del código CU00666B si quieres ver otras soluciones en los foros.

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".