Autor Tema: Ejercicio resuelto Java cómo pasar objetos como parámetros ejemplo CU00642B  (Leído 3421 veces)

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Buen día, estoy en el ejercicio CU00642B del tutorial pdf de programación java de aprenderaprogramar y tengo un problema al tratar de pasar el objeto "Personas" como parametro, si pongo el constructor sin parametros no me marca error

Código: [Seleccionar]
public class TaxiYCond{
    private Taxi vehiculoTaxi;
    private Personas conductorTaxi;
    //Constructor
    public TaxiYCond (Taxi objetoTaxi, Personas objetoPersonas) {
        vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(),objetoTaxi.getTipoMotor()); //Creamos un objeto Taxi con el constructor general de Taxi
        conductorTaxi = new Personas (objetoPersonas.getNombre()); //Creamos un objeto Persona con el constructor general de Persona
    }
    public void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula); }
     //Método que devuelve la información sobre el objeto TaxiCond
    public String getDatosTaxiYCond () {
        String matricula = vehiculoTaxi.getMatricula();
        String distrito = vehiculoTaxi.getDistrito();
        int tipoMotor = vehiculoTaxi.getTipoMotor();
        String cadenaTipoMotor = "";
        if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }
     String datosTaxiYCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
            " Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiYCond);
        return datosTaxiYCond;
    } //Cierre del método
}

 conductorTaxi = new Personas (objetoPersonas.getNombre()); //Creamos un objeto Persona con el constructor general de Persona(en esta linea me marca el error)

Código: [Seleccionar]
public class Personas
{
    private String nombre;
    private String apellido;
    private int edad;
    private boolean casado;
    private String nDI;
    //constructor
    public Personas(){
    nombre="";
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }
    //metodos procedimiento
    public void setNombre(String valorNombre){
    nombre=valorNombre;
    }
    public void setApellido(String valorApellido){
        apellido=valorApellido;
    }
    public void setEdad(int valorEdad){
        edad=valorEdad;
    }
    public void setCasado(boolean valorCasado){
    casado=valorCasado;
    }
    public void setNdi(String valorNdi){
    nDI=valorNdi;
    }
    //metodos funcion
    public String getNombre(){return nombre;}
    public String getApellido(){return apellido;}
    public int getEdad(){return edad;}
    public boolean getCasado(){return casado;}
    public String getNdi(){return nDI;}
}
en la clase persona no me marca errores

Código: [Seleccionar]
public class Taxi { //El nombre de la clase
    private String ciudad; //Ciudad de cada objeto taxi
    private String matricula; //Matrícula de cada objeto taxi
    private String distrito; //Distrito asignado a cada objeto taxi
    private int tipoMotor; //tipo de motor asignado a cada objeto taxi. 0 = desconocido, 1 = gasolina, 2 = diesel
    //Constructor1 sin parametros
    public Taxi(){
        ciudad="Mexico D.F.";
        matricula="";
        distrito="desconocido";
        tipoMotor=0;
    }
    //constructor2 con parametros no se nesecita inicializar las variables a las q se les vaya asignar despues el valor
    public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {
        ciudad = "México D.F.";       
        matricula = valorMatricula;
        distrito = valorDistrito;
        tipoMotor = valorTipoMotor;
    } //Cierre del constructor*/
    //Métodos procedimiento
    public void setMatricula (String valorMatricula) {
        matricula = valorMatricula; //La matrícula del objeto taxi adopta el valor que contenga valorMatricula
    } //Cierre del método
    public void setDistrito (String valorDistrito) {
        distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado
    } //Cierre del método
    public void setTipoMotor (int valorTipoMotor) {
        tipoMotor = valorTipoMotor; //El tipoMotor del objeto taxi adopta el valor que contenga valorTipoMotor
    } //Cierre del método*/
    //Métodos funcion
    public String getMatricula () { return matricula; } //Cierre del método
    public String getDistrito () { return distrito; } //Cierre del método
    public int getTipoMotor () { return tipoMotor; } //Cierre del método
} //Cierre

ya escribi como tres veces el codigo y me sigue marcando error, espero me puedan ayudar gracias por su tiempo
« Última modificación: 06 de Septiembre 2020, 19:49 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:pasar objetos como parametros ejemplo (cu00642b) curso java
« Respuesta #1 en: 04 de Mayo 2019, 00:02 »
EL problema es que tu clase Persona solo tiene un constructor, el cuál NO puede recibir parámetros:

Código: [Seleccionar]
//constructor
    public Personas(){
    nombre="";
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }

Pero tú estás intentando crear una Persona, pasándole un parámetro, el nombre en este caso:
Citar
public TaxiYCond (Taxi objetoTaxi, Personas objetoPersonas) {
        vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(),objetoTaxi.getTipoMotor()); //Creamos un objeto Taxi con el constructor general de Taxi
        conductorTaxi = new Personas (objetoPersonas.getNombre()); //Creamos un objeto Persona con el constructor general de Persona
    }

Así que tienes que añadirle a Persona, otro constructor que te acepte ese parámetro:

Código: [Seleccionar]
//constructor
    public Personas(){
    nombre="";
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }

public Personas(String nombrePersona){
    nombre=nombrePersona;
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }

Con este segundo constructor, podrías crear una Persona recibiendo su nombre como parámetro.

Y si quisieras, podrías añadir un tercer constructor (puedes tener todos los constructores que creas necesitar) capaz de recibir todos los parámetros necesarios para inicializar todos los atributos.

Código: [Seleccionar]
//constructor
    public Personas(){
    nombre="";
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }

public Personas(String nombrePersona){
    nombre=nombrePersona;
    apellido="";
    edad=0;
    casado=false;
    nDI="";
    }

public Personas(String nombrePersona, String apellidoPersona, int edadPersona, boolean casadoPersona, String nDIPersona){
    nombre=nombrePersona;
    apellido=apellidoPersona;
    edad=edadPersona;
    casado=casadoPersona;
    nDI=nDIPersona;
    }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:pasar objetos como parametros ejemplo (cu00642b) curso java
« Respuesta #2 en: 06 de Mayo 2019, 22:13 »
muchas gracias ya no me marca el error

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:pasar objetos como parametros ejemplo (cu00642b) curso java
« Respuesta #3 en: 06 de Mayo 2019, 22:37 »
otra duda si quisiera incluir los demas atributos como parametros tengo que hacer un constructor pasando cada atributo como parametro o puede ser un constructor en el que pasen todos los atributos como parametros, es que en la clase Taxi en un constructor paso todos los atributos como parametros y no me marca error pero con la clase Personas si me marca errror

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:pasar objetos como parametros ejemplo (cu00642b) curso java
« Respuesta #4 en: 07 de Mayo 2019, 20:21 »
Si quieres construir un objeto Persona pasándole los 5 valores correspondientes a sus atributos, puedes hacerlo con un constructor como este:

Código: [Seleccionar]
public Personas(String nombrePersona, String apellidoPersona, int edadPersona, boolean casadoPersona, String nDIPersona){
    nombre=nombrePersona;
    apellido=apellidoPersona;
    edad=edadPersona;
    casado=casadoPersona;
    nDI=nDIPersona;
    }

No debería darte error. Si te lo da, la causa será otro motivo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:pasar objetos como parametros ejemplo (cu00642b) curso java
« Respuesta #5 en: 07 de Mayo 2019, 23:16 »
ya no me marca error gracias

 

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