summaryrefslogtreecommitdiff
path: root/sem_6/HLIN603/ocaml/TP2/ex2.caml
diff options
context:
space:
mode:
Diffstat (limited to 'sem_6/HLIN603/ocaml/TP2/ex2.caml')
-rw-r--r--sem_6/HLIN603/ocaml/TP2/ex2.caml21
1 files changed, 21 insertions, 0 deletions
diff --git a/sem_6/HLIN603/ocaml/TP2/ex2.caml b/sem_6/HLIN603/ocaml/TP2/ex2.caml
new file mode 100644
index 0000000..21779af
--- /dev/null
+++ b/sem_6/HLIN603/ocaml/TP2/ex2.caml
@@ -0,0 +1,21 @@
+class account b =
+object (self)
+ val mutable balance = 0.0
+ method get = balance
+ method deposit a = balance<-balance +. a
+ method withdraw a = balance <- balance -. a
+ method print = print_float balance; print_newline()
+ initializer self#deposit b
+end;;
+class interest_account b =
+object
+ inherit account b
+ method interest = balance <- balance +. 5. *. balance /. 100.
+end;;
+class secure_account b =
+object
+ inherit account b as super
+ method withdraw a = if (balance -. a)>=0. then super#withdraw a else failwith "T'as pas l'flouze gros!"
+end;;
+class bank =
+ method