Introducción a webservices con aplicación Java 8 y servidor PHP

Hola, en el artículo de hoy trataré el tema de webservices. Los webservices son muy útiles cuando queremos distribuir nuestra aplicación y, en vez de dar acceso a la base de datos desde la aplicación directamente con un driver JDBC, lo que hacemos es que sea el webservice el que nos procese las peticiones a la base de datos. De esta manera, no tenemos que incluir la contraseña y usuario de la base de datos en la aplicación a distribuir y corremos menos riesgos de seguridad, ya que un usuario un poco espabilado podría descompilar nuestra aplicación y hacerse con las credenciales de la base de datos.

Usaremos el servidor XAMPP y ubicaremos los archivos php en la carpeta htdocs/service

Para empezar, crearemos la base de datos(webservice) con una única tabla(adjetivos) con 3 campos: Id, adjetivo,fecha. Id (int, auto increment, primary key) adjetivo(varchar) fecha(timestamp)

Ahora crearemos el webservice que será un archivo php que procese las peticiones que se le envíen desde la aplicación Java, vamos a hacer que el web service procese dos peticiones, una de insertar datos y otra de hacer una consulta.

El archivo insert.php tendría este aspecto

El archivo select.php tendría este aspecto

Una vez hecho ésto haremos nuestra aplicación en Java que le pasará un parámetro POST al webservice, éste la procesará y nos devolverá los resultados en el caso del select o insertará el adjetivo en el caso del insert, para lo que he creado una clase base adjetivos.java para convertir a objetos los resultados de la petición select. La clase adjetivo.java tiene este aspecto:

Usaré 2 clases con main, una para el ejemplo con insert y otra para el ejemplo con select. En la clase main correspondiente al insert, le pasaremos un parámetro POST a PHP para que lo procese y lo inserte en la base de datos, esta clase sería una como la siguiente:

El código anterior pasará un parámetro al archivo php con el adjetivo encomiable y será php el encargado de insertarlo en la base de datos

Ahora seguiremos haciendo un select de la tabla adjetivos y transformando los resultados en un arrayList de objetos adjetivos, en este caso no le vamos a pasar parámetros al select por lo que el parámetro será una cadena vacía, el siguiente código muestra como se debe proseguir

Enlace de interésJAVA POST

Espero que te haya gustado 😉

Cuenta Atras Java Script

Hoy te explicamos como crear una cuenta atras en Java Script utilizando PHP para que el usuario introduzca los segundos que va a durar la cuenta atras, primero realizamos el formulario HTML con los segundos que durara la cuenta atras

Luego creamos el script de manera que creamos una variable con la fecha actual y le sumamos los segundos que nos pasó el usuario para la cuenta atrás para calcular el final de la cuenta atras y luego restamos el final(end) del ahora(now) y nos da los milisegundos que quedan para la cuenta atras los descomponemos en dias, horas, minutos y segundos y obtenemos los datasw para mostrar

Se puede probar en el siguiente enlace temporizador donde aparte del JavaScript hay algun otro cambio pero de poca importancia.
Espero que te haya gustado 😉

Relaciones UML

DEPENDENCIA: El elemento de origen depende del elemento destino y se puede ver afectado por cambios en este, es una relación mas débil que la asociación.

ASOCIACIÓN: Vinculos entre objetos. Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos), en ocasiones es deseable hacerlas unidireccionales (restringir su navegación en un único sentido). Gráficamente, cuando la asociación es unidireccional, la línea termina en una punta de flecha que indica el sentido de la asociación

AGREGACIÓN: El elemento destino es una parte del elemento origen. La parte existe si se va el todo.

COMPOSICIÓN: Una forma de agregación mas fuerte, si desaparece el todo desaparecen las partes.

GENERALIZACIÓN: El elemento origen es una especialización del elemento destino, se utiliza en la herencia de clases.

REALIZACIÓN: El elemento origen garantiza llevar a cabo el contrato especificado, se utiliza para la implementación de las interfaces.

Ejemplo de Diagrama de clases:

Espero que te haya gustado

Juego de 3 en raya en consola en Java

Hoy te traemos una aplicación de consola en Java para jugar al tres en raya.
Consta de varias funciones:
-filas()
-columnas()
-diagonal()
-diagonalInversa()
Estas funciones estan destinadas a comprobar si hay 3 en raya.
Luego esta la función pintar() que comprueba si se puede escribir en la posicion que indica el usuario(comprueba si esta ya escrita, entonces sería movimiento incorrecto o si se sale de la pista) en estos dos casos el usuario tendría que volver a introducir fila y columna donde quiere escribir su jugada.
Tambien está la función mostrar() que escribe por pantalla la matriz de tres en raya como estaría despues de cada jugada.

Espero que te guste ♥

Información sobre clases, atributos y métodos en Java

Modificadores de clase

class Indica que es una clase class ClaseEjempIo{..}
public class Indica que puede ser accesible desde clases que se encuentren en el mismo paquete que esta clase y también desde clases que se encuentren en paquetes distintos, realizando un import. Solo puede haber una clase publica en un fichero java. public class ClaseEJemplo{…}
abstract class Indica que no se pueden crear instancias de esta clase con el operador new, Puede contener métodos sin implementar de tipo abstract Otras clases pueden heredar de ella implementanda todos Ios metodos que no lo estén. En Caso de que la clase hija sea abstracta, puede implementar solo algunos métodos abstract class ClaseEjemplo{..}
final class Indica que no puede tener clases hijas o subclases. Es decir. ninguna clase puede heredar de ella final class ClaseEjemplo{…}
sin modificador class Indica que puede ser accesible solo desde clases que se encuentren en el mismo paguete que esta clase. class ClaseEjemplo

Modificadores de acceso de métodos y atributos

public Accesible desde cualquier lugar public int atributoEjempIo
sin_modificador Accesible solo desde cualquier clase que se encuentre en el mismo paquete int atributoEjernplo
protected Accesible desde Ias clases hijas que se encuentren en cualquier paquete. O accesible desde de cualquier clase que se encuentre dentro del mismo paquete, sea o no su hija. protected int atributoEjempIo
private Accesible solo dentro de la clase en la que fue declarado private int atributoEjemplo
static No se necesita una instancia de la clase para poder acceder/modifcar un atributo o ejecutar un método. Se accede al atributo o método a través del nombre de Ia clase. Un método static solo puede acceder a atributos y métodos static. en caso de que estos estén declarados en la misma clase. Se puede acceder a atributos y métodos no static a través de objetos. EI valor de un atributo static es compartido por todos Ios objetos, y si un objeto lo modifica, Ios demas objetos perciben la modificación. A estos atributos se Ies suele llamar atributos de Clase. public static atributoEjemplo
final No permiten reescrituras ni sobrecargas.Se suele utilizar si se desea declarar una constante. También en el caso de que se quiera evitar que modifiquen un método definido en Ia clase padre en una clase hija. (Evitar override) public static final CONSTANTE_EJEMPLO;
synchronized Evita que dos hilos puedan acceder al mismo metodo a la vez, para evitar problemas de acceso concurrente. Dejaria al segundo hilo en espera hasta que terminase el primero. (No se usa en atributos) public synchronized int metodo{…}
volatile Tiene el el mismo electo que synchronized, pero este se aplica solo a atributos. public volatile int atributoEjempIo
transient Evita que un atributo sea serializado, al serializar el objeto que lo contiene. private transient int AtributoEjempIo
native native es un modificador utilizado cuando un determinado método estå escrito en un lenguaje distinto a Java. normalmente C. C++ o ensamblador para mejorar el rendimiento. La forma más común de implementar estos métodos es utilizar JNI (Java Native Interface). (No aplicable a atributos) private native int metodo();

Tabla de accesiblidad


La misma clase Otra clase del mismo paquete Subclase de Otro paquete Otra clase de Otro paquete
public X X X X
protected X X X
sin_modificador X X

private X


Crear objetos

Crear un Objeto de una clase

NombreCIase nombreObjeto = new NombreCIase();

Crear Objeto de clase interna estática

ClaseExterna.CIaseInterna nombreObjeto = new ClaseExterna.ClaseInterna()

Crear objetos de clase interna no estática

ClaseExterna nombreObjetoExterna = new ClaseExterna();

Claselnterna nombreObjetolnterno = nombreObjeto.new Claselnterna();

Crear objeto de clase anónima:

Clasepadre nombreObjeto = new ClasePadre {

métodoDeClasePadre(){

Cambios en el método

}

};

nombreObjeto.metodoDeCIasePadre() //Llamada al método de la clase anonima.

Métodos y atributos estáticos

Crear un método o atributo estático

public static int nombreAtributo;

public static void nombreMetodo();

Acceder a un método estático.

NombreCIase.nornbreMetodo(); //No se necesita crear un Objeto con new para poder usarlo.

Acceder a un atributo estätico.

NombreCIase.nornbreAtributo //NO se necesita crear un objeto new para poder usarlo.

Información sobre clases, atributos y métodos en Java

Con este PDF se intenta explicar los modificadores de clase, atributos y métodos en Java.

Publicado:19 noviembre, 2019

Operaciones con matrices en Java (suma, resta, multiplicación, matriz identidad)

Hola, hoy os traemos un programa en java que realiza operaciones (suma, resta, multiplicación y matriz identidad) con matrices, en este ejemplo utilizamos matrices cuadradas aleatorias para que sea mas rapido pero podríamos utilizar matrices introducidas por el usuario( en la función rellenar dejo comentado como sería para introducir los datos por el usuario).

La suma y resta de matrices tiene la condición de que las matrices tienen que ser de la misma dimensión, tienen que tener el mismo número de filas y de columnas.
Para efectuar la suma sumamos elemento a elemento:
el elemento (0,0) de la matriz 1 lo sumamos con el elemento (0,0) de la matriz 2 y obtenemos el elemento (0,0) de la matriz suma,
el elemento (0,1) de la matriz 1 lo sumamos con el elemento (0,1) de la matriz 2 y obtenemos el elemento (0,1) de la matriz suma y así sucesivamente.
Para restar seguimos el procedimiento anterior pero cambiando suma por resta.

Para multiplicar matrices las matrices tienen que cumplir la condición de que:
las filas de la matriz 1 = las columnas de la matriz 2
las columnas de la matriz 1 = las filas matriz 2
La matriz resultante tendría la dimensión :
[filas matriz 1 , columnas matriz 2]
Para efectuar la multiplicación efectuamos la operacion:
matrizproducto(0,0) = matriz1(0,0) * matriz2(0,0) + matriz1(0,1) * matriz2(1,0)+matriz1(0,2)*matriz2(2,0)+matriz1(0,3)*matriz2(3,0)
Con esto obtendríamos el elemento (0,0) de la matriz producto.
matrizproducto(0,1) = matriz1(0,0) * matriz2(0,1) + matriz1(0,1) * matriz2(1,1)+matriz1(0,2)*matriz2(2,1)+matriz1(0,3)*matriz2(3,1)
Y asi sucesivamente hasta hayar todos los elementos de la matriz producto

El resultado seria algo como esto:

cuantas filas y columnas quieres que tenga la matriz
3
1-sumar matrices
2-restar matrices
3-multiplicar matrices
4-matriz identidad
5-salir
3
Mostrando la matriz 1
6 0 0
7 6 8
6 4 5
Mostrando la matriz 2
4 3 7
3 7 0
2 7 4
Se va a proceder a multiplicar las matrices
24 18 42
62 119 81
46 81 62

Espero que les haya gustado 😉

Sumar multiples ángulos con Java

Hola, hoy proponemos un ejercicio de suma de ángulos sexagesimales en java, para ello primero indicamos al usuario cuantos ángulos quiere sumar, después introducimos los grados minutos y segundos en una matriz.
En este caso el usuario introdujo dos ángulos a sumar:

35º43′50″
12º36′35″

Una vez hecho esto sumamos las columnas y obtenemos:
sumas=el sumatorio de la columna de los segundos(85″)
sumam=el sumatorio de la columna de los minutos(79′)
sumag=el sumatorio de la columna de los grados(47º)

Por último normalizamos los segundos y minutos si son mayores que 60.
Quedando como segundos resultantes el resto entre los segundos y 60 y añadimos a los minutos el cociente de dividir los segundos entre 60.
Lo mismo hacemos con los minutos, normalizando si estos pasan de 60 entonces añadimos a los grados el cociente entre minutos y 60, el nuevo valor de minutos será el resto entre los minutos y 60.

La salida sería la siguiente:

Cuantos angulos quieres sumar?
2
Dime los grados para el angulo 1
35
Dime los minutos para el angulo 1
43
Dime los segundos para el angulo 1
50
Dime los grados para el angulo 2
12
Dime los minutos para el angulo 2
36
Dime los segundos para el angulo 2
35
La suma es 48º 20′ 25″

Espero que les haya gustado 😉

Matriz con los mismos elementos en las diagonales en Java

En este ejercicio vamos a consegir una matriz de dimensiones n x n dadas por el usuario.
Los elementos de la matriz tendran valores del 0 al 9 , si la matriz fuera de 10 elementos(10 x 10), obtendriamos el siguiente resultado, con el mismo número en las diagonales

0123456789
1234567890
2345678901
3456789012
4567890123
5678901234
6789012345
7890123456
8901234567
9012345678

La función mostrar simplemente muestra la matriz recorriendola fila a fila.
La función diagolnal calcula la suma de filas + columnas y lo asigna a cada elemento de la matriz, si es mayor que 10 el sumatorio de filas y columnas hará el sumatorio de filas y columnas modulo de 10 para asignarle este valor al elemento de la matriz.
Tenemos en cuenta que en Java los arrays se pasan por referencia.

Espero que les haya gustado queda muy bonita 😆

Calcular la matriz transpuesta con Java

En este ejercicio calcularemos la matriz transpuesta de una matriz 4×4 con respecto a su eje diagonal. Primero rellenaremos con numeros aleatorios del 0 al 9 la primera matriz y despues con la función simétrica calcularemos su transpuesta. conforme al siguiente gráfico. Los elementos de la diagonal marcados con una X permaneceran en el mismo lugar y los elementos que estan en el mismo color son los que se intercambiaran entre si.

El resultado sería algo como esto:

0126
1775
2105
8666
matriz simetrica
6556
6072
6171
8210