code
dans la classe codage
car
elle doit être utilisée de l'extérieure sur l'argument de la méthode binaire
decode
. On la rend donc publique. Pour recouvrer une notion
d'abstraction équivalente à celle du programme java, on utilise les
modules; plus précisément on rend le type retourné par la fonction
code
abtrait. La méthode code
reste donc publique, mais la
valeur qu'elle retourne ne peut pas être exploité puis que sont type est
abstrait.
module M = (struct type t = int class codage n = object (_ : 'mytype) val code : int = n method code = code method decode (z : 'mytype) = (z#code = code) end end : sig type t class codage : int -> object ('mytype) method code : t method decode : 'mytype -> bool end end);; class c = M.codage let p = new c 1 and q = new c 2 let _ = p#decode q ;; |