Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Shakar

Páginas: [1]
1
Hola, funciona correctamente. Lo que si falta un poco de orden, a lo mejor meter todo eso dentro de una clase, y desde la clase con el método main hacer la llamada. Pero funciona perfect! Hay cosas que puedes obviar, por ejemplo:

String entradaTeclado = entradaEscaner.nextLine (); //Asi de golpe


if(entradaTeclado.substring(0,1).equalsIgnoreCase("a")){
           mensaje2 = " y comienza por a";
        }

Esto también es valido, proque entradaTeclado.substring(0,1), retorna una cadena de tipo String, y como es String podemos obtener el metodo equalsIgnoreCase. Es mas sencillo y el codigo queda mas resumido y limpio.

2
Es correcto el ejercicio.

3
Es que ese ejemplo que pusiste no es muy bueno, mas bien parecen atributos de una clase, ejemplo la clase que pusiste que es Producto, puede tener un atributo estadop de tipo String o cadena donde almacene el estado del producto, en este caso fresco, refrigerado, o congelado, y otro atributo de formaCongelado de tipo cadena, donde almacenes la forma en que se congelo. Un ejemplo de herencia mas practico y sencillo de explicar puede ser un por ejemplo, un Profesor, un Alumno, un Trabajador, un Jefe, un Comerciante, un Ladron, un Militar, todos ellos, tienen algo en comun, que son Personas. Entonces la clase padre es Persona, donde Persona tiene atributos, como nombre, edad, rut, etc... Pero para uno de ellos tiene sus propios atributos o propiedades, por ejemplo el Trabajador tiene un sueldo, tiene un incentivo a lo mejor. Entonces el trabajador hereda todos lo atributos y metodos de la clase padre Persona. Al final la herencia es para reutilizar codigo, te simplifica codificar.
Un gato, un perro, un leon, un elefante, tienen algo en comun, que son Animales.... Pero cada gato, perro y leon tiene sus propias propiedades o atributos a parte de los que hereda de la clase padre Animales. Espero que te sirva mi comentarios. Saludos

4
Si, se cumple el objetivo de pasar objetos como parámetros al constructor en este caso... Todo bien, todo ordenado.

5
Aprender a programar desde cero / Re:Enredo con ArrayList
« en: 08 de Diciembre 2016, 16:39 »
1) si están creadas las clases pais
2) uso tipo Object como parametro porque asi lo exige el profesor de la Universidad. Yo igual quede como "Plop" cuando vi eso. Es que el ejercicio no es mio, es de un amigo. Aunque recibiendolo se puede refundir o castear a la clase que pertenece.
3) Si, creo los 3 objetos con constructor por defecto, pero el problema, es el que puse en el el primer post.

Citar
Tengo la clase padre Persona, y tengo las clases hija Jugador y Entrenador, ¿Como puedo saber si cuando recibo por parametro un objeto es de tipo Jugador o Entrenador? Cada clase de Jugador y Entrenador tiene un metodo que devuelve su informacion personal.

Código: [Seleccionar]
public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         //persona.printJugador();
         }
         if(persona instanceof Entrenador){
         //persona.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{

Si compilo eso me da error....

--------------------------------------------------------------------------------
Pero si lo cambio a esta forma compila, ¿Porque? Esa es la respuesta que estoy buscando... no me tengo explicación.


Código: [Seleccionar]
public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         Jugador jug = (Jugador)persona;
         jug.printJugador();
         }
         if(persona instanceof Entrenador){
         Entrenador ent = (Entrenador)persona;
         ent.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{
        System.out.println("Persona no existe");
    }
   
   
   
}

Porque compila asi? Y no compila de la otra forma? en el metodo consultar(), de la clase Persistencia?

6
Aprender a programar desde cero / Re:Enredo con ArrayList
« en: 07 de Diciembre 2016, 22:16 »
Esta es la clase consultar

Código: [Seleccionar]
public class Persistencia
{
   
   
    ArrayList<Equipo> listaEquipo = new ArrayList<Equipo>();
    ArrayList<Persona> listaPersona = new ArrayList<Persona>();
   
    public Persistencia()
    {
        // initialise instance variables
       
    }

 


public String agregarPersonaLista(Object obj){
   
    if(obj instanceof Persona){
         
        if(listaPersona.contains(obj)){
            return "Objeto duplicado";
        }
        else{
            listaPersona.add((Persona)obj);
            return "Objeto agregado";
        }
               
     
             
    }
    else{
       
        return "Objeto no corresponde a una Persona";
    }
}

public int cantidadRegistro(){
    return listaPersona.size();
}
 

public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         Jugador jug = (Jugador)persona;
         jug.printJugador();
         }
         if(persona instanceof Entrenador){
         Entrenador ent = (Entrenador)persona;
         ent.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{
        System.out.println("Persona no existe");
    }
   
   
   
}


}

La clase con el metodo main para hacer pruebas

Código: [Seleccionar]
public class Test
{
   
    public static void main(String args []){
        Persona per1 = new Persona();
        Equipo equip1 = new Equipo();
        Persistencia per = new Persistencia();
        per.agregarPersonaLista(per1);
        per.cantidadRegistro();
       
    }

}

7
Aprender a programar desde cero / Re:Enredo con ArrayList
« en: 07 de Diciembre 2016, 15:14 »
Bueno la clase Persona es la siguiente:

Código: [Seleccionar]
public class Persona
{
    // instance variables - replace the example below with your own
    private String nombres;
    private String apellidos;
    private String rut;
    private Pais pais;

    /**
     * Constructor sin parametros para la Clase Persona
     */
    public Persona(){
       setNombres("Sin Nombres");
       setApellidos("Sin apellidos");
       setRut("1-9");
       setPais(new Pais());
    }

    /**
     * Constructor con parametros para la Clase Persona
     * @param String nombres
     * @param String apellidos
     */
    public Persona(String nombres, String apellidos,String rut, Pais pais){
       setNombres(nombres);
       setApellidos(apellidos);
       setRut(rut);
       setPais(pais);
    }
   
   
    /**
     * Accesador para el atributo nombres
     * @return String nombres
     */
    public String getNombres(){
        return nombres;
    }

    /**
     * Accesador para el atributo apellidos
     * @return String apellidos
     */
    public String getApellidos(){
        return apellidos;
    }
   
    /**
     * Accesador para el atributo pais
     * @return String pais
     */
    public Pais getPais(){
        return pais;
    }
   
    /**
     * Mutador para el atributo nombres
     * @param String nombres
    */
    public void setNombres(String nombres){
        StringTokenizer tokens = new StringTokenizer(nombres.trim());
        if(tokens.countTokens()>=2){
          this.nombres=nombres.trim();
        }
        else {
            this.nombres = "Sin Nombre";
        }       
    }
       
    /**
     * Mutador para el atributo apellidos
     * @param String apellidos
    */
    public void setApellidos(String apellidos){
        if(apellidos.trim().length()>=3){
            this.apellidos = apellidos;
        }
        else{
            this.apellidos = "Sin Apellidos";
        }   
    }
   
    /**
     * Accesador para atributo rut
     * @return String
     */
    public String getRut(){
        return rut;
    }
   
    /**
     * Accesador para atributo rut
     * @return String
     */
    public void setRut(String rut){
        if(rut.trim().length()>=3){
            this.rut=rut.trim();
        }
        else{
            this.rut="NNN";
        }
    }
   
   
    /**
     * Mutador para el atributo pais
     * @param Pais pais
    */
    public void setPais(Pais newPais){
        this.pais = newPais;
    }   
   
   
    /**
     * Metodo de impresión de la clase Persona
     */
    public void printPersona()
    {
        System.out.println(toString());
    }
   
    /**
     * Metodo toString() que sobreescribe la Clase Persona
     * @return String
     */
    @Override
    public String toString()
    {
        return "Nombres: " + getNombres()
              +"Apellidos: "+ getApellidos()
              + "Rut : " + getRut()
              +"Pais: "+ pais.toString();
    }
}

La clase Jugador es la siguiente:

Código: [Seleccionar]
public class Jugador extends Persona
{
    // instance variables - replace the example below with your own
    private String posicion;
    private int numeroCamiseta;

    /**
     * Constructor sin parametros para la Clase Jugador
     */
    public Jugador(){
       super();
       this.posicion = "arquero"; // setPosicion("suplente"); //
       this.numeroCamiseta = 1; //setNumCam(13);
    }

    /**
     * Constructor con parametros para la Clase Jugador
     * @param String nombres
     * @param String apellidos
     * @param Pais pais
     * @param String posicion
     */
    public Jugador(String nombres, String apellidos,String rut,Pais pais, String posicion){
       super(nombres,apellidos,rut, pais);
       setPosicion(posicion); // this.posicion= posicion;
       setNumeroCamiseta(numeroCamiseta);
    }
   
   
    /**
     * Accesador para el atributo posicion
     * @return String posicion
     */
    public String getPosicion(){
        return posicion;
    }

    /**
     * Accesador para el atributo numeroCamiseta
     * @return int numeroCamiseta
     */
    public int getNumeroCamiseta(){
        return numeroCamiseta;
    }
   
     
    /**
     * Mutador para el atributo posicion
     * @param String posicion
    */
    public void setPosicion(String posicion){
       if(posicion.trim().equalsIgnoreCase("arquero") || posicion.trim().equalsIgnoreCase("defensa") ||
          posicion.trim().equalsIgnoreCase("volante") || posicion.trim().equalsIgnoreCase("delantero")){
           this.posicion = posicion.trim().toLowerCase();
       }
       else{
           this.posicion = "suplente";
       }
       if(getPosicion().equalsIgnoreCase("arquero")){
           this.numeroCamiseta = 1;
       }
       else if(getPosicion().equalsIgnoreCase("defensa")){
           this.numeroCamiseta = 3;
       }
       else if(getPosicion().equalsIgnoreCase("volante")){
           this.numeroCamiseta = 10;
       }
       else if(getPosicion().equalsIgnoreCase("delantero")){
           this.numeroCamiseta = 9;
       }
       else{
            this.numeroCamiseta = 13;
       }
    }

   
    /**
     * Mutador para el atributo numeroCamiseta
     * @param int numeroCamiseta
    */
    private void setNumeroCamiseta(int numeroCamiseta){
       if(getPosicion().equalsIgnoreCase("arquero")){
           this.numeroCamiseta = 1;
       }
       else if(getPosicion().equalsIgnoreCase("defensa")){
           this.numeroCamiseta = 3;
       }
       else if(getPosicion().equalsIgnoreCase("volante")){
           this.numeroCamiseta = 10;
       }
       else if(getPosicion().equalsIgnoreCase("delantero")){
           this.numeroCamiseta = 9;
       }
       else{
            this.numeroCamiseta = 13;
       }
    }
   
   
    /**
     * Metodo de impresión de la clase Jugador
     */
    public void printJugador()
    {
        System.out.println(toString());
    }
   
    /**
     * Metodo toString() que sobreescribe la Clase Jugador
     * @return String
     */
    @Override
    public String toString()
    {
        return super.toString()
            +  "Posicion:  " + getPosicion()
            +  "Numero de Camiseta   " + getNumeroCamiseta();
    }
}


y La clase entrenador es la siguiente

Código: [Seleccionar]
public class Entrenador extends Persona
{
    // instance variables - replace the example below with your own
    private int anioExperiencia;

    /**
     * Constructor sin parametros para la Clase Entrenador
     */
    public Entrenador(){
       super();
       setAnioExperiencia(1);
    }

    /**
     * Constructor con parametros para la Clase Entrenador
     * @param String nombres
     * @param String apellidos
     * @param Pais pais
     * @param int anioExperiencia
     */
    public Entrenador(String nombres, String apellidos,String rut, Pais pais, int anioExperiencia){
       super(nombres,apellidos,rut,pais);
       setAnioExperiencia(anioExperiencia);
    }
   
   
    /**
     * Accesador para el atributo anioExperiencia
     * @return int anioExperiencia
     */
    public int getAnioExperiencia(){
        return anioExperiencia;
    }
   
   
    /**
     * Mutador para el atributo anioExperiencia
     * @param int anioExperiencia
    */
    public void setAnioExperiencia(int anioExperiencia){
        if(anioExperiencia>0){
            this.anioExperiencia = anioExperiencia;
        }
        else {
            this.anioExperiencia = 1;
        }       
    }
   
   
    /**
     * Metodo de impresión de la clase Entrenador
     */
    public void printEntrenador()
    {
        System.out.println(toString());
    }
   
    /**
     * Metodo toString() que sobreescribe la Clase Entrenador
     * @return String
     */
    @Override
    public String toString()
    {
        return super.toString()
            +  "Años de experiencia;  " + getAnioExperiencia();
    }
}


Ambas tienen opcion de imprimir su informacion, y es al metodo que intento llegar... creo que el problema va por no poder hacer "refundicion" a cualquier cosa. No es algun ejercicio o que haga referencia el curso, es algo propio.

Bueno el tema es que al final lo solucione de esta forma, y no sé si sera la correcta, y tampoco sé porque compilo de esta forma

Código: [Seleccionar]
public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         Jugador jug = (Jugador)persona;
         jug.printJugador();
         }
         if(persona instanceof Entrenador){
         Entrenador ent = (Entrenador)persona;
         ent.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{
        System.out.println("Persona no existe");
    }
   
   
   
}

Porque no compilaba cuando directamente tomaba el objeto persona de la Clase Persona que recibia por parametro, e invoca el metodo printJugador??
El cual fue el puse en el primer comentario:

Código: [Seleccionar]
public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         //persona.printJugador();
         }
         if(persona instanceof Entrenador){
         //persona.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{
        System.out.println("Persona no existe");
    }
   
   
   
}

Podía invocar el printPersona(), pero no los métodos para las otras clases... entonces ahí quede pillado. Si alguien con mas experiencia me explica con peritas y manzanas quedo mega feliz y agradecido. Desde ya comenzare a participar en el foro respondiendo a los que están iniciándose.
De antemano gracias

9
Hola. Tengo la clase padre Persona, y tengo las clases hija Jugador y Entrenador, ¿Como puedo saber si cuando recibo por parametro un objeto es de tipo Jugador o Entrenador? Cada clase de Jugador y Entrenador tiene un metodo que devuelve su informacion personal.

Código: [Seleccionar]
public void consultar(Persona persona){
   
    if(listaPersona.contains(persona)){
       
         if(persona instanceof Jugador){
         //persona.printJugador();
         }
         if(persona instanceof Entrenador){
         //persona.printEntrenador();
         }
         else{
         persona.printPersona();
         }
    }
   
    else{
        System.out.println("Persona no existe");
    }
   
   
   
}


El compilador me devuelve como que el metodo printJugador de la clase Jugador no existe, al igual que de la clase Entrenador... Si comento la linea, el compilador me dice que esta todo OK.
¿Que puedo hacer?

Páginas: [1]

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