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 - Fco. Gómez

Páginas: [1]
1
Muchas gracias Toni_apr

Me parece que tengo que hacer una pausa y releer todo hasta el momento antes de proseguir.
Comprendo lo que me has comentado y voy a recapitular.
Además durante unos días tendré que estar off-line y centrarme en la "avalancha de marrones" que tengo que solucionar.
Nos leemos tras el paréntesis forzoso.
Muchisimas gracias por la ayuda.


2
Aprender a programar desde cero / Re:Ejercicio CU00641B
« en: 30 de Enero 2015, 09:12 »
Buenas de nuevo:
A riesgo de ser pesado, creo que necesito aclararme mas en detalle, si es posible.
Sí, el metodo set es el que modifica el valor del atributo correspondiente.
Eso está claro. ya lo hemos visto y no me plantea dudas.
Pero cuando hacemos un método set de un objeto, como es el caso, y en ese objeto (dentro) tenemos mas de un atributo, ...
¿qué atributo modifica el método set ?
El primero ? todos los que tenga el objeto al que hace referencia ?
 ???
Eso es lo que no acabo de entender.

Por otro lado al hilo del segundo constructor, en el ejercicio decía :
Citar
Define un constructor para la clase Casa que establezca a unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto.

Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa y otro de tipo CocinaCasa.

En mi primera propuesta de solución solo había definido el primer constructor.
Luego me di cuenta que me habia saltado el segundo que se pedía, el que lleva los parámetros.
Y que es el que me da error al compilar.
Y ahí estoy atascado.
Adjunto el código...
Código: [Seleccionar]
/* Ejemplo - aprendeaprogramar.com */
//Esta clase representa datos de éste objeto Casa y de otros relacionados.
public class Casa { // El nombre de la Clase
    // comenzamos por las propiedades, atributos o campos de la clase
    private double superficie ;
    private String direccion;
    private SalonCasa salonKasa ; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
    private CocinaCasa cocinaKasa; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
   
    //Constructor: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
    public Casa() {
        superficie = 0      ;
        direccion = "Desconocido";
        salonKasa = new SalonCasa () ; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
        cocinaKasa = new CocinaCasa (); // pongo K para distinguirlo mejor ( con K son los de ésta clase )r
    } //Cierre del constructor … el código continúa …

    // constructor 2
    public Casa( double superficie, String direccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = getSuperficie() ;
        direccion = getDireccion() ;
        // creamos un objeto salonKasa con los mismos datos de la clase SalonCasa recibidos como parámetros
        salonKasa = new SalonCasa(objetoSalonCasa.getNumeroTelevisores(), objetoSalonCasa.getTipoSalon() );
        cocinaKasa = new CocinaCasa(objetoCocinaCasa.getEsIndependiente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }
   
    // SETTERS
    public void setSuperficie (double valorSuperficie) {  superficie = valorSuperficie;  } //Cierre del método
    public void setDireccion (String valorDireccion) {  direccion = valorDireccion ;  } //Cierre del método
    public void setSalonKasa (SalonCasa valorSalon) {   salonKasa = valorSalon; }   // hay que definir el set correspondiente al atributo
    public void setCocinaKasa (CocinaCasa valorCocina) {   cocinaKasa = valorCocina; }  // hay que definir el set correspondiente al atributo
   
    //////// éstos no están correctos en este momento y ejercicio
    // public void setCasaNumTv(int SCasaNumTv) { salonKasa.setNumeroTelevisores(SCasaNumTv) ;}
    // public void setCasaTipoSalon(String SCasaTipoSalon) { salonKasa.setTipoSalon(SCasaTipoSalon) ;}
    // public void setCasaEsIndependiente( boolean SCasaEsIndependiente ) { cocinaKasa.setEsIndependiente(SCasaEsIndependiente);}
    // public void setCasaNumDeFuegos( int SCasaNumDeFuegos ) { cocinaKasa.setNumeroDeFuegos(SCasaNumDeFuegos);}
   
    //GETTERS
    public double getSuperficie () { return superficie; } //Cierre del método
    public String getDireccion () { return direccion; } //Cierre del método
    public SalonCasa getSalonKasa() { return salonKasa; }  // hay que definir el get correspondiente al atributo
    public CocinaCasa getCocinaKasa() { return cocinaKasa; } // hay que definir el get correspondiente al atributo
   
    public String getDatosTodaLaCasa () {
        int KasaNumTV = salonKasa.getNumeroTelevisores() ;
        String KasaTipoSalon = salonKasa.getTipoSalon() ;
        boolean KasaEsIndependiente = cocinaKasa.getEsIndependiente();
        int KasaNumeroDeFuegos = cocinaKasa.getNumeroDeFuegos();
       
        String datosDeLaKasa = "Los datos de la casa son : Superficie "+ superficie + " Dirección : " + direccion +
        " Numero de Televisores : " + KasaNumTV + " Tipo de Salon : " + KasaTipoSalon +
        " Cocina Independiente : " +KasaEsIndependiente + " Numero de Fuegos : " + KasaNumeroDeFuegos ;
       
        System.out.println( datosDeLaKasa) ;
        return datosDeLaKasa ;
       
    } //Cierre del método
   
} // cierre de la clase

Me ceñiré fielmente de ahora en adelante a lo que se proponga el ejercicio para no liarla.

Pero si no es molestia, os haré preguntas aclaratorias, para tener las bases mas sólidas de cara a poder avanzar con seguridad en las distintas fases del curso.
No es mi intención ser un pesado y os pido disculpas por adelantado.

En una ocasión un profesor que tuve repetía con cierta frecuencia:
"no hay pregunta tonta, solo tontos que no preguntan"



3
Aprender a programar desde cero / Re:Ejercicio CU00641B
« en: 28 de Enero 2015, 17:32 »
Buenas de nuevo:
Volviendo al ejercicio que me quedó incompleto.
Faltaba el segundo constructor, el que le debemos pasar los parámetros.
Será que estoy un poco espeso hoy porque no me compila y no consigo saber que estoy haciendo mal.

Adjunto el codigo:
Código: [Seleccionar]
   
// constructor 2
    public Casa( double superficie, String direccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = getSuperficie() ;
        direccion = getDireccion() ;
        // creamos un objeto salonKasa con los mismos datos de la clase SalonCasa recibidos como parámetros
//---------aquí da el error : 
// constuctor SalonCasa in class SalonCasa cannot be applied to given types;
// required : no arguments
// found:int.java.lang.String
// reason: actual and formal argument lists differ in length
// the operator that you use here cannot be used for the type of value that you are
//using it for. You are either using the wrong type here or the wrong operator.
        salonKasa = new SalonCasa(objetoSalonCasa.getNumeroTelevisores(), objetoSalonCasa.getTipoSalon() );
        cocinaKasa = new CocinaCasa(objetoCocinaCasa.getEsIndependiente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

Casi lo dejo para mañana porque hoy, ... mejor ir a descansar un rato.
Saludos y gracias.

4
Aprender a programar desde cero / Re:Ejercicio CU00641B
« en: 28 de Enero 2015, 16:44 »
Hola MrClassic:


no me quedo claro si debemos imprimir o no la información.
segun leo en tu corrección creo que no.

¿Que crees tu?

Pues realmente no se pedía, así que no deberíamos pintarla. Si bien es cierto que la información no está de mas.
A mi me hace mas "llevadera la solución" al ver el resultado pintado en pantalla.
En otros trabajos que he hecho con otros lenguajes, he usado y quizá abusado de pintar los datos relevantes por pantalla para ver como iban quedando las cosas.
En plan debugger cutre y salchichero, para dejar el código comentado una vez que se ponian en marcha el programa en cuestión.
Para mi es como una especia de autoapoyo, pero sí, no lo habian pedido.
Y lo que es peor...
No he hecho ( con las prisas) cosas que sí habian pedido y que espero corregir entre hoy y mañana.
Antes de que me tiren virtualmente de las orejas.
Un saludo.

5
Aprender a programar desde cero / Re:Ejercicio CU00641B
« en: 28 de Enero 2015, 15:55 »
Buenas de nuevo:
Al hilo de lo que me has indicado ...

Y otros que no deberían estar, son los métodos:
setCasaNumTv, setCasaTipoSalon, setCasaEsIndependiente, setCasaNumDeFuegos y getDatosTodaLaCasa.

Los cuatro primeros manipulan atributos de las clases SalonCasa y CocinaCasa y el último getDatosTodaLaCasa no se pedía en el enunciado del ejercicio, aunque es una buena idea mostrar información de toda la casa.

Correcto, en el enunciado no se pedia ( por lo tanto y de forma estricta, sobra)
La pregunta que me hago es... ( quizá me estoy adelantando en el tiempo...)
¿son correctos?
¿Se haría de ese modo para manipular los métodos de las clases a las que se refieren ?

El hecho de haberlo planteado así, es porque pensé que al crear un nuevo objeto Casa debería poder "introducir valores" para sustituir a los que definimos por defecto.
Mi temor es que esté adelantando acontecimientos, pero como voy haciendo los ejercicios y guardando toda la documentación que puedo, para mi es aclaratorio.
Tanto plantearlo y preguntar como saber si estoy en la senda correcta y entender mejor como se hacen las cosas y se harán en el futuro.

Por otro lado, lo de imprimir, me pareció bien (aunque no se pedía, por lo que pido disculpas) para visualizar el resultado del proceso.
Es pura deformación.

Continúo :
Citar
Los atributos que has nombrado salonKasa y cocinaKasa necesitan como los otros atributos sus setters y sus getters.

El getter del atributo salonKasa, sería así:
public SalonCasa getSalonKasa() { return salonKasa; }

Y el setter sería:
public void setSalonKasa (SalonCasa valorSalon) {
    salonKasa = valorSalon;
}

Te propongo que reformes la clase Casa para que tenga todos los métodos necesarios.

Para probar estas clases sigue las indicaciones que se muestran en esta lección junto a la imagen mostrada.


Entiendo, todos los atributos que se definan, han de tener su setter y getter correspondiente.
Mea culpa, soy un poco desastre, se me pasó por completo.

Pero mi pregunta ahora es :
Con el método set y get de estos atributos,
¿que es lo que estamos haciendo realmente?
Asignamos y recuperamos los valores de los atributos de las clases a las que se refieren.
O simplemente :
en el get recuperamos los valores por defecto que tienen al crear el nuevo objeto SalonCasa
Y en el set? Qué hace ese set exactamente ???
Todavía no acabo de verlo.
Igual es que estoy un poco espeso o quizá quiera ir mas rápido de lo que debo a éstas alturas.
Espero con impaciencia las aclaraciones.
Muchas gracias y perdón por el rollo.

P.D.:
Acabo de ver otro error en el código ( por omisión) en la clase Casa
Lo corrijo y pondré el código en cuanto lo tenga.
Pido disculpas por mi olvido.
Un saludo.

6
Buenas, tras unos días ausente por motivos laborales, retomamos los temas.
A ver si ahora se me tranquilizan las tareas.....
Pongo la solución a mi ejercicio a ver que os parece.
Clase Casa
Código: [Seleccionar]
/* Ejemplo - aprendeaprogramar.com */
//Esta clase representa datos de éste objeto Casa y de otros relacionados.
public class Casa { // El nombre de la Clase
    // comenzamos por las propiedades, atributos o campos de la clase
    private double superficie ;
    private String direccion;
    private SalonCasa salonKasa ; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
    private CocinaCasa cocinaKasa; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
   
    //Constructor: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
    public Casa() {
        superficie = 0      ;
        direccion = "Desconocido";
        salonKasa = new SalonCasa () ; // pongo K para distinguirlo mejor ( con K son los de ésta clase )
        cocinaKasa = new CocinaCasa (); // pongo K para distinguirlo mejor ( con K son los de ésta clase )r
    } //Cierre del constructor … el código continúa …

    // SETTERS
    public void setSuperficie (double valorSuperficie) {  superficie = valorSuperficie;  } //Cierre del método
    public void setDireccion (String valorDireccion) {  direccion = valorDireccion ;  } //Cierre del método
   
    public void setCasaNumTv(int SCasaNumTv) { salonKasa.setNumeroTelevisores(SCasaNumTv) ;}
    public void setCasaTipoSalon(String SCasaTipoSalon) { salonKasa.setTipoSalon(SCasaTipoSalon) ;}
   
    public void setCasaEsIndependiente( boolean SCasaEsIndependiente ) { cocinaKasa.setEsIndependiente(SCasaEsIndependiente);}
    public void setCasaNumDeFuegos( int SCasaNumDeFuegos ) { cocinaKasa.setNumeroDeFuegos(SCasaNumDeFuegos);}
   
    //GETTERS
    public double getSuperficie () { return superficie; } //Cierre del método
    public String getDireccion () { return direccion; } //Cierre del método
    public String getDatosTodaLaCasa () {
        int KasaNumTV = salonKasa.getNumeroTelevisores() ;
        String KasaTipoSalon = salonKasa.getTipoSalon() ;
        boolean KasaEsIndependiente = cocinaKasa.getEsIndependiente();
        int KasaNumeroDeFuegos = cocinaKasa.getNumeroDeFuegos();
       
        String datosDeLaKasa = "Los datos de la casa son : Superficie "+ superficie + " Dirección : " + direccion +
        " Numero de Televisores : " + KasaNumTV + " Tipo de Salon : " + KasaTipoSalon +
        " Cocina Independiente : " +KasaEsIndependiente + " Numero de Fuegos : " + KasaNumeroDeFuegos ;
       
        System.out.println( datosDeLaKasa) ;
        return datosDeLaKasa ;
       
    } //Cierre del método
   
} // cierre de la clase

Ahora la clase CocinaCasa :
Código: [Seleccionar]
public class CocinaCasa { // El nombre de la Clase
    // comenzamos por las propiedades, atributos o campos de la clase
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //Constructor:
    public CocinaCasa() {
        esIndependiente = false ;
        numeroDeFuegos = 0;
    } //Cierre del constructor … el código continúa …

    //Método para ESTABLECER el numeroTelevisores
    public void setEsIndependiente (boolean valorEsIndependiente) {
        esIndependiente = valorEsIndependiente; // el número de televisores
    } //Cierre del método
    //Método para establecer el tipo de salon
    public void setNumeroDeFuegos (int valorNumeroDeFuegos) {
        numeroDeFuegos = valorNumeroDeFuegos; //El tipo de salon
    } //Cierre del método

    //Método para OBTENER el numero de televisores
    public boolean getEsIndependiente () { return esIndependiente; } //Cierre del método
    //Método para obtener el tipo de salon
    public int getNumeroDeFuegos () { return numeroDeFuegos; } //Cierre del método
   
} // cierre de la clase

Y por último la clase SalonCasa :
Código: [Seleccionar]
public class SalonCasa { // El nombre de la Clase
    // comenzamos por las propiedades, atributos o campos de la clase
    private int numeroTelevisores;
    private String tipoSalon;
   
    //Constructor:
    public SalonCasa() {
        numeroTelevisores = 0      ;
        tipoSalon = "Desconocido";
    } //Cierre del constructor … el código continúa …

    //Método para ESTABLECER el numeroTelevisores
    public void setNumeroTelevisores (int valorNumeroTelevisores) {
        numeroTelevisores = valorNumeroTelevisores; // el número de televisores
    } //Cierre del método
    //Método para establecer el tipo de salon
    public void setTipoSalon (String valorTipoSalon) {
        tipoSalon = valorTipoSalon; //El tipo de salon
    } //Cierre del método

    //Método para OBTENER el numero de televisores
    public int getNumeroTelevisores () { return numeroTelevisores; } //Cierre del método
    //Método para obtener el tipo de salon
    public String getTipoSalon () { return tipoSalon; } //Cierre del método
   
} // cierre de la clase

Ha compilado sin errores ( al final, y despues de corregir unos cuantos, claro)
He probado y todo me ha funcionado.

Reflexión que me hago :
Un poco liosa al menos de momento, lo de la nomenclatura.
Supongo que habrá un modo mejor que el que he usado yo para organizar o dar los nombres a las clases, objetos, etc y que no se convierta en un galimatías el código.
O tal vez yo me estoy liando solo ?
Supongo que será por los dias que he estado "desconectado".
Un saludo y gracias.

7
Completamente de acuerdo y tomo muy buena nota.
Lo cierto es que no estaba completamente seguro de hacerlo así.
Vamos que dudaba si hacerlo o no, y al final decidí que no. ( mal hecho )
Así que lo planteé de ese modo que hemos visto. ( mi trampa )
Pero coincido con el planteamiento que indicas a pies juntillas.
Un saludo y gracias


8
Buenas de nuevo:
Al ir avanzando en los diferentes capítulos o apartados, aprecio algo que no habia encontrado hasta ahora.
Al menos en otras aproximaciones que he hecho hacia la programación orientada a objetos imperaba un cierto caos a la hora de meter código.
Aquí, la insistencia en el método y orden a la hora de trabajar es algo de agradecer.
Me recuerda al "rigido" planteamiento de Cobol, pero que a pesar de sus particularidades de redacción, es muy facil de revisar pasado el tiempo.
Este enfoque, hará que los programas sean faciles de leer y de reutilizar en el futuro a medida que vayamos mejorando el manejo del lenguaje.
Es muy positivo tanto para el que comienza como para el que se recicla como es mi caso.
Un saludo.


9
Buenas a todos:
Soy nuevo en el foro.
Llevo tiempo sin programar y me siento "un poco oxidado".
Por un lado ya me costó un rato encontrar el hilo de presentación.
Espero no haberme equivocado y que sea éste.
Os cuento un poco.
Mis comienzos fueron hace mucho tiempo con un poco de Basic ¡compilado! (ojo) para pasar de lleno a formarme en COBOL.
Luego Dbase, clipper, foxpro, algo de VisualBasic, etc. todo enfocado a solucionar "pequeños" problemas del día a día.
Todo programación estructurada.
Ahora quiero empezar desde cero con Java como paso previo a desarrollar algunas ideas que tengo para dispositivos móviles.
Por lo que llevo visto en unos pocos días, el curso es muy bueno.
Ya me empiezo a enterar un poco de que va lo de la programación orientada a objetos,
algo que me parecia un poco "rollo" y que no acababa de entender.
Haceis un buen trabajo.
Muchas gracias y siento el retraso en la presentación.
Un saludo

10
Buenas:
Adjunto el código del ejercicio, las pruebas me han funcionado y siguiendo la línea del curso, entiendo que es mejor ceñirse a la resolución de las cuestiones planteadas
paso a paso para que no nos lleve a confusiones.
No se si mi planteamiento es la mejor de las soluciones.
Pero un antiguo profesor me indicó que si la redacción es clara y las pruebas son correctas, tenemos el problema resuelto al menos en un porcentaje muy elevado.
Un saludo

Código: [Seleccionar]
public class Rueda
{
    // instance variables - replace the example below with your own
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
         /**
     * Constructor for objects
     */
    public Rueda()
    {
        // initialise instance variables
        tipo = "";
        grosor = 0;
        diametro = 0;
        marca = "";

    }
    /* SETTERS */
    public void setTipo (String valorTipo)      { tipo = valorTipo;   }
    public void setGrosor(double valorGrosor)   { grosor = valorGrosor; }
    public void setDiametro (double valorDiametro) { diametro = valorDiametro; }
    public void setMarca(String valorMarca)     { marca = valorMarca; }

    /* GETTERS */
    public String getTipo()       { return tipo; }
    public double getGrosor()    { return grosor; }
    public double getDiametro()            { return diametro;    }
    public String getMarca() { return marca;    }
   
    /*Metodo tipo procedimiento*/
    public void comprobarDimensiones() {
        if (diametro > 1.4 ) {
             System.out.println("La rueda es para un vehículo grande" );
            }
            // diametro mayor o igual que 1,4 o mayor que 0.8
            else if (diametro <= 1.4 || diametro > 0.8 ) {
                System.out.println("La rueda es para un vehículo mediano" );
                }
            else {
                 System.out.println("La rueda es para un vehículo pequeño" );
                }
        if (diametro > 1.4 && grosor < 0.4 ) {
             System.out.println("El grosor de la rueda es inferior al recomendado (1)" );
            }
            else if (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
                System.out.println("El grosor de la rueda es inferior al recomendado (2)" );
        }
    }
}

11
Buenos días:
Antes de nada muchas gracias por el curso.
Al hilo de éste ejercicio, yo tampoco he creado los Set y Get para las variables de trabajo.
Por deformación, malas prácticas y málos hábitos. Mea culpa.
Sin embargo, me pregunto si realmente es necesario para la claridad del código ?
Dado que solo se utilizan en el método solicitado, entiendo la creación del set correspondiente para que se les asignen valor por defecto, inicializándolas a cero.
Pero crearles un método Get, "no lo veo tan claro".
A escepción de hacerlo para crear el hábito y así usemos unas pautas "uniformes" para el curso.
No es mi intención criticar, ojo, nada mas lejos.
Solo aclarar aún mas éstos aspectos.
Hace tiempo que no "pico tecla", estoy un poco oxidado, con telarañas y como indico, con malos hábitos.
Muchas gracias.

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