Accueil > Programmer avec Java >
SĂ©quence dâexĂ©cution avec le code modulaire
Survol et attentes
Définitions
- Diagramme de sĂ©quence dâexĂ©cution
- Un diagramme qui identifie les numĂ©ros de lignes des instructions selon lâordre rĂ©elle dâexĂ©cution (et non lâordre de dĂ©claration). Les appels de mĂ©thode sont indiquĂ©s par une flĂšche de la ligne de lâappel vers la ligne de la signature de la mĂ©thode appelĂ©e. Le retour (fin) de la mĂ©thode est indiquĂ© par une flĂšche de la ligne de la derniĂšre instruction de la mĂ©thode vers la ligne de lâappel.
- Appel de procédure
- Dans un diagramme de flux : un rectangle avec des lignes de cĂŽtĂ© doublĂ©es qui contient le nom de la mĂ©thode. Cette forme reprĂ©sente lâappel de la mĂ©thode.
- Définition de procédure
- Dans un diagramme de flux : commence par un ovale qui contient le nom de la mĂ©thode (au lieu de âdĂ©butâ), continue avec les instructions de la mĂ©thode et finit par un autre ovale qui contient âfin de [nom de la mĂ©thode]â ou âretourâ.
Objectifs dâapprentissage
Ă la fin de cette leçon vous devrez ĂȘtre en mesure de :
- Suivre lâexĂ©cution dâun programme qui contient des appels de mĂ©thodes que nous avons dĂ©finies et le documenter dans un diagramme de sĂ©quence dâexĂ©cution.
- Identifier des appels et des dĂ©finitions de mĂ©thodes dans un diagramme de flux, un diagramme de sĂ©quence dâappels et un programme Java.
- Produire un diagramme de flux pour un algorithme simple qui contient des procédures.
CritĂšres de succĂšs
- Je peux suivre lâexĂ©cution dâun programme qui contient des mĂ©thodes et le documenter avec un diagramme de sĂ©quence dâexĂ©cution.
- Je peux lire des diagrammes de flux qui contiennent des procédures.
Le code modulaire
Commençons avec un exemple simple1 dâun programme dĂ©composĂ©, dâun programme modulaire.
Fichier :
MainClass.java
void main() {
welcome();
doStuff();
bye();
}
void welcome() {
System.out.println("Bienvenue dans mon programme!");
}
void doStuff() {
System.out.println("On fait des choses utiles ici...");
}
void bye() {
System.out.println("Bye!");
}
Dans ce programme, comme dans tout programme Java, le programme principal est dans la mĂ©thode main. Dans ce cas-ci, le programme principal est trĂšs simple. Il appelle trois autres mĂ©thodes, welcome, doStuff et bye. On comprend trĂšs bien la structure globale du programme. Par la suite, tous les dĂ©tails du programme se trouvent dans les mĂ©thodes individuelles appelĂ©es par main. MĂȘme si ces dĂ©tails devenaient plus complexes, la mĂ©thode main resterait simple et facile Ă lire.
Le diagramme de flux
Le mĂȘme programme est reprĂ©sentĂ© ci-dessous dans un diagramme de flux.

Notez quâil y a plusieurs sĂ©quences dâinstructions distinctes dans le diagramme de flux : une pour chaque mĂ©thode.
Lâalgorithme commence toujours avec lâovale âDĂ©butâ et se termine avec lâovale âFinâ. Par contre, on a maintenant un nouveau type de bloc dans le diagramme - un appel de procĂ©dure :

Ce bloc envoie lâexĂ©cution du programme Ă la sĂ©quence dâinstructions qui commence par le nom inscrit dans le bloc. Quand la sĂ©quence dâinstructions de la mĂ©thode appelĂ©e est terminĂ©e, lâexĂ©cution est retournĂ©e au point de lâappel et continue le long des flĂšches.
On voit aussi que les ovales de début et de fin sont légÚrement différents pour les procédures :
- le mot âDĂ©butâ est remplacĂ© par le nom de la mĂ©thode
- le mot âFinâ est remplacĂ© par âFin de [nom de la mĂ©thode]â ou âRetourneâ
Tracer la sĂ©quence dâexĂ©cution programme
Chaque appel dâune mĂ©thode envoie lâexĂ©cution du programme Ă la signature de la mĂ©thode appelĂ©e et Ă travers ses instructions. Quand la mĂ©thode appelĂ©e se termine, lâexĂ©cution est retournĂ©e au point de lâappel pour continuer avec le reste du programme.
On peut le voir et le représenter comme suit.
Ă partir du code
On peut utiliser lâoutil Python Tutor pour visualiser lâexĂ©cution du programme Ă©tape par Ă©tape afin de mieux comprendre la mĂ©canique dâappel et de retour de mĂ©thodes.
Notez que le code est logiquement identique Ă celui ci-dessus mais que la version de Java disponible (Java 8) ne permet pas les simplifications de la syntaxe quâon a avec Java 22. On a donc la dĂ©claration explicite dâune classe et les mots clĂ©s
staticetpublicpour les méthodes.
Sans un tel outil, on peut tracer manuellement lâĂ©xecution avec un diagramme de sĂ©quence dâexĂ©cution, soit :
- une liste des numĂ©ros de ligne exĂ©cutĂ©s dans lâordre dâexĂ©cution;
- on indente vers la droite avec une flÚche pour indiquer un appel de méthode et
- on revient à gauche avec une autre flÚche pour indiquer le retour de la méthode.
Pour notre version de MainClass.java (avec la syntaxe simplifiĂ©e), le diagramme de sĂ©quence dâexĂ©cution serait :
1
2 -> 7
8
2 <- 9
3 -> 11
12
3 <- 13
4 -> 15
16
4 <- 17
5
Les lignes suivantes représentent des appels de méthodes :
Appel de welcome :
2 -> 7
Appel de doStuff :
3 -> 11
Appel de bye :
4 -> 15
Les lignes suivantes représentent les retours de méthodes :
Retour de welcome :
2 <- 9
Retour de doStuff :
3 <- 13
Retour de bye :
4 <- 17
Notez que lâappel et le retour reviennent Ă la mĂȘme ligne dans le diagramme de sĂ©quence, soit 2 appel welcome et welcome retourne Ă 2, etc.
Dans Python Tutor, on sautait les lignes de signature durant lâappel et la ligne appelante lors du retour. Câest parce que nos procĂ©dures nâont pas de paramĂštres et ne retournent pas de valeur en se terminant alors il nây avait rien Ă visualiser pour ces lignes. On voit les paramĂštres et les valeurs de retour dans une prochaine leçon.
Notez aussi que durant lâexĂ©cution des mĂ©thodes appelĂ©es, les numĂ©ros de ligne sont identĂ©es au mĂȘme niveau que la signature de la mĂ©thode afin de distinguer ces instructions des instructions de la mĂ©thode appelante.
Ă partir du diagramme de flux
On peut aussi tracer la sĂ©quence dâexĂ©cution Ă partir du diagramme de flux. On y ajoute manuellement plus de flĂšches!

Encore une fois, comme avec le diagramme de sĂ©quence dâexĂ©cution, lâappel et le retour se font Ă partir du mĂȘme bloc dans le diagramme de flux.
Exercices
đ ïž Pratique
Travaillez dans le répertoire GitHub partagé par votre enseignant pour la pratique et les exercices
- Pour le programme ci-dessous dans un fichier nommé
ModularSequence.java:- CrĂ©ez le diagramme de sĂ©quence dâexĂ©cution dans un commentaire de bloc Ă la fin du programme.
- Ajoutez un astérisque (
*) Ă la fin de chaque ligne du diagramme de sĂ©quence dâexĂ©cution oĂč il y a une instruction dâaffichage. - Dans un deuxiĂšme commentaire de bloc Ă la fin du programme, documentez ce que le programme affiche Ă la console durant lâexĂ©cution. Comparez cette sortie avec le diagramme de sĂ©quence dâexĂ©cution et lâordre des lignes avec des astĂ©risques. Est-ce que câest cohĂ©rent? Si non, revoyez votre diagramme de sĂ©quence dâexĂ©cution pour trouver oĂč vous avez fait une erreur.
- Créez le diagramme de flux dans le dossier
diagrammesdans un fichier nommémodular-flux.drawio. - Créez le diagramme de dépendances (voir la leçon précédente) dans un fichier nommé
modular-dependancy.drawio. Utilisezmaincomme le bloc de départ.
ModularSequence.java
void main() {
System.out.println("Bienvenue!");
a();
b();
}
void a() {
c();
System.out.println("bleu");
}
void b() {
System.out.println("blanc");
a();
}
void c() {
System.out.println("rouge");
}
-
Exemple applicant les classes implicites et le main dâinstance de JEP 463 (pleinement intĂ©grĂ© aux outils Java22+) â©