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 - Andromon

Páginas: [1]
1
Sí correcto, me parece mucho mejor esa forma que dices de enfocarlo como dos decisiones separadas, cada una para una cosa, queda mucho más claro y como dices más escalable.

Un saludo y gracias.

2
Hola, primero, respecto a lo de las mayúsculas, tienes toda la razón, era consciente de ello, pero admito que fue por la rapidez de que simplemente copié el título y quedó así en mayúsculas, y lo puse directamente...

Debería para practicar hacer un pequeño programa de Java que me lo convierta.  ;D Aunque eso sabría hacerlo más bien y más rápido por ahora con JavaScript...

Entonces, el código simplemente lo arreglo añadiéndole a Persona también este constructor, ¿no?

Código: [Seleccionar]
    public Persona(String valorNombre) {
        nombre = valorNombre;
        apellidos = "Desconocidos";
        edad = 0;
        casado = false;
        numeroDocumentoIdentidad = "Desconocido";   
    }

Por aprovechar el tema, entiendo que si tuviese por ejemplo este otro constructor, en vez de ese:

Código: [Seleccionar]
    public Persona(String valorNombre, String valorApellidos) {
        nombre = valorNombre;
        apellidos = valorApellidos;
        edad = 0;
        casado = false;
        numeroDocumentoIdentidad = "Desconocido";   
    }

El objeto de tipo Persona, sólo lo puedo crear si utilizo los dos get para cada parámetro de este argumento? (o ninguno claro usando el constructor por defecto, pero digo con este):

Código: (Sería entonces) [Seleccionar]
conductorTaxi = new Persona(objetoPersona.getNombre(), objetoPersona.getApellidos());
Código: (No sería correcto) [Seleccionar]
conductorTaxi = new Persona(objetoPersona.getNombre());
Necesariamente al crear un objeto entiendo tengo que utilizar alguno de los constructores de los que disponga, y entonces, tengo que pasarle como argumentos necesariamente el mismo número de parámetros que tenga ese constructor, no?


3
Correcto toni, gracias, son tan parecidos los nombres que realmente no caí en que eran distintos... Y no terminaba de verle ningún sentido, ahora sí realmente.

4
Hola, una pregunta sencilla y quizás muy básica, pero, en este código:

Código: [Seleccionar]
    switch (numeroDeDepositosGrupo) {
            case 1: System.out.println ("Un grupo ha de tener más de un depósito"); break;
           
            case 2:
            deposito1 = new Deposito(); /*Al crear el objeto automáticamente se llama al constructor del mismo, en este caso sin parámetros. ESTO ES EJEMPLO DE SINTAXIS DE CREACIÓN DE UN OBJETO, EN ESTE CASO DENTRO DE OTRO */
            deposito2 = new Deposito();       
            numeroDepositosGrupo = 2;
            break;

            case 3: deposito1 = new Deposito(); deposito2 = new Deposito(); deposito3 = new Deposito();
            numeroDepositosGrupo = 3;
            break;

            default: System.out.println ("No se admiten más de tres depósitos");
            //Esto no evita que se cree el objeto.
            break;
        } //Cierre del switch
    } //Cierre del constructor

¿Por qué para cada case vuelve a reestablecer la variable numeroDepositosGrupo?

Si estamos en case 2 , ¿no sabe ya que numeroDepositosGrupo = 2? Si no se pusiera numeroDepositosGrupo en ninguna cláusula case, ¿variaría el número original tomado en switch(numeroDepositosGrupo) ? Que no termino de verlo claro, gracias.

Para asegurar, esto es lo que yo pregunto si no es correcto:

Código: [Seleccionar]
    switch (numeroDeDepositosGrupo) {
            case 1: System.out.println ("Un grupo ha de tener más de un depósito"); break;
           
            case 2:
            deposito1 = new Deposito(); /*Al crear el objeto automáticamente se llama al constructor del mismo, en este caso sin parámetros. ESTO ES EJEMPLO DE SINTAXIS DE CREACIÓN DE UN OBJETO, EN ESTE CASO DENTRO DE OTRO */
            deposito2 = new Deposito();       
            break;

            case 3: deposito1 = new Deposito(); deposito2 = new Deposito(); deposito3 = new Deposito();
            break;

            default: System.out.println ("No se admiten más de tres depósitos");
            //Esto no evita que se cree el objeto.
            break;
        } //Cierre del switch
    } //Cierre del constructor

5
Hola, no consigo utilizar el ejemplo que se propone porque me da un error, seguro que será cualquier detalle, pero no caigo la verdad, por si me pueden ayudar...

Código: (El error) [Seleccionar]
public TaxiCond(Taxi objetoTaxi, Persona objetoPersona) {
        vehiculoTaxi = new Taxi(objetoTaxi.getMatricula(),objetoTaxi.getDistrito(),
        objetoTaxi.getTipoMotor());
        conductorTaxi = new Persona(objetoPersona.getNombre());
    }

Dice: java.lang.String

Código: (Mi clase persona) [Seleccionar]
public class Persona {
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private String numeroDocumentoIdentidad;

    public Persona() {
        nombre = "Desconocido";
        apellidos = "Desconocidos";
        edad = 0;
        casado = false;
        numeroDocumentoIdentidad = "Desconocido";
    }

    public void setNombre(String valorNombre){
        nombre = valorNombre;
    }

    public void setApellidos(String valorApellidos) {
        apellidos = valorApellidos;
    }

    public void setEdad(int valorEdad) {
        edad = valorEdad;
    }

    public void setCasado(boolean valorCasado) {
        casado = valorCasado;
    }

    public void setNumeroDocumentoIdentidad (String valorNumeroDocumentoIdentidad) {
        numeroDocumentoIdentidad = " Numero" + valorNumeroDocumentoIdentidad;
    }

    public String getNombre() {return nombre; }

    public String getApellidos() {return apellidos; }

    public int getEdad() {return edad; }

    public boolean getCasado() {return casado; }

    public String getNumeroDocumentoIdentidad() {return numeroDocumentoIdentidad; }

}

Código: (Mi clase taxi) [Seleccionar]
public class Taxi{
    //variables o atributos
    private String ciudad;
    private String matricula;
    private String distrito;
    private int tipoMotor;
   
    //constructor
    public Taxi() {
        ciudad = "México D.F.";
        matricula = "";
        distrito = "Desconocido";
        tipoMotor = 0;
    }
   
    public Taxi(String valorMatricula, String valorDistrito, int valorTipoMotor) {
        ciudad = "México D.F.";
        matricula = valorMatricula;
        distrito = valorDistrito;
        tipoMotor = valorTipoMotor;
    }
   
    //metodos
        //establecer matricula del Taxi
    public void setMatricula (String valorMatricula){
        matricula = valorMatricula;
    }
        //distrito del Taxi
    public void setDistrito (String valorDistrito){
        distrito = "Distrito" + valorDistrito;
    }
    public void setTipoMotor (int valorTipoMotor){
        tipoMotor = valorTipoMotor;
    }
        //obtener matricula del taxi
    public String getMatricula(){return matricula;}
    public String getDistrito(){return distrito;}
    public int getTipoMotor(){return tipoMotor;}
}

Código: (Mi clase TaxiCond) [Seleccionar]
public class TaxiCond {

    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;

    public TaxiCond() {
        conductorTaxi = new Persona();
        vehiculoTaxi = new Taxi();   
    }
   
    public TaxiCond(Taxi objetoTaxi, Persona objetoPersona) {
        vehiculoTaxi = new Taxi(objetoTaxi.getMatricula(),objetoTaxi.getDistrito(),
        objetoTaxi.getTipoMotor());
        conductorTaxi = new Persona(objetoPersona.getNombre());
    }
       

    public void setMatricula(String valorMatricula) {
        vehiculoTaxi.setMatricula(valorMatricula);}

    public String getDatosTaxiCond() {
        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 datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matricula: "
        + matricula + " Distrito:" + distrito + " Tipo de motor:" + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;
    }
}

Gracias!

6
Hola, no termino de ver si esta pregunta tiene demasiado sentido, o igual está tratado al principio del curso y me lo he saltado o no lo he visto, pero, ¿¿cómo guardo los objetos instancia de una clase que cree con el BlueJ?? Constantemente se me "pierden" al cambiar a otra clase o compilar algo.

¿Es que esos objetos no son "nada"? ¿No quedan en ningún sitio? Lo digo porque imaginemos que estoy haciendo la clase Taxi, y creo varios objetos Taxi, y les doy valores a sus atributos, ¿Eso no hay alguna forma de salvarlo? ¿No es código Java?

Igual es que la explicación viene más adelante en el curso, y todavía no he llegado ahí, o no he entendido algo, pero antes de seguir demasiado de cara a que luego no se vayan a pedir demasiados objetos que ya debería tener creados, me gustaría saber si se puede hacer.

Y si no, si me podéis explicar por qué o qué es lo que no estoy entendiendo.

Un saludo y gracias!

7
Hola, toni_apr tengo una duda respecto a este ejercicio, y como la solución que yo había alcanzado es muy parecida salvo una pequeña diferencia, me gustaría aprovechar el tema del otro compañero arcan.

Código: [Seleccionar]
    public void comprobarDimensiones(){
        if(diametro > 1.4)
            System.out.println("La rueda es para un vehiculo grande");
        else if(diametro > 0.8 && diametro <= 1.4)

A lo mejos es rizar el rizo, pero, por qué en el else if hay que especificar la segunda cláusula diametro <= 1.4 ¿? ¿Entiendo que si Java ha llegado a hasta esa sentencia, es porque previamente diametro > 1.4 ya ha fallado? ¿O es que si las dos fuesen verdaderas, no se ejecutan secuencialmente y ambas se ejecutarían? Es para entender bien cómo funciona el lenguaje.

Quiero decir, yo propondría esto:

Código: [Seleccionar]
    public void comprobarDimensiones(){
        if(diametro > 1.4)
            System.out.println("La rueda es para un vehiculo grande");
        else if(diametro > 0.8)

Vale, luego, por otro lado, la solución que ha dado el compañero me parece buena, y entiendo que es mejor, pero, ¿se pueden anidar los if relativos al grosor dentro de los del diámetro?

En vez de

Código: [Seleccionar]
        if((diametro > 1.4 && grosor < 0.4) || (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25))
            System.out.println("El grosor para esta rueda es inferior al recomendado");
    }

Código: [Seleccionar]
        if (diametro > 1.4){
            System.out.println("La rueda es para un vehículo grande");
            if (grosor < 0.4){
                System.out.println("El grosor para esta rueda es inferior al recomendado");
            }
        }

        else if (diametro > 0.8){
            System.out.println("La rueda es para un vehículo mediano");
            if (grosor < 0.25){
                System.out.println("El grosor para esta rueda es inferior al recomendado");
            }
        }

Si fuese válida y ambas funcionan, de cara a estilos o buenas prácticas de programación o escalabilidad, ¿cuál es mejor?

Un saludo y 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".