Autor Tema: Ejercicio CU00636B ejemplo operadores and y or java  (Leído 5520 veces)

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Ejercicio CU00636B ejemplo operadores and y or java
« en: 08 de Septiembre 2014, 08:48 »
Adjunto mi codigo ... muchas gracias.

Código: [Seleccionar]
/**

 * @author (vancius)
 * @version (v1.0)
 */

public class RUEDA
{
        String tipo;
        double grosor;
        double diametro;
        String marca;
       public RUEDA()
    {
        tipo = "sin especificar";
        grosor = 0.0;
        diametro = 0.0;
        marca = "Sin Espscificar";
    }
    public void setTipoYMarca (String settipo, String setmarca){
        tipo = settipo;
        marca = setmarca;
        } 
    public void SetDiametroYGrosor (double setdiametro, double setgrosor){
        diametro = setdiametro;
        grosor = setgrosor;
    }
    public void ComprobarDimensiones (){
        if (diametro > 1.4){
            System.out.println("la rueda es para un vehiculo grande");
        }
        else if (diametro <= 1.4 && diametro >0.8){
            System.out.println("la rueda es para un vehiculo mediano");
        }
        else {
            System.out.println("la rueda es para un vehiculo pequeño");
        }
        //2
        if (diametro > 1.4 && grosor <0.4 || diametro <= 1.4 && diametro >0.8 && grosor < 0.25){
            System.out.println("el gorsor para esta rueda es inferior al recomendado");
                }
    }
    public String getTipo (){return tipo;}
    public String getMarca () {return marca;}
    public double getgrosor () {return grosor;}
    public double getdiametro () {return diametro;}
        }


es posible hacer un metodo función que me devuelva varios datos a la vez sin tener que me pida asignar parametros?

por ejemplo
public duoble getDiametroYGrosor () {return diametro, grosor;}

es posible hacer que el método devuelva datos sin importar ya sea tipo String, boolean etc

gracias

« Última modificación: 09 de Septiembre 2014, 08:06 por Alex Rodríguez »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ejercicio CU00636B
« Respuesta #1 en: 08 de Septiembre 2014, 17:52 »
Bueno, empiezo comentándote cosas que veo en tu ejercicio:

  • El nombre de la clase se suele expresar en camel case(Primera letra de cada palabra en mayúsculas, las demás en minúsculas), tu has puesto el nombre de la clase todo en mayúsculas, por consenso esto no es recomendable.
  • En el método "SetDiametroYGrosor" la primera palabra suele llevar la primera letra minúsculas y las demás palabras  en camel case
  • en el método "ComprobarDimensiones" te pasa exactamente igual que en el punto anterior.

A continuación resolveré tus dudas:

Citar
es posible hacer un metodo función que me devuelva varios datos a la vez sin tener que me pida asignar parametros?

por ejemplo
public duoble getDiametroYGrosor () {return diametro, grosor;}

Por cierto el tipo duoble, no existe, a menos que lo hayas creado tu...

No, no es posible, la única forma de devolver varios valores sería con un array, un objeto de tipo collection, o un objeto creado por ti.  Por ejemplo:

Varios valores con un array
Código: [Seleccionar]
public double[] getDiametroYGrosor () {
       double[] valores=new double[2];
       valores[0]=diametro;
       valores[1]=grosor;
       return valores;
}

Varios valores con un objeto de tipo Collection:
Código: [Seleccionar]
public List<double> getDiametroYGrosor () {
       List<double> valores=new ArrayList<>();
       valores.add(diametro);
       valores.add(grosor);
       return valores;
}

Varios valores con un objeto creado por nosotros.
Código: [Seleccionar]
public Valores  getDiametroYGrosor () {
        Valores aux=new Valores(diametro,grosor);
         return aux;
}

Citar
es posible hacer que el método devuelva datos sin importar ya sea tipo String, boolean etc

Eso se puede hacer con Clases Genericas... Clases que pueden trabajar con distintos tipos de objetos. Por ejemplo:

Código: [Seleccionar]
public class DevuelveValor<T>{
       public T devolver(T objeto){
             return objeto;
       }
}

public class TestDevuelveValor{
        public static void main(String[] arg){
              //usando clase genérica para devolver cadenas
              DevuelveValor<String> devuelveCadena=new DevuelveValor<>();
              String  valorDevueltoString= devuelveCadena.devolver(new String("hola"));

              //usando clase genérica para devolver Integers
              DevuelveValor<Integer> devuelveInteger=new DevuelveValor<>();
              Integer valorDevueltoInteger=devuelveInteger.devolver(new Integer(24));
        }
}

Esto lo veras con el tiempo... pero al menos ya tienes una intro. Y bueno te animo a que sigas el curso y poco a poco iras viendo estas cositas, de momento, creo que estudiar estas cosas te puede confundir porque te faltan muchos conceptos por conocer.

Bueno un saludo, espero haber resuelto tus dudas.
« Última modificación: 08 de Septiembre 2014, 17:55 por dongo »

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #2 en: 10 de Septiembre 2014, 06:36 »
Corrijo

Código: [Seleccionar]
public class Rueda
{
        String tipo;
        double grosor;
        double diametro;
        String marca;
       public Rueda()
    {
        tipo = "sin especificar";
        grosor = 0.0;
        diametro = 0.0;
        marca = "Sin Especificar";
    }
    public void setTipoYMarca (String setTipo, String setMarca){
        tipo = setTipo;
        marca = setMarca;
        } 
    public void setDiametroYGrosor (double setDiametro, double setGrosor){
        diametro = setDiametro;
        grosor = setGrosor;
    }
    public void comprobarDimensiones (){
        if (diametro > 1.4){
            System.out.println("la rueda es para un vehiculo grande");
        }
        else if (diametro <= 1.4 && diametro >0.8){
            System.out.println("la rueda es para un vehiculo mediano");
        }
        else {
            System.out.println("la rueda es para un vehiculo pequeño");
        }
        //2
        if (diametro > 1.4 && grosor <0.4 || diametro <= 1.4 && diametro >0.8 && grosor < 0.25){
            System.out.println("el gorsor para esta rueda es inferior al recomendado");
                }
    }
    public String getTipo (){return tipo;}
    public String getMarca () {return marca;}
    public double getGrosor () {return grosor;}
    public double getDiametro () {return diametro;}
        }


Mil gracias por tus aclaraciones, son muy útiles y me motivan a seguir estudiando. Las aplicare a medida que avance en el curso.


por cierto en la pregunta mencione el tipo "duoble", en realidad quería decir "double", perdon ;) . De igual manera entendí todo lo que me querías    decir.
« Última modificación: 10 de Septiembre 2014, 06:43 por jaivcaba »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #3 en: 10 de Septiembre 2014, 08:34 »
Hola, el código está correcto pero deberías mejorar esto:

En vez de dos métodos setTipoYMarca y setDiametroYGrosor deberías tener cuatro métodos. Es decir, debe haber un método get y un método set para cada atributo. No debes usar un solo método set para dos atributos al mismo tiempo.

También cuando declares atributos debes declararlos como private, es decir, private String tipo; en lugar de String tipo;

Esto para todos los atributos
 
Fíjate en cómo está hecho aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1214

Saludos
Responsable de departamento de producción aprenderaprogramar.com

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #4 en: 10 de Septiembre 2014, 18:01 »
Hola a todos , aporto mi solucion a ver si me podeis ayudar un poco corrigiendolo , por cierto tengo una duda , ¿ no habria que poner un limite de diametro y de grosor ? o ¿se limitará debido al tipo double?

como siempre gracias y un fuerte abrazo!!

Código: [Seleccionar]


//class

public class Rueda

{
        //atributos   

    String tipo ;
    double grosor;
    double diametro;
    String marca;

    //constructor
    public Rueda ()
    {
        tipo = "";
        grosor = 00.00;
        diametro = 00.00;
        marca = "";

    }
    //cierre constructor

    //metodos de procedimiento

    public void setTipo (String valueTipo)
    {
        valueTipo = tipo;
    }

    public void setMarca (String valueMarca)
    {
        valueMarca = marca;
    }

    public void setDiametro ( double valueDiametro)
    {
        valueDiametro = diametro;
    }

    public void setGrosor (double valueGrosor )
    {
        valueGrosor  = grosor ;
    }

    public void comprobarDimensiones (double valueDiametro,double valueGrosor)//pedirá diametro y grosor
    {
        if (valueDiametro >1.4 )

        {
            System.out.print("La rueda es para un vehículo grande");

            if (valueGrosor <0.4)//condicion de grosor dentro de diametro >1.4
            {
                System.out.print(" ,¡¡precaución!! , el grosor para esta rueda es inferior al recomendado");
            }
        }
        else

        if (valueDiametro <= 1.4 && valueDiametro >=0.8)
        {
            System.out.print("La rueda es para un vehículo mediano");
            if (valueGrosor <0.25)//condicion de grosor dentro de diametro entre 1.4 y 0.8 inclusives
            {
                System.out.print(" ,¡¡precaución!! , el grosor para esta rueda es inferior al recomendado");
            }

        } 
        else
        {

            System.out.print("La rueda es para un vehículo pequeño");

        }

    }
   
    //metodos de funcion

     public String getvalueTipo ( )
    {

        return tipo ;

    }

    public String getvalueMarca ( )
    {

        return marca ;

    }

    public double getDiametro ( )
    {

        return diametro ;

    }

    public double getGrosor ( )
    {

        return grosor ;

    }
}
                          //cierre de clase


« Última modificación: 10 de Septiembre 2014, 18:32 por jga »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #5 en: 10 de Septiembre 2014, 22:32 »
Hola jga
Veo tu ejercicio  CU00636B
Al verlo, supongo que no has probado su funcionamiento.
Todos nuestros programas hacen algún trabajo, y al terminarlo comprobamos que funciona correctamente y hace lo esperado.
Nosotros mismos, cada uno de nosotros somos los primeros en comprobar el funcionamiento de nuestros programas.

Te comento detalles de tu código a mejorar:

Al declarar los atributos de la clase,

Citar
     //atributos   

    String tipo ;
    double grosor;
    double diametro;
    String marca;

Debes declararlos con el modificador private

private String tipo ;
private  double grosor;
private  double diametro;
private  String marca;

Los atributos de una clase (salvo raras excepciones) siempre se declaran private (quiere decir que son accesibles solo a la clase que los declara)

Cada atributo tendrá dentro de la clase un método set y otro get
Tu has creado los métodos, pero su contenido tiene los valores cambiados

Citar
public void setTipo (String valueTipo)
    {
        valueTipo = tipo;
    }

Esto 'valueTipo = tipo;' significa
Haz que valueTipo tenga el mismo valor que tipo
y nosotros queremos lo contrario
tipo = valueTipo

'tipo' es el atributo de la clase al que queremos dar un valor, y se lo damos mediante la variable 'valueTipo'

Los otros métodos set

public void setMarca (String valueMarca)
public void setDiametro ( double valueDiametro)
public void setGrosor (double valueGrosor )

también debes modificarlos

Los métodos get están todos bien

Y finalmente el método para comprobar las dimensiones, está bien en un 90 %
Controlas con el if los tamaños de la rueda para vehículo grande, mediano y pequeño.
Pero, si bien en el tamaño grande y mediano controlas el grosor, no lo haces en el pequeño.

Esto deberías arreglarlo con el código apropiado.

Nota: Cuando tengas el programa terminado, o mejor, cuando termines un método, deberías comprobar que funciona bien, ¿Como?
Compilas la clase. En la ventana de Bluej haces botón derecho sobre la clase Rueda y escoges
new Rueda()
Aceptas
Y aparecerá abajo un objeto nuevo de tipo Rueda, si haces clic con el botón derecho tendrás diponibles todos los métodos que has escrito. Escoges el que quieres probar, rellenas los datos y comprueba que funciona bien.

Y ya está, a seguir.

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #6 en: 11 de Septiembre 2014, 07:21 »
Gracias por las recomendaciones.

Código: [Seleccionar]
/**

 * @author (vancius)
 * @version (v1.0)
 */

public class Rueda
{
        private String tipo;
        private double grosor;
        private double diametro;
        private String marca;
       public Rueda()
    {
        tipo = "sin especificar";
        grosor = 0.0;
        diametro = 0.0;
        marca = "Sin Espscificar";
    }
    public void setTipo (String setTipo){
        tipo = setTipo;
    } 
    public void setMarca (String setMarca){
        marca = setMarca;
    }
    public void setDiametro (double setDiametro){
        diametro = setDiametro;
    }
    public void setGrosor (double setGrosor){
        grosor = setGrosor;
    }
    public void comprobarDimensiones (){
        if (diametro > 1.4){
            System.out.println("la rueda es para un vehiculo grande");
        }
        else if (diametro <= 1.4 && diametro >0.8){
            System.out.println("la rueda es para un vehiculo mediano");
        }
        else {
            System.out.println("la rueda es para un vehiculo pequeño");
        }
        //2
        if (diametro > 1.4 && grosor <0.4 || diametro <= 1.4 && diametro >0.8 && grosor < 0.25){
            System.out.println("el gorsor para esta rueda es inferior al recomendado");
                }
    }
    public String getTipo (){return tipo;}
    public String getMarca () {return marca;}
    public double getGrosor () {return grosor;}
    public double getDiametro () {return diametro;}
        }

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:Ejercicio CU00636B ejemplo operadores and y or java
« Respuesta #7 en: 11 de Septiembre 2014, 15:45 »
Gracias por los consejos , los seguiré al pie de la letra , un abrazo.
« Última modificación: 11 de Septiembre 2014, 16:25 por César Krall »

 

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