Pour ce tutorial, la première possibilité est d'utiliser la classe Terminal. Grâce à cette classe, il va être possible de poser des questions à l'utilisateur et de lire ses réponses. L'interaction va se faire au niveau du terminal (d'où le nom de la classe), c'est à dire dans la fenêtre de commandes (appelée terminal, console, invite de commandes, commandes MS-DOS, etc. selon le système utilisé).
Quand on parle d'entrée (input) ou de sortie, c'est toujours par rapport au programme. Ici, les entrées correspondront aux données fournies par l'utilisateur via le clavier et les sorties seront affichées par le programme. Le programme va donc lire les entrées (read input) et écrire les sorties (write output / print output).
Exemple : programme qui dessine une spirale conformément aux choix de l'utilisateur
class Tortue extends SuperTortue{
void spirale(int nbCotes, int nbTours, int increment, int longInit){
int dist = longInit;
for (int j=0; j<nbTours;
j++){
for (int i=0; i<nbCotes; i++){
avance(dist);
tourneDroite(360/nbCotes);
dist += increment;
}
}
}
}
public class MonProg{
public static void main(String[] args){
Terminal term = new Terminal();
// Déclaration et initialisation
// de la variable qui va permettre
// l'interaction
term.ecrireString("********************************");
term.ecrireString("Spirales");
term.ecrireLigne();
term.ecrireString("Combien
de cotes ?");
int nbCotes = term.lireInt();
term.ecrireString("Combien
de tours ?");
int nbTours = term.lireInt();
term.ecrireString("Longueur
initiale du cote ?");
int longueurInit = term.lireInt();
term.ecrireString("Increment
?");
int incr = term.lireInt();
Tortue rosalie = new Tortue();
rosalie.spirale(nbCotes,
nbTours, longueurInit, incr);
}
}
MonProg9a.java
Une autre possibilité est d'utiliser les méthodes lireInt, lireString et msgErreur de la classe SuperTortue. L'exemple ci-dessus devient (la classe Tortue ne change pas) :
public class MonProg9b{
public static void main(String[] args){
Tortue rosalie = new
Tortue();
int nbCotes = rosalie.lireInt("Combien
de cotes ?");
int nbTours = rosalie.lireInt("Combien
de tours ?");
int longueurInit = rosalie.lireInt("Longueur
initiale du cote ?");
int incr = rosalie.lireInt("Increment
?");
rosalie.spirale(nbCotes,
nbTours, longueurInit, incr);
}
}