pdf - e-book - archive - github.com

1.6  Survol du langage

Ce cours vous introduit au Java dans sa dimension procédurale. Le but de ce cours est de vous familiariser avec les instructions de base avant d’aborder les concepts de la programmation objet.

1.6.1  Structure d’une classe

Pour le moment, nous appellerons classe un programme Java. Une classe se présente de la sorte :

class NomClasse
{
  /*
   Class contents
  */
}

Vous remarquez que de façon analogue au C, une classe est un bloc délimité par des accolades et que les commentaires d’écrivent de la même façon. On ecrit les noms des classes en concaténant les mots composant ce nom et en faisant commencer chacun d’eux par une majuscule. N’oubliez pas de ne mettre qu’une seule classe par fichier et de donner au fichier le même nom que celui de cette classe.

1.6.2  Variables

Nous disposons en Java des mêmes types qu’en C. Tous les types mis à votre disposition par Java sont appelé types primitifs.

Booléens

L’un deux nous servira toutefois à écrire des choses que l’on rédige habituellement de façon crade en C : boolean. Une variable de type boolean peut prendre une des deux valeurs true et false, et seulement une de ces deux valeurs. On déclare et utilise les variables exactement de la même façon qu’en C.

Chaînes de caractères

Il existe un type chaîne de caractères en C. Nous l’examinerons plus détails ultérieurement. Les deux choses à savoir est que le type chaîne de caractères est String, et que l’opérateur de concaténation est +.

final

Les variables dont la déclaration de type est précédée du mot-clé final sont non-modifiables. Une fois qu’une valeur leur a été affecté, il n’est plus possible de les modifier. On s’en sert pour représenter des constantes. Les règles typographiqus sont les mêmes : toutes les lettres en majuscules et les mots séparés par des \_. Par exemple,

final int TAILLE = 100;

Déclare une constante TAILLE de type int initialisée à 100.

1.6.3  Entrées-sorties

La saisie de variables est un calvaire inutile en Java, nous nous en passerons pour le moment. Pour afficher un message, quel que soit son type, on utilise le sous-programme System.out.print. Par exemple,

System.out.print("Hello World\n");

Le sous-programme System.out.println ajoute automatiquement un retour à la ligne après l’affichage. On aurait donc pu écrire :

System.out.println("Hello World");

Il est aussi possible d’intercaler valeurs de variables et chaînes de caractères constantes, on sépare les arguments par des +. Par exemple,

System.out.println("La valeur de a est " + a + 
  "et celle de b est " + b);

1.6.4  Sous-programmes

On définit en Java des sous-programmes de la même façon qu’en C, attention toutefois, les sous-programmes que nous définirons dans ce cours seront déclarés avec le mot-clé static. Par exemple, si je veux faire un sous-programme qui retourne le successeur de la valeur passée en argument cela donne

class TestJavaProcedural
{

  static int succ(int i)
  {
    return i + 1;
  }
  
  /*
   Autres sous-programmes
  */
}

Si vous oubliez le mot clé static, le compilateur vous enverra des insultes. Nous verrons plus tard ce que signifie ce mot et dans quels cas il est possible de s’en passer. Attention : Tous les types primitifs en Java se passent en paramètre par valeur, et cette fois-ci je ne vous mens pas !

1.6.5  Main

Lorsque vous invoquez la machine virtuelle, elle part à la recherche d’un sous-programme particulier appelé main. Il est impératif qu’il soit défini comme suit :

public static void main(String[] args)
{
  /*
 instructions
  */
}

La signification du mot-clé public vous sera expliquée ultérieurement. La seule chose dont il faut prendre note est que vous ne devez pas l’oubliez, sinon la machine virtuelle vous enverra des insultes !

1.6.6  Instructions de contrôle de flux

En Java, les instructions if, switch, for, while et do ... while se comportent de la même façon qu’en C. Donc, pas d’explications complémentaires...

1.6.7  Exemple récapitulatif

Nous avons maintenant tout ce qu’il faut pour écrire un petit programme :

package procedural;

public class Exemple
{
 /*
  * Retourne le nombre b eleve a la puissance n.
  */
 static int puissance(int b, int n)
 {
  int res = 1;
  for (int i = 1; i <= n; i++)
   res *= b;
  return res;
 }

 /*
  * Affiche {2^k | k = 0, ..., 30}.
  */
 public static void main(String[] args)
 {
  for (int k = 0; k <= 30; k++)
   System.out.println("2^" + k + " = " + puissance(2, k));
 }
}

Télécharger le fichier

1.6.8  Packages

L’instruction import que vous utilisez depuis le début sert à localiser une classe parmi les packages standard de Java. Si par exemple vous importez import java.awt.event.*, cela signifie que vous allez utiliser les classes se trouvant dans le package qui se trouve dans le package event qui se trouve dans le package awt qui se trouve dans le package java (qui est la bibliothèque standard).

Créer ses propres packages

Il possible pour un programmeur de créer ses propres packages, deux choses sont nécessaires :

Par exemple,

package procedural;

public class ExemplePackage
{
 public static void presenteToi()
 {
  System.out.println("Je suis collections.ExemplePackage");
 }

 public static void main(String[] args)
 {
  presenteToi();
 }
}

Télécharger le fichier

On exécute et compile ce fichier en se plaçant non pas dans le répertoire où se trouve les source, mais dans le répertoire ou se trouve le package. Par conséquent, l’exécution en ligne de commande se fait avec javac procedural.ExemplePackage

Utiliser ses propres packages

Vos packages s’utilisent comme les packages de la bibliothèque standard. Si le main se trouve en dehors de votre package, la variable d’environnement CLASSPATH sera utilisée pour localiser votre package.