Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Ey, Java!. :-D
#1

Buenas!.

Está claro que al administrador no le gusta Java. No hay subforo.

Es que tenía una pregunta. Espero que sencilla. A ver si encuentro usuarios de gambas
que usen o les guste "un poco" Java.

Mi intención "siempre" a la hora de aprender un lenguaje es la de llevar a Gambas una idea,
mejorar la programación. Y sobre todo mejorar el aprendizaje de la programación orientada a
objetos.

"A modo sencillo". Si comparásemos un proyecto "básico" de Java con uno de Gambas.
¿ Cuál pensáis que son las diferencias "principales" ?.

Ayer estuve creando otro ejemplo en Java y creando uno similar en Gambas.

Imaginar un proyecto de consola para Gambas.
- Tenemos un Main como la rutina principal

En Java también tenemos un main, solo que este main es "estático".
Si recordamos bien, es un método común a todas las instancias que se cree de esta clase.

Voy a poner el ejemplo que hice ayer hecho en Java. Se trata de "ir" insertando valores en un array,
hasta que este está lleno de valores distintos a cero. Este array está desordenado.

Parece que en Java todo son clases.

Java
  1. package capitulo5tablas;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class InsertarEnTabla {
  6.  
  7.     static int numElem;
  8.     static int[] t = new int[5];
  9.  
  10.     public static void main(String[] args) {
  11.  
  12.         InsercionNoOrdenada(12);
  13.         InsercionNoOrdenada(7);
  14.         InsercionNoOrdenada(45);
  15.         InsercionNoOrdenada(80);
  16.         InsercionNoOrdenada(4);
  17.         InsercionNoOrdenada(129); // No se puede realizar por tabla llena
  18.         InsertarEnTabla.InsercionNoOrdenada(56);
  19.  
  20.     }
  21.  
  22.     public static void InsercionNoOrdenada(int valor) {
  23.         // El orden no importa.
  24.         // Se inserta detrás del último elemento de la tabla
  25.         // mientras exista un hueco libre
  26.         if (numElem == t.length) {
  27.             System.out.println("La tabla está llena");
  28.         } else {
  29.             t[numElem] = valor;
  30.             System.out.println(Arrays.toString(t));
  31.             numElem++;
  32.         }
  33.     }
  34. }



Fijaros, que tanto el main, como el método, como las variables publicas son "estáticas".
Aparentemente todo lo que se llama desde el main, tiene que ser estático. Y logicamente
las variables deben cumplir esa condición.

En este ejemplo no se está creando instancias de una clase.
Se podría haber hecho, pero en este ejemplo seria una "mala practica" hacer eso.

En Gambas creé una clase de este ejemplo, pero no tiene mucho sentido, ya que la clase no es instanciable,
no tiene constructor, se puede llevar parte del código a un módulo o a donde se encuentra el Main.

Os muestro el código en Gambas. Hace lo mismo, pero no hay métodos "estáticos",
ni variables de la misma condición.

GAMBAS
  1. Private tarray As New Integer[5]
  2.  
  3. Public Sub Main()
  4.  
  5.   InserccionNoOrdenada(12)
  6.   InserccionNoOrdenada(7)
  7.   InserccionNoOrdenada(45)
  8.   InserccionNoOrdenada(80)
  9.   InserccionNoOrdenada(4)
  10.   InserccionNoOrdenada(129) 'No se puede realizar por array lleno
  11.  
  12.  
  13. Public Sub InserccionNoOrdenada(valor As Integer)
  14.  
  15.   If numElem = tarray.Count Then
  16.     Print "El array está lleno"
  17.   Else         
  18.     tarray[numElem] = valor    
  19.     ACadena()   
  20.     Inc numElem
  21.  
  22.  
  23. Public Sub ACadena()
  24.  
  25.   Print "[ ";
  26.   For a As Integer = 0 To tarray.Max
  27.     Print tarray[a];
  28.     If a < tarray.Max Then Print " , ";
  29.   Next
  30.   Print " ]"
  31.  



La salida de ambos ejemplo podrían ser como esta:
 
Cita:[ 12 , 0 , 0 , 0 , 0 ]
[ 12 , 7 , 0 , 0 , 0 ]
[ 12 , 7 , 45 , 0 , 0 ]
[ 12 , 7 , 45 , 80 , 0 ]
[ 12 , 7 , 45 , 80 , 4 ]
El array está lleno

No digo que sea ni peor ni mejor. Debe ser cuestión de constumbres, que no me acostumbro a que el main de Java sea estático.
Lógicamente desde este se pueden crear instancias de una clase, como podíamos hacer también en Gambas desde su Main.
Eso de estático me choca un poco, cuando el ejemplo es "sencillo", no manejo clases. En Java si, es la clase InsertarTabla.

A ver que me podéis comentar los que habéis conocido un poco Java.

Saludos

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!
#2

I'm too old for this shit...

No podemos regresar
    ¡Gracias!
#3

(03-04-2023, 19:19)Shordi escribió:  I'm too old for this shit...

Big Grin
it's a very interesting answer. At least you've bothered.

Ejemplo de clase estática con método estático. No se invoca a un método mediante un objeto (instancia de una clase).


[Imagen: Sma9viB.png]

[Imagen: 18FwKPq.png]

Así que esto lo hace igual que Java.

En cuanto a Java.

Concepto de métodos de clase o static y métodos de instancia. Diferencias. Método main de Java. (CU00683B)

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)