Fecha y hora actual: Jueves 17 Ene 2019 04:47
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.16 - Clases, Código - Java

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.16 - Clases, Código - Java

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Lunes 16 Feb 2009 20:00

Título del mensaje: Curso VB .NET - Tema 1.16 - Clases, Código - Java

Responder citando

Curso de programación VB .NET - Tema 1.16 - Clases, Código - Java

1. Clases, Código Java.

1.1 Objetivos del tema.
Hemos visto los datos en el tema anterior, veamos ahora los métodos.
Veamos ahora los métodos desde Java, y como enfocarlos.

1.2 Introducción.
Los métodos es la zona donde se alberga el código ejecutivo de la clase, código ejecutivo de la clase porque en la captura de datos de las propiedades también hay código, pero es el dedicado a la validación de dicha captura de datos, y en el constructor, en Java son los métodos que coinciden en su nombre con el de la clase, también hay código pero es el encargado de la fase de inicialización de marcar los valores iniciales requeridos en la clase para el objeto.

Si no existiera código en la misma, la clase puede seguir existiendo, pero lo único que podríamos hacer con ella es crear una estructura de datos, más o menos compleja.

1.3 Código en las Funciones, Procedimientos.
Para desarrollar una clase es necesario escribir un "pequeño programa", y ese pequeño programa se compone de una parte pública que son los métodos.

Estos métodos, podemos decir que son el punto de inicio de una acción, una acción que inicia el programa cuando reclama su presencia, es decir podríamos decir que una clase tiene un sin fin de puntos de inicio, cada uno de los métodos, además del principal que es el constructor - si descartamos el código de las propiedades, variables miembro -, por lo tanto, como deseamos crear un código sencillo, estructurado y ordenado, es necesario que el código en el método sea breve.

Para ello el código de un método se compone, o se puede componer, de llamadas a procedimientos y funciones que se llaman desde el mismo.

Además de esa forma un procedimiento puede compartirse por varios métodos, lo que reduce el volumen de código de la clase.

Así que, en el interior de la clase escribiremos todos los procedimientos y funciones que se necesiten para poder desarrollar todas las acciones que sean necesarias en los métodos.

Como esos procedimientos y funciones se quedan en eso, no en métodos, se declararan como privadas, los métodos son públicos.

1.4 Código en los Métodos.
En los métodos, porque los procedimientos no se activan solos, y de alguna manera han de activarse, y eso se consigue mediante la ejecución ordenada del código que hay en cada uno de los métodos.

Hemos dicho que cada método es como un punto de inicio de un programa, pues en ese punto es donde empieza la acción, y ahí es donde a medida que se van ejecutando las líneas de código, se van escribiendo las llamadas a cada procedimiento.

En el ejemplo de clase que sigue, se ha creado un método que visualiza los números primos entre dos valores determinados.

Primero vemos el programa principal.

Código:
package ejemplos;
public class Main
{
   public static void main(String[] args) throws Throwable
   {
      Ejemplo Objeto = new Ejemplo();
      Objeto.NumerosPrimos(8,27);
   }
}


Y éste es el código de la clase.

Código:
package ejemplos;
public class Ejemplo
{
   public void Ejemplo()
   {
   }

   private boolean Primos(int Valor)
   {
   int x = 0;
   int fin = Valor / 2;
   fin = fin +1;
   boolean Result = true;
   if (Valor > 3)
   {
      x= 2;
      while ((x < fin) & (Result))
      {
         Result = Valor % x !=0;
         x = x + 1;
      }
   }
   return Result;
}

public void NumerosPrimos(int Desde , int Hasta)
{
   int x = Desde;
   while (x <= Hasta)
   {
      if (Primos(x))
      {
         System.out.println("El número " + x + " es primo");
      }
      x = x + 1;
   }
}
}


En la clase vemos como disponemos de un procedimiento que es public, es un método, y de una función que es private, es una función, no es un método.

Podemos comprobarlo porque si escribimos en el entorno de programación, "Objeto." lo único que podemos ver es NumerosPrimos.



Ejemplo es el constructor.
En ella vemos como en el método se llama a la función que devolverá cierto o falso en función de que el número sea primo o no.

Código:
if (Primos(x))


El código completo del método.

Código:
public void NumerosPrimos(int Desde , int Hasta)
{
   int x = Desde;
   while (x <= Hasta)
   {
      if (Primos(x))
      {
         System.out.println("El número " + x + " es primo");
      }
      x = x + 1;
   }
}


Si observamos el contenido del método, veremos como no encontramos nada que nos pueda resultar extraño, el código no incorpora nada raro, y no es nada más que un bucle mientras

Código:
while (x <= Hasta)


con una estructura condicional en su interior

Código:
If Primos(x)


para visualizar solo aquellos números que sean primos

Código:
System.out.println("El número " + x + " es primo");


con su correspondiente incremento al final.

Código:
x = x + 1;


Después su utilización en el programa principal será como vemos en el ejemplo.

Código:
package ejemplos;
public class Main
{
   public static void main(String[] args) throws Throwable
   {
      Ejemplo Objeto = new Ejemplo();
      Objeto.NumerosPrimos(8,27);
   }
}


Y su aclaración …

Código:
Ejemplo Objeto = new Ejemplo();


Declaramos el objeto y se instancia.

Código:
Objeto.NumerosPrimos(8,27);


Y ejecutamos el método con el rango que deseamos visualizar.
Nada que nos pueda parecer extraño.
El único cambio está en el exterior.

Código:
public class Ejemplo


Que esta declarado dentro de una clase que se llama Ejemplo.

Y después en el programa principal.

Código:
package ejemplos;
public class Main
{
   public static void main(String[] args) throws Throwable
   {
      Ejemplo Objeto = new Ejemplo();
      Objeto.NumerosPrimos(8,27);
   }
}


1.5 Métodos, procedimientos.
En el ejemplo anterior lo que hemos visto es un método en el formato de procedimiento.

Código:
public void NumerosPrimos(int Desde , int Hasta)
{
   int x = Desde;
   while (x <= Hasta)
   {
      if (Primos(x))
      {
         System.out.println("El número " + x + " es primo");
      }
      x = x + 1;
   }
}


Es uno de los formatos de escritura de un método.
Si observamos el interior, como ya se ha comentado anteriormente, lo que encontramos es una estructura de las ya vistas anteriormente, programación estructurada.

1.6 Métodos, funciones.
Pero si deseamos saber si un número es primo, o es par, el método nos debe devolver un dato, que puede ser cierto o falso, o cualquier otro tipo de dato, que nos indicaría en éste caso, que el número es primo o es par.



Por lo tanto lo que necesitamos es una función que es la estructura con la que se obtiene un dato a partir de la ejecución de la misma, así que podemos convertir la función de antes en un método, basta con cambiarla de private a public:

Código:
public boolean Primos(int Valor)
{
   int x = 0;
   int fin = Valor / 2;
   fin = fin +1;
   boolean Result = true;
   if (Valor > 3)
   {
      x= 2;
      while ((x < fin) & (Result))
      {
         Result = Valor % x !=0;
         x = x + 1;
      }
   }
   return Result;
}


Y así en nuestro programa podremos escribir:

Código:
Sub Main()
   Dim Objeto As Ejemplo = New Ejemplo
   Dim Numero As Integer
   Numero = CInt(Console.ReadLine)

   Select Case Objeto.Primos(Numero)
      Case True
         Console.WriteLine("El {0} es primo", Numero)
      Case Else
         Console.WriteLine("El {0} no es primo", Numero)
   End Select
End Sub


Primos nos devolverá un valor cierto o falso.

Código:
if Objeto.Primos(Numero)


Que se usará en el if para emitir un mensaje u otro.
Esto permite una legibilidad más clara del programa.

Por lo que podemos comprobar que un método puede ser escrito como función o como procedimiento.
Solo hay que utilizar la sintaxis adecuada en cada momento.

1.7 Conclusiones.
Se ha visto en el tema donde se escribe el código dentro de una clase.
Que la clase se compone de procedimientos y funciones, y que cuando estos son públicos, se convierten en métodos.

Que el punto de partida son los métodos que componen la clase.
Y como una clase tiene muchos métodos, en realidad hay muchos puntos de partida.

Pero en realidad, tendríamos que decir que el punto de partida es New y que se ejecuta cada vez que se crea una instancia de la clase, ya que después podríamos decir que la clase, el objeto, queda a la espera de los métodos que sean ejecutados.

Añadamos también que en el interior de los métodos, procedimientos, funciones, lo que tenemos escrito son las estructuras de programación que vimos al inicio de curso.

  • Estructuras lineales.
  • Estructuras alternativas, condicionales
  • Estructuras repetitivas.


Los métodos, son programas pequeños, pequeños programas.

1.8 Ejercicios propuestos.
Mediante el uso de una clase en la que se contemplen métodos adecuados para resolver los siguientes enunciados.

Todos los ejercicios han de resolverse incorporando los métodos adecuados a la misma clase.

1. Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
    Area = PI * R al cuadrado, Longitud = 2 * PI * R .

2. Hallar el área de un triángulo.
    Area = Base por Altura / 2.

3. Introducir un número A y visualizar si es o no primo.
4. Introducir una calificación (entre cero y diez), e imprimir su equivalente alfabético, según la siguiente tabla.
    De 3 -------> M.D.
    Desde 3 y menor que 5 -------> INS.
    Desde 5 y menor que 6 -------> SUF
    Desde 6 y menor que 7 -------> BIEN
    Desde 7 y menor que 9 -------> NOT.
    Desde 9 hasta 10 -------> SOB.

5. Introducir un valor en metros y visualizar su valor en millas terrestres, marinas , yardas y leguas.
    Milla terrestre = 1.609,34 m.
    Milla marina = 1.852,00 m.
    Yarda = 4.190 m.
    Legua = 0,9144 m.

6. Introducir una fecha en pantalla con el formato día, mes y año en tres variables numéricas, validar la fecha y emitir el mensaje de fecha incorrecta o correcta.
7. A partir de los siguientes valores de moneda extranjera, crear una función que a partir de un importe en pesetas devuelva su equivalente en la moneda que se indique.
    1 Franco francés 25,2400 25,3920
    1 Lira 0,0859 0,0864
    1 Libra esterlina 245,5560 247,0340
    1 Dólar americano 150,2280 151,1320
    1 Marco alemán 84,6480 85,1570
    1 Franco suizo 101,7550 102,3670
    1 Florín holandés 5,1170 75,5690
    1 Escudo portugués 0,8262 0,8312


1.9 Solución a los ejercicios propuestos.
1. Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
    Area = PI * R al cuadrado, Longitud = 2 * PI * R .


El contenido de la clase es;
Código:
package tema_16;
public class Ejercicios
{
   public Ejercicios()
   {
   }

   public double AreaCirculo(double Radio)
   {
      return Radio * Radio * 3.1415;
   }

   public double LongitudCirculo(double Radio)
   {
      return Radio * 2 * 3.1415;
   }
}


El programa principal.

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      double radio =22;
      System.out.println("El área de la circunferencia de radio " + radio + " es " + Objeto.AreaCirculo(radio));
      System.out.println("La longitud de la circunferencia de radio " + radio + " es " + Objeto.LongitudCirculo(radio));
   }
}


El resultado :

Código:
init:
deps-jar:
Compiling 1 source file to
compile:
run:

El área de la circunferencia de radio 22.0 es 1520.486
La longitud de la circunferencia de radio 22.0 es 138.226

BUILD SUCCESSFUL (total time: 0 seconds)


2. Hallar el área de un triángulo.
    Area = Base por Altura / 2.


El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public double AreaTriangulo(double Base, double Altura)
{
   return (Base * Altura) / 2;
}


El main del programa :

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      System.out.println("Cálculo del área de un triángulo");
      System.out.println("Area del triangulo " + Objeto.AreaTriangulo(3,4));
      System.out.println();
   }
}


El resultado :

Código:
init:
deps-jar:
compile:
run:

Cálculo del área de un triángulo
Area del triangulo 6.0

BUILD SUCCESSFUL (total time: 0 seconds)


3. Introducir un número A y visualizar si es o no primo.

El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public boolean EsPrimo(int Valor)
{
   int x = 0;
   int fin = Valor / 2;
   fin = fin +1;
   boolean Result = true;
   if (Valor > 3)
   {
      x= 2;
      while ((x < fin) & (Result))
      {
         Result = Valor % x !=0;
         x = x + 1;
      }
   }
   return Result;
}


El programa principal.

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      System.out.println("Visualizar si un número es primo.");
      System.out.println("Para 27 primo es " + Objeto.EsPrimo(27));
      System.out.println();
   }
}


El resultado :

Código:
init:
deps-jar:
Compiling 2 source files to
compile:
run:

Visualizar si un número es primo.
Para 27 primo es false

BUILD SUCCESSFUL (total time: 0 seconds)


4. Introducir una calificación (entre cero y diez), e imprimir su equivalente alfabético, según la siguiente tabla.

    De 3 -------> M.D.
    Desde 3 y menor que 5 -------> INS.
    Desde 5 y menor que 6 -------> SUF
    Desde 6 y menor que 7 -------> BIEN
    Desde 7 y menor que 9 -------> NOT.
    Desde 9 hasta 10 -------> SOB.


El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public String Calificacion(Double Nota)
{
   if ((Nota >= 0 ) & (Nota <=10))
      if (Nota < 3 ) return "M.D.";
         else if (Nota <5) return "Ins";
            else if (Nota <6) return "Suf";
               else if (Nota <7) return "Bien";
                  else if (Nota <9) return "Not";
                     else return "SOB" ;
   else return "Incorrecta";
}


El programa principal sería:

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      System.out.println("Visualizar nota en letras");
      double Nota = 9;
      System.out.println("Calificación " + Nota + " " + Objeto.Calificacion(Nota));
      System.out.println();
   }
}


Y el resultado es:

Código:
init:
deps-jar:
Compiling 2 source files to
compile:
run:

Visualizar nota en letras
Calificación 9.0 SOB

BUILD SUCCESSFUL (total time: 0 seconds)


5. Introducir un valor en metros y visualizar su valor en millas terrestres, marinas , yardas y leguas.

    Milla terrestre = 1.609,34 m.
    Milla marina = 1.852,00 m.
    Yarda = 4.190 m.
    Legua = 0,9144 m.


El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public double Conversion(double Metros, char Unidad)
{
   Ejercicios Objeto = new Ejercicios();
   double Result = 0;
   if (Metros > 0 )
   {
      switch (Unidad)
      {
         case 'M': Result = Metros / 1852.0; break;
         case 'T': Result = Metros / 1609.34; break;
         case 'Y': Result = Metros / 4190; break;
         case 'L': Result = Metros / 0.9144; break;
      }
   }
   return Result;
}


El programa principal sería

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      System.out.println("Conversión de distancias ");
      double Dist = 9000;
      System.out.println("Distancia " + Dist + " " + Objeto.Conversion(Dist,'M'));
      System.out.println();
   }
}


El resultado:

Código:
init:
deps-jar:
Compiling 1 source file to
compile:
run:

Conversión de distancias
Distancia 9000.0 4.859611231101512

BUILD SUCCESSFUL (total time: 0 seconds)


6. Introducir una fecha en pantalla con el formato día, mes y año en tres variables numéricas, validar la fecha y emitir el mensaje de fecha incorrecta o correcta.

El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public boolean Fecha(int D,int M, int A)
{
   boolean Result = false;
   if ((M == 1) | (M==3) | (M==5) | (M==7) | (M==8) | (M==10) | (M==12))
      Result = ((D > 0) & (D < 32));
   else if ((M == 4) | (M==6) | (M==9) | (M==11))
      Result = ((D > 0) & (D < 31));
   else if (M == 2)
   {
   if (A % 100 == 0)
      Result = ((D > 0) & (D < 29)) | ((D == 29) & (A % 400 == 0));
   else Result = (D > 0 & D < 29) | (D == 29 & A % 4 == 0);
   }
   return Result;
}


El programa principal sería

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      Ejercicios Objeto = new Ejercicios();
      System.out.println("Conversión de distancias ");
      double Dist = 9000;
      System.out.println("Distancia " + Dist + " " + Objeto.Conversion(Dist,'M'));
      System.out.println();
   }
}


El resultado :

Código:
init:
deps-jar:
Compiling 2 source files to
compile:
run:

Comprobación de fecha
La fecha es válida

BUILD SUCCESSFUL (total time: 0 seconds)


7. A partir de los siguientes valores de moneda extranjera, crear una función que a partir de un importe en pesetas devuelva su equivalente en la moneda que se indique.

    1 Franco francés 25,2400 25,3920
    1 Lira 0,0859 0,0864
    1 Libra esterlina 245,5560 247,0340
    1 Dólar americano 150,2280 151,1320
    1 Marco alemán 84,6480 85,1570
    1 Franco suizo 101,7550 102,3670
    1 Florín holandés 5,1170 75,5690
    1 Escudo portugués 0,8262 0,8312


El contenido de la clase es el mismo que antes pero le hemos de añadir el siguiente método.

Código:
public double ConversionMoneda(float Pesetas, char Moneda)
{
   double Result ;
   switch (Moneda)
   {
      case ('F') : Result = Pesetas / 25.24 ; break;
      case ('L') : Result = Pesetas / 0.0859 ; break;
      case ('I') : Result = Pesetas / 245.556; break;
      case ('D') : Result = Pesetas / 150.228; break;
      case ('M') : Result = Pesetas / 84.648; break;
      case ('S') : Result = Pesetas / 101.755; break;
      case ('H') : Result = Pesetas / 5.117; break;
      case ('P') : Result = Pesetas / 0.826; break;
      default : Result = 0;
   }
   return Result;
}


El programa principal.

Código:
package tema_16;
public class Main
{
   public static void main(String[] args)
   {
      System.out.println("Conversión de monedas ");
      System.out.println(Objeto.ConversionMoneda(1000,'H'));
      System.out.println();
   }
}


El resultado sería:

Código:
init:
deps-jar:
Compiling 2 source files to
compile:
run:

Conversión de monedas
195.42700801250732

BUILD SUCCESSFUL (total time: 0 seconds)


La clase final sería la siguiente:

Código:
package tema_16;
public class Ejercicios
{
   public Ejercicios()
   {
   }
   public double AreaCirculo(double Radio)
   {
      return Radio * Radio * 3.1415;
   }
   public double LongitudCirculo(double Radio)
   {
      return Radio * 2 * 3.1415;
   }
   public double AreaTriangulo(double Base, double Altura)
   {
      return (Base * Altura) / 2;
   }
   public boolean EsPrimo(int Valor)
   {
      int x = 0;
      int fin = Valor / 2;
      fin = fin +1;
      boolean Result = true;
      if (Valor > 3)
      {
         x= 2;
         while ((x < fin) & (Result))
         {
            Result = Valor % x !=0;
            x = x + 1;
         }
      }
      return Result;
   }

   public String Calificacion(Double Nota)
   {
      if ((Nota >= 0 ) & (Nota <=10))
         if (Nota < 3 ) return "M.D.";
            else if (Nota <5) return "Ins";
               else if (Nota <6) return "Suf";
                  else if (Nota <7) return "Bien";
                     else if (Nota <9) return "Not";
                        else return "SOB" ;
      else return "Incorrecta";
   }
   
   public double Conversion(double Metros, char Unidad)
   {
      double Result = 0;
      if (Metros > 0 )
      {
         switch (Unidad)
         {
            case 'M': Result = Metros / 1852.0; break;
            case 'T': Result = Metros / 1609.34; break;
            case 'Y': Result = Metros / 4190; break;
            case 'L': Result = Metros / 0.9144; break;
         }
      }
   return Result;
   }

   public boolean Fecha(int D,int M, int A)
   {
      boolean Result = false;
      if ((M == 1) | (M==3) | (M==5) | (M==7) | (M==8) | (M==10) | (M==12))
         Result = ((D > 0) & (D < 32));
      else if ((M == 4) | (M==6) | (M==9) | (M==11))
         Result = ((D > 0) & (D < 31));
      else if (M == 2)
      {
      if (A % 100 == 0)
         Result = ((D > 0) & (D < 29)) | ((D == 29) & (A % 400 == 0));
      else Result = (D > 0 & D < 29) | (D == 29 & A % 4 == 0);
      }
      return Result;
   }

   public double ConversionMoneda(float Pesetas, char Moneda)
   {
      double Result ;
      switch (Moneda)
      {
         case ('F') : Result = Pesetas / 25.24 ; break;
         case ('L') : Result = Pesetas / 0.0859 ; break;
         case ('I') : Result = Pesetas / 245.556; break;
         case ('D') : Result = Pesetas / 150.228; break;
         case ('M') : Result = Pesetas / 84.648; break;
         case ('S') : Result = Pesetas / 101.755; break;
         case ('H') : Result = Pesetas / 5.117; break;
         case ('P') : Result = Pesetas / 0.826; break;
         default : Result = 0;
      }
      return Result;
   }
}


Y si en el programa principal escribimos Objeto. veremos:



Que son todos los métodos que hemos escrito.

Si repasamos el tema 12, también podemos ver que no hay diferencia entre sus soluciones y las de éste, excepto lo de poner las funciones como públicas en la clase, en lugar de estáticas.


Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Necesito ayuda en este codigo en lenguaje c

EmmanuelTR9 C, C#, Visual C++ 0 Lunes 08 Oct 2018 18:38 Ver último mensaje
El foro no contiene ningún mensaje nuevo

ayuda ayuda para este codigo que me sale error ...

DiegoBV C, C#, Visual C++ 0 Jueves 02 Ago 2018 23:52 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con TestNG Parametrico en java netbeans

baltigo Java 0 Sábado 30 Jun 2018 01:37 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Dudas al instanciar clases heredadas

MMCA Java 0 Viernes 26 Ene 2018 21:34 Ver último mensaje
El foro no contiene ningún mensaje nuevo

SIMPLIFICANDO CODIGO

JESYMCA JavaScript 0 Domingo 21 Ene 2018 00:00 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,