Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jaivcaba en 08 de Septiembre 2014, 08:48

Título: Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: jaivcaba 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

Título: Re:Ejercicio CU00636B
Publicado por: dongo en 08 de Septiembre 2014, 17:52
Bueno, empiezo comentándote cosas que veo en tu ejercicio:


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.
Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: jaivcaba 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.
Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: César Krall 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
Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: jga 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


Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: toni_apr 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.
Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: jaivcaba 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;}
        }
Título: Re:Ejercicio CU00636B ejemplo operadores and y or java
Publicado por: jga en 11 de Septiembre 2014, 15:45
Gracias por los consejos , los seguiré al pie de la letra , un abrazo.