Accueil site MathGraph32 Images Activités Tableur Téléchargements Informations



Algorithmique

Avec Java

Avec des classes 
 
Introduction
Initiation
  Généralités
  Première activité
  Calcul d'une racine carrée
  Exemple en géométrie
  Exemple avec Logo
Prolongement
  Symétrie centrale
  Parallélogramme
  Procédures avec Logo
  Récursivité avec Logo
Avec Algobox
  Fraction irréductible
  Fonction monotone
  Résolution d'équation 1
  Résolution d'équation 2
Avec Python
  Environnement
  Autres environnements
  L'essentiel
  Premier exemple
  Addition de fractions
  Cryptographie
  Statistiques / Probabilité
Avec Java
  Environnement
  L'essentiel
  Premier exemple
  Avec des classes
 
Création d'une nouvelle classe
On va transfomer le premier exemple en créant une nouvelle classe CalSomEntiers qui contiendra la méthode calsoment faisant la somme des N premiers entiers (et qui renverra le résultat de cette somme). La méthode main de la classe SommeEntiers (du premier exemple) sera pratiquement réduite à l'appel de la méthode calsoment et à l'affichage du résultat.

Dans un premier temps, on va créer la classe CalSomEntiers. Pour cela, cliquer avec le bouton droit dans l'explorateur de projet sur le dossier source du projet (src), puis dans le menu contextuel cliquer sur New, puis sur Class. Dans la fenêtre qui s'ouvre, donner le nom de la classe (CalsomEntiers) et cliquer sur le bouton Finish (il ne faut pas cocher l'option public static void main). Une nouvelle classe apparaît alors dans l'explorateur de projet et la partie centrale de la fenêtre affiche le contenu de cette nouvelle classe.
On définit alors une méthode calsoment pour cette classe. Cette méthode aura pour paramètre un entier (le nombre N) et renverra un autre entier (la somme) :


La procédure main du premier exemple était :


Il suffit alors de couper le code permettant le calcul de la somme (c'est à dire la partie entourée en rouge ci-dessus) et de la coller dans la procédure calsoment de la nouvelle classe CalSomEntiers (entre les accolades). Puis rajouter, après l'accolade fermente de la suite d'instructions de la boucle while, l'instruction pour renvoyer le résultat (return S;), ce qui donne :


La méthode calsoment appartient à la classe CalSomEntiers, il faut donc au préalable instancier cette classe avant d'utiliser cette méthode. On instancie une classe par le mot clé new et on affecte l'objet résultant à une variable (ici se) :
se = new CalSomEntiers();
Mais comme pour toute variable il faut préciser son type (ici du type de la classe elle-même), soit en définitive :
CalSomEntiers se = new CalSomEntiers();
L'appel à la méthode calsoment se fait avec la syntaxe habituelle : Objet.méthode(paramètres).
Cette méthode renvoyant un résultat, on l'affecte à une variable (ici Som), soit :
Som = se.calsoment(N)

La procédure main de la classe initiale devient donc :


Remarque : dans la méthode main ci dessus, on déclare "à la volée" la variable Som en définissant son type (int) au moment de sa première affectation ; on aurait pu le faire au début de la méthode main en lui affectant la valeur 0.

Le programme se compose maintenant de deux classes séparées : la classe SommeEntiers (contenant la méthode main qui est le point de départ du programme et qui gère les entrées/sorties et les appels aux procédures) et la classe CalSomEntiers (contenant la méthode calsoment faisant véritablement la somme des N premiers entiers naturels). Notre programme sera ainsi plus facile à maintenir et à améliorer.

Télécharger ce programme java (fichier zip contenant les fichiers sources des classes SommeEntiers et CalSomEntiers. Ces fichiers ont l'extension .java mais sont des fichiers de type texte que l'on peut ouvrir avec le bloc-notes)
Prolongement
Créer deux méthodes supplémentaires dans la classe CalSomEntiers, l'une calsomp pour calculer la somme des N premiers entiers naturels pairs et l'autre calsomimp pour calculer la somme des N premiers entiers naturels impairs. Faire appel à ces méthodes dans la méthode main de la classe SommeEntiers.

Remarque : on peut aussi créer une nouvelle classe pour chacune des méthodes calsomp et calsomimp mais il faudra alors instancier ces nouvelles classes dans la procédure main, ce qui en alourdira un peu le code. En général, on regroupe dans une même classe des méthodes qui concernent le même sujet.
Saisie au clavier
Dans les programmes précédents, le nombre N d'entiers à additionner est fixé dans le code du programme. Pour faire saisir ce nombre au cours de l'éxécution du programme, il faut faire appel à une bibliothèque spécialisée de Java. Il s'agit de la bibliothèque java.util.Scanner, on doit donc ajouter en début de programme l'instruction :
import java.util.Scanner;

Scanner est une classe qu'il faut instancier avec le paramètre System.in et affecter l'objet résultant à une variable (ici sc) de type Scanner, soit :
Scanner sc = new Scanner(System.in);

A partir de ce moment l'objet sc surveille le clavier et peut renvoyer toute saisie faite au clavier et terminée par la touche Entrée.
Pour récupérer la saisie dans le programme, il suffit d'utiliser une des méthodes nextxxxx suivant le type de données voulues. Pour récupérer un entier on utilise la méthode nextInt :
N = sc.nextInt();

La procédure main devient donc :


SommeEntiers et CalSomEntiers. Ces fichiers ont l'extension .java mais sont des fichiers de type texte que l'on peut ouvrir avec le bloc-notes)

© Matabu mars 2020 - Tous droits réservés. Limitation à l'usage non commercial, privé ou scolaire.