Autor Tema: Objeto Java que ha sido declarado pero no creado se puede llamar método CU00653B  (Leído 8712 veces)

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
Hola a todos despùes de un largo reposo regreso finalmente a estudiar, aquì les dejo la respuesta al ejercicio propuesto en esta clase, quisiera saber si estàn correctas las respuestas, los saludos.

a) ¿Es posible llamar a un método externo de un objeto que ha sido declarado pero no creado?

No es posible porque cuando se hace la declaraciòn de un objeto se reserva solo un espacio de memoria en la PC, una vez creado el objeto es que se puede comenzar a hacer uso de el.


b) ¿Es posible llamar a un método externo de un objeto “A” que ha sido declarado y creado pero cuyo constructor está vacío?

Bueno en la clase CU00642B donde nos proponen un ejercicio para trabajar con objetos usando las clases Casa,SalonCasa y CocinaCasa,donde en la clase casa creamos 2 objetos uno de tipo SalonCasa y otro de tipo CocinaCasa, cuando desde la clase Casa tratè de llamar los mètodos de SalonCasa y CocinaCasa me saliò este error:error Java constructor in class cannot be applied to given types required found, y era porque en esas clases tenìa solo declarado el constructor vacìo me faltaba declarar el constructor con paràmetros, apenas los declarè error solucionado, asì que no creo que sea recomendable hacer llamadas a mètodos externos donde el objeto tenga declarado solo el constructor vacìo.


c) Una llamada al método pow de la clase Math que hacemos dentro de un método definido en una clase ¿Es una llamada a un método interno o a un método externo? ¿La llamada al método pow se hace sobre un objeto declarado y creado o no declarado y no creado?

La clase Math es una clase externa que viene dentro de las API de Java por tanto la llamada a los mètodos de esta clase es una llamada a mètodos externos, la llamada al mètodo se hace con un objeto declarado y creado por el propio compilador Java.
« Última modificación: 25 de Mayo 2015, 08:35 por Ogramar »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Muy buenas, debes escribir las repsuestas en el foro de aprender a programar desde cero que es donde va el curso, para la proxima ;)

Te respondo a esta, Respuesta A correcta,  Respuesta C correcta.

Respuesta B no es correcta, un constructor vacio, puede inicializar un objeto, pues es un constructor igual, usará valores por defecto que desconozcamos pero se creará el objeto.

Y aclarandote el error que te salió, sobre error Java constructor in class cannot be applied to given types required found, no es porque el constructor estuviera vacio, sino porque tenias un constructor (o no lo habia), pero los tipos de datos que tu le mandabas no coincidian con los del constructor (o no encontraba constructor con los parametros requeridos que le pasabas).

Ejemplo, si tienes un constructor SalonCocina(int habitaciones, int metros){}

Debes enviarle dos int para que llegue la información yse cree, si le haces un:
String metros = "veinte", int habitaciones = 4
new SalonCocina (habitaciones, metros); al ser metros un String y solicitar un int, saldrá el error que tu comentabas. ;) espero este claro lo expliqué un poco liado :)

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
Hola, gracias por responder en cuanto a lo que me dices del error, pues todos los tipos de datos coinciden, acabo de probar en el bluej a quitar los constructores con paràmetros y me sale el mismo error, si puedes haz tu la prueba y hazme saber, saludos.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Si mandas el codigo con el que pruebas, podremos mirar que ocurre y te comento ;) un saludo

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
ok gracias,quita los constructores con parámetros de las clases SalonCasa y CocinaCasa, despùes compila la clase Casa y dime que resultado obtienes,  aquì te va el còdigo:
Código: [Seleccionar]
//Clase
public class SalonCasa{
    private int numeroDeTelevisores;
    private String TipoSalon;
    //Constructor
    public SalonCasa(){
        numeroDeTelevisores=0;
        TipoSalon="desconocido";
    }
    public SalonCasa(int valorNumDeTelevisores,String valorTipoSalon){
        numeroDeTelevisores=valorNumDeTelevisores;
        TipoSalon=valorTipoSalon;
   
    }
    //Mètodos set
    public void setNumeroDeTelevisores(int valorNumDeTelevisores){
        numeroDeTelevisores=valorNumDeTelevisores;
    }

    public void setTipoSalon(String valorTipoSalon){
        TipoSalon=valorTipoSalon;
    }
    //Mètodos get
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;

    }

    public String getTipoSalon(){
        return TipoSalon;

    }
}//Clase
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
    //Constructor
    public CocinaCasa(){
        esIndependiente=false;
        numeroDeFuegos=0;
    }
    public CocinaCasa(boolean valorEsIndependiente,int valorNumDeFuegos){
        esIndependiente=valorEsIndependiente;
        numeroDeFuegos=valorNumDeFuegos;
    }
    //Mètodos Set
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente=valorEsIndependiente;
    }

    public void setNumeroDeFuegos(int valorNumDeFuegos){
        numeroDeFuegos=valorNumDeFuegos;
    }
    //Mètodos Get
    public boolean getEsIndependiente(){
        return esIndependiente;
    }

    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }
}public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
//Constructor 1 sin paràmetros
    public Casa(){
        superficie=0.00;
        direccion="";
        salonCasa=new SalonCasa();
        cocina=new CocinaCasa();

    }
    //Constructor 2 con Paràmetros
    public Casa(double valorSuperficie,String valorDireccion,SalonCasa valorSalonCasa,CocinaCasa valorCocina){
    superficie=valorSuperficie;
    direccion=valorDireccion;
    salonCasa=new SalonCasa(valorSalonCasa.getNumeroDeTelevisores(),valorSalonCasa.getTipoSalon());
    cocina=new CocinaCasa(valorCocina.getEsIndependiente(),valorCocina.getNumeroDeFuegos());
    }
    //Mètodos Set
    public void setSuperficie(double valorSuperficie){
        superficie=valorSuperficie;
    }

    public void setDireccion(String valorDireccion){
        direccion=valorDireccion;
    }

    public void setNumeroDeTelevisores(int valorNumDeTelevisores){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        salonCasa.setNumeroDeTelevisores(valorNumDeTelevisores);
    }   

    public void setTipoSalon(String valorTipoSalon){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        salonCasa.setTipoSalon(valorTipoSalon);
    }

    public void setEsIndependiente(boolean valorEsIndependiente){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        cocina.setEsIndependiente(valorEsIndependiente);
    }

    public void setNumeroDeFuegos(int valorNumDeFuegos){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        cocina.setNumeroDeFuegos(valorNumDeFuegos);     
    }
    //otra forma de hacer los mètodos de los objetos salonCasa y Cocina
    public void setSalonCasa(SalonCasa valorSalonCasa){
        salonCasa=valorSalonCasa;
    }

    public void setCocinaCasa(CocinaCasa valorCocina){
        cocina=valorCocina;
    }

    //Mètodos get
    public double getSuperficie(){
        return superficie;
    }

    public String getDireccion(){
        return direccion;
    }

    public int getNumeroDeTelevisores(){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        return salonCasa.getNumeroDeTelevisores();

    }

    public String getTipoSalon(){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        return salonCasa.getTipoSalon();

    }

    public boolean getEsIndependiente(){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        return cocina.getEsIndependiente();
    }

    public int getNumeroDeFuegos(){//este mètodo se puede hacer pero por el momento lo harè como los otros mètodos
        return cocina.getNumeroDeFuegos();
    }
    //otra forma de hacer los mètodos de los objetos salonCasa y Cocina
    public SalonCasa getSalonCasa(){
        return salonCasa;
    }

    public CocinaCasa getCocinaCasa(){
        return cocina;
    }
}

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Todavía no probé tu código pero he visto que vos usa get cuando es boolean  en caso de boolean se usa is seria así
Código: [Seleccionar]
//Métodos Get
    public boolean isEsIndependiente(){
        return esIndependiente;
    }
Pero no se si ese nomas es el error tenes que probar

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
yo he usado la sintaxis que he aprendido durante el curso para declarar mètodos get, esta clase es de un ejercicio anterior me la han revisado ya y el còdigo està bien, despùes cuando tengas un tiempo revisa el còdigo prueba lo que te dije y hazme saber....gracias

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola es verdad que en algunos entornos se usa is en lugar de get, pero ni una cosa ni otra son obligatorias. En el curso se usa get, pero si en una empresa por ejemplo se usa is pues usaremos is.

Respecto a lo que plantea nani

Citar
quita los constructores con parámetros de las clases SalonCasa y CocinaCasa, despùes compila la clase Casa y dime que resultado obtienes

Si quitas los constructores obtendrás un error. ¿Por qué? Porque desde la clase Casa estás invocando a los constructores a través de sentencias como esta:

salonCasa=new SalonCasa(valorSalonCasa.getNumeroDeTelevisores(),valorSalonCasa.getTipoSalon());

Si has quitado el constructor, cuando llegue a esta sentencia buscará el constructor, no lo encontrará y lanzará un error diciendo precisamente que se está invocando un constructor que no se encuentra...

Salu2

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
gracias por tu respuesta, si lees desde el inicio te daràs cuenta por que puse este ejercicio como ejemplo, quisiera que me respondieras si estoy equivocada o no en la respuesta al ejercico que publiquè en este tema si tienes un time lee el tema desde el inicio y veràs a que me refiero por lo que me dices tù creo que no me equivoquè en mi respuesta.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola nani Lorenzo te dio una respuesta que veo correcta, no sé si te quedan más dudas...

Salu2

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
bueno en ese ejercicio tengo muchas dudas todavía porque tuve errores y no por lo que me dice Lorenzo...

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola si te quedan dudas pregúntalas e intentaremos aclararlas  :D

Salu2

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas Nani, si tienes dudas adjunta la parte de código que te las genera y seguro que con los fenomenos que hay por aquí te las resuelven.

Pero con código asi se ve mas claro todo. ;)

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
hey hola, ya tengo hasta pena hablar siempre de lo mismo  :D, Lorenzo probaste el còdigo como te dije? yo tengo duda en esto:b) ¿Es posible llamar a un método externo de un objeto “A” que ha sido declarado y creado pero cuyo constructor está vacío?
porque yo trate de hacerlo y me dio error.....eso es lo que quiero q compruebes con el codigo que te puse, que revises bien el còdigo y lo pruebes, el còdigo no tiene errores y los tipos coinciden , el error dà cuando trabajamos con el objeto cuyo constructor està vacìo.

 

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