Next: Table comparative sommaire
Up: Le paradigme Target/Action
Previous: Le paradigme Target/Action
Un Interface-Builder typé?
On peut imaginer de pouvoir construire des outils similaires sans ces contraintes si on renonce à la flexibilité que l'on obtient en exposant séparément le target et l'action. On aurait alors, on Objective Caml,
#class slider p =val mutable pos = p
val mutable action = fun () -> ()
method pos = pos
method setAction f = action <- f
method sliderMoved n = pos <- pos+n; action()
method stringValue = string_of_int pos
method print () = print_int pos
end;;
class slider (int) = val mutable action : unit -> unit val mutable pos : int method pos : int method setAction : (unit -> unit) -> unit method sliderMoved : int -> unit method stringValue : string method print : unit -> unit end
class textfield (s:string) =
val mutable stringValue = s
method stringValue = stringValue
method setstringValue sv = stringValue <- sv
end;;
class textfield (string) = val mutable stringValue : string method stringValue : string method setstringValue : string -> unit end
let s = new slider 0;;
val s : slider = <obj>
let t = new textfield "";;
val t : textfield = <obj>
s#sliderMoved 3;;
- : unit = ()
t#stringValue;;
- : string = ""
s#setAction (fun () -> t#setstringValue s#stringValue);;
- : unit = ()
s#sliderMoved 3;;
- : unit = ()
t#stringValue;;
- : string = "6"
Cependant, on ne peut pas passer à l'objet recevant l'action l'objet qui la déclenche, et cela réduit la généralité du mécanisme.
Roberto DiCosmo
Mon Jun 3 18:29:31 MET DST 1996