158 lines
2.5 KiB
Plaintext
158 lines
2.5 KiB
Plaintext
|
@startuml
|
||
|
skinparam classAttributeIconSize 0
|
||
|
|
||
|
package menu {
|
||
|
|
||
|
class Menu {
|
||
|
- selection: Commande
|
||
|
--
|
||
|
+ estQuitté(): boolean
|
||
|
+ afficher()
|
||
|
+ selectionner()
|
||
|
+ valider()
|
||
|
+ ajouter(txt: String, op: Commande)
|
||
|
}
|
||
|
|
||
|
class Entree {
|
||
|
- texte: String
|
||
|
--
|
||
|
+ afficher(numéro: int)
|
||
|
__constructeurs__
|
||
|
+ Entree(texte: String, op: Commande)
|
||
|
}
|
||
|
|
||
|
interface Commande {
|
||
|
--
|
||
|
+ estExecutable(): boolean
|
||
|
+ executer()
|
||
|
}
|
||
|
|
||
|
Menu *-right-> "*\nentree" Entree: " "
|
||
|
Entree o-right-> "1\noperation" Commande: " "
|
||
|
|
||
|
}
|
||
|
|
||
|
note top of Menu
|
||
|
afficher():
|
||
|
for(int i = 0; i < entrees.size(); i++):
|
||
|
entrees.get(i).afficher(i + 1)
|
||
|
|
||
|
selectionner():
|
||
|
-- demander un entier et
|
||
|
-- initialiser 'selection' avec la commande associée
|
||
|
|
||
|
valider():
|
||
|
if (selection.estExecutable()):
|
||
|
selection.executer()
|
||
|
else:
|
||
|
out.println("Opération impossible")
|
||
|
end note
|
||
|
|
||
|
note top of Entree
|
||
|
afficher(numéro: int):
|
||
|
if (opération.estExecutable):
|
||
|
out.print(numéro)
|
||
|
else:
|
||
|
out.print(" ")
|
||
|
out.print(") " + texte)
|
||
|
end note
|
||
|
|
||
|
|
||
|
package editeur {
|
||
|
|
||
|
class Editeur {
|
||
|
--
|
||
|
+ editer()
|
||
|
__constructeurs__
|
||
|
+ Editeur(l: Ligne)
|
||
|
}
|
||
|
|
||
|
Editeur o-right-> "1\nligne" Ligne : " "
|
||
|
Editeur *--> "1\nmenuPrincipal" Menu
|
||
|
|
||
|
interface Ligne {
|
||
|
}
|
||
|
|
||
|
class LigneTab implements Ligne {
|
||
|
}
|
||
|
|
||
|
class LigneStringBuffer implements Ligne {
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
package commandes {
|
||
|
|
||
|
abstract class CommandeLigne implements Commande {
|
||
|
__constructeurs__
|
||
|
CommandeLigne(l: Ligne)
|
||
|
}
|
||
|
|
||
|
class AvancerCurseur extends CommandeLigne {
|
||
|
+ estExecutable(): boolean
|
||
|
+ executer()
|
||
|
}
|
||
|
|
||
|
class ReculerCurseur extends CommandeLigne {
|
||
|
+ estExecutables(): boolean
|
||
|
+ executer()
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
CommandeLigne o-left-> "1\nligne" Ligne
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
note bottom of AvancerCurseur
|
||
|
estExecutable(): boolean:
|
||
|
return ligne.getCurseur() < ligne.getLongueur()
|
||
|
|
||
|
executer():
|
||
|
ligne.avancer()
|
||
|
end note
|
||
|
|
||
|
note bottom of ReculerCurseur
|
||
|
estExecutable(): boolean:
|
||
|
return ligne.getCurseur() > 1
|
||
|
|
||
|
executer():
|
||
|
ligne.reculer()
|
||
|
end note
|
||
|
|
||
|
|
||
|
note as noteEditeur
|
||
|
editer():
|
||
|
do:
|
||
|
ligne.afficher()
|
||
|
menuPrincipal.afficher()
|
||
|
menuPrincipal.sélectionner()
|
||
|
menuPrincipal.valider()
|
||
|
while (! estQuitté())
|
||
|
|
||
|
Editeur(l: Ligne):
|
||
|
this.ligne = l
|
||
|
this.menuPrincipal = new Menu()
|
||
|
this.menuPrincipal.ajouter(
|
||
|
"Avancer curseur",
|
||
|
new AvancerCurseur(l))
|
||
|
this.menuPrincipal.ajouter(
|
||
|
"Reculer curseur",
|
||
|
new ReculerCurseur(l))
|
||
|
end note
|
||
|
|
||
|
Editeur .left. noteEditeur
|
||
|
|
||
|
|
||
|
|
||
|
@enduml
|
||
|
' vim: sw=4 ts=4:
|