Skip to content

Instantly share code, notes, and snippets.

@pitastrudl
Last active June 3, 2017 16:53
Show Gist options
  • Save pitastrudl/c057ea342dc86eb9b1f187e34425291f to your computer and use it in GitHub Desktop.
Save pitastrudl/c057ea342dc86eb9b1f187e34425291f to your computer and use it in GitHub Desktop.
ocaml assigment
(*prepdostavljamo, da nimamo tro besednih ali vec imen, drugace bo kazin*)
(*abstrakten razred*)
class virtual clovek ime priimek spol =
object
val mutable ime = (ime : string)
val mutable priimek = (priimek : string)
val spol = (spol : char)
end;;
(*ljudi*)
class moski ime priimek =
object
inherit clovek ime priimek 'm'
method izpisiImePriimek = ime ^" " ^ priimek
method popraviPriimek novPriimek = priimek <- novPriimek
end;;
class otrok ime priimek spol =
object
inherit clovek ime priimek spol
method izpisiImePriimek = ime ^" " ^ priimek
method popraviPriimek novPriimek = priimek <- novPriimek
end;;
class zenska ime priimek =
object
inherit clovek ime priimek 'z'
method izpisiImePriimek = ime ^" " ^ priimek
method popraviPriimek novPriimek = priimek <- novPriimek
end;;
let klemen = new otrok "janez" "kekec" 't';;
klemen#izpisiImePriimek;;
klemen#popraviPriimek "bedanc";;
klemen#izpisiImePriimek;;
let jan = new moski "seageate" "barracuda";;
jan#izpisiImePriimek;;
jan#popraviPriimek "caviar";;
jan#izpisiImePriimek;;
let wd_red = new zenska "raid" "10";;
wd_red#izpisiImePriimek;;
wd_red#popraviPriimek "5";;
wd_red#izpisiImePriimek;;
class druzina imedruzine moz zena =
object
initializer
zena#popraviPriimek (String.sub
moz#izpisiImePriimek
(String.index moz#izpisiImePriimek ' ')
( (String.length moz#izpisiImePriimek) - (String.index moz#izpisiImePriimek ' ') )
)
val imedruzine = (imedruzine : string)
val moz = (moz : moski)
val zena = (zena : zenska)
val mutable otroci = ([] :otrok list)
method dodajOtroka otrok = otroci <- otrok::otroci
method izpisi = (moz#izpisiImePriimek,zena#izpisiImePriimek),List.map (fun x -> x#izpisiImePriimek) otroci
end;;
let druzinca1 = new druzina "kekci" jan wd_red;;
(*sexamo*)
druzinca1#dodajOtroka klemen;;
druzinca1#izpisi;;
let andrej = new otrok "jack" "daniels" 's';;
druzinca1#dodajOtroka andrej;;
druzinca1#izpisi;;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment