Java
Mon projet complet avec ORDVideo & Java (+ de 2500 lignes de code)
Voici sur cette page un petit résumé sur le langage Java, avec les bases et quelques exemples très simples.
Langage Java : langage de développement
Machine Virtuelle Java (JVM) : la compilation d'un programme Java fournit un code indépendant du système (byte-code), Ce code est interprété et exécuté par la machine virtuelle java. Cela rend l'application portable (Linux, Windows, ...).
Plate-forme Java : ensemble très riche de classes prédéfinies, autrement appelée API Java.
définition d'une classe:
public class CPoint
{
public int x,y;
public CPoint() { x=0; y=0;}
public CPoint(int _x, int _y) { x=_x; y=_y;}
public int distanceDeLOrigine()
{
return Math.sqrt(x*x + y*y);
}
Création d'objets CPoint :
CPoint monPoint = new CPoint();
CPoint monAutrePoint = new CPoint(10,5);
int dist = monPoint.distanceDeLOrigine();
Tableaux :
CPoint [] tabPoints;
CPoint [][] tabPointsDeuxDimensions;
tabPoints = new CPoint[10]; //tabPoints pourra contenir 10 points
tabPoints[0] = new CPoint(3,3); //création d'un premier point
int laDistance = tabPoints[0].distanceDeLOrigine();
public static final double PI = 3.1415;
static : la variable PI existe pour les propriétés et méthodes de la classe.
final : la variable PI ne peut pas être modifiée.
this : classe courante.
super : classe mère (exemple : super.maMethode() ).
|
En résumé:
- pas de pointeur
- toujours new pour instancier un objet
- pas de delete
- des " . " pour accéder aux propriétés et aux méthodes des objets
- pas de enum, ni struct, ni union
|
un petit "main" :
import java.util.*;
public class exemple
{
public void main (String args[])
{
Random r = new Random();
int a = r.nextInt() %5; //entier entre -4 et 4
System.out.println("a = "+a);
}
Conversions
int i = Integer.parseInt(maString);
long l = Long.parseLong(maString);
String chaine = Integer.toString(entier);
Comment générer des nombres aléatoires ?
|
import java.util.*;
public class aleatoire
{
public void main (String args[])
{
Random r = new Random();
int a = r.nextInt(5); // compris entre 0 (inclus) et 5 (exclu), soit 0,1,2,3 ou 4
}
}
Comment brouiller son byte-code généré ?
|
Un
obfuscateur permet de modifier le byte-code afin de le rendre incompréhensible. En effet, il existe des décompilateurs pour le Java, car le programme compilé est proche du code écrit.
Il existe de nombreux programmes payants pour cela, mais le monde de l'Open Source en offre aussi : essayez donc
RetroGuard.
Comment comparer deux chaînes de caractères ?
|
Il faut faire attention lorsque l'on compare deux chaînes de caractères ; en effet, si on écrit
String ch1 = "bonjour";
String ch2 = "bonjour";
alors ch1 == ch2 est Faux. Ce sont deux instances d'objets différentes.
Le test se fait avec ch1.equals(ch2), qui là retourne Vrai.
Comment paramétrer le JSpinner (choix d'un nombre entre un min et max) ?
|
Voyons comment utiliser le composant JSpinner. Dans cet exemple, on initialise le composant à la bonne valeur (date du jour) et les limites (entre 1 et 12 pour le mois).
On récupère tout d'abord une instance de la classe Calendar, présente dans le package java.util :
import java.util.*;
Ensuite, il faut créer un modèle pour le JSpinner qui permettra de limiter la zone à un entier, entre les bonnes valeurs :
SpinnerNumberModel model = new SpinnerNumberModel(cal.get(Calendar.DAY_OF_MONTH) , 1, 31, 1);
SpinnerNumberModel model1 = new SpinnerNumberModel(cal.get(Calendar.MONTH)+1, 1, 12, 1);
SpinnerNumberModel model2 = new SpinnerNumberModel(cal.get(Calendar.YEAR), 1900, 3000, 1);
Pour le mois, Calendar doit être incrémenté de 1, car le mois retourné commence à 0.
Après avoir défini ces trois modèles, il reste à les appliquer aux composants JSpinner que nommés ici jour, mois et annee dans l'éditeur de formulaire de NetBeans :
jour.setModel (model);
mois.setModel (model1);
annee.setModel(model2);
Voici un résultat que nous pouvons alors obtenir :
Comment afficher un simple message à l'utilisateur ?
|
Pour afficher un message dans une boîte de dialogue, le composant JOptionPane existe :
JOptionPane.showMessageDialog(fenêtre parent, message, titre, type message(icône));
soit par exemple :
JOptionPane.showMessageDialog(null, "Connexion impossible.", "Erreur", JOptionPane.ERROR_MESSAGE); // ou d'autres comme JOptionPane.INFORMATION_MESSAGE
Comment demander confirmation à l'utilisateur ?
|
Pour demander confirmation dans une boîte de dialogue, le composant JOptionPane marche aussi :
JOptionPane dlgQuestion = new JOptionPane();
int reponse = dlgQuestion.showConfirmDialog( null,
"Etes-vous sûr de vouloir quitter le jeu ?" ,
"Quitter", JOptionPane.YES_NO_OPTION);
if (reponse == dlgQuestion.YES_OPTION)
{
// code à faire si le choix est OUI
}
Comment accéder à une base Oracle avec Java (JDBC) ?
|
Connexion à une base de données Oracle :
Importons d'abord les packages nécessaires :
import java.sql.*;
import oracle.jdbc.*;
import oracle.sql.*;
Les deux derniers
import se trouvent dans un fichier jar tel que
classes12_g.jar, présents dans un répertoire d'oracle.
Le nom peut légèrement différer selon la verion du Jar.
OracleConnection conn;
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
conn = (OracleConnection) DriverManager.getConnection( "jdbc:oracle:thin:@machine:port:nom base","login","motdepasse");
Ce code doit être dans un bloc try-catch, comme tout ce qui concerne la connexion à la base de données.
Exécution d'une requête simple :
PreparedStatement stmt = conn.prepareStatement( "INSERT INTO table VALUES(?, ?, ?)");
stmt.setInt(1, mon_entier);
stmt.setString(2,libelle);
stmt.setString(3,commentaires);
stmt.executeQuery();
On place un point d'interrogation à la place de nos valeurs, qu'on précise ensuite.
Ainsi, Java se charge de formater correctement ces données (entier, String entre guillemets, ...)
Récupération de données de la base :
stmt = conn.prepareStatement(
"SELECT id FROM table WHERE libelle=?");
stmt.setString(1,"toto");
ResultSet rset = stmt.executeQuery();
while(rset.next())
{
int num = rset.getInt(1);
System.out.println("valeur lue : "+num);
}
stmt.close();