OCaml/Obiektowość
Z Wikibooks, biblioteki wolnych podręczników.
< OCaml
Obiektowość w OCamlu na przykładzie dwóch klas. Druga z nich dziedziczy metody i atrybuty od pierwszej.
open Printf (* Klasa podstawowa *) class pojazd model = object val model = model; (* Nie zmienny po utworzeniu... *) val mutable predkosc = 0; (* Musi być zainicjalizowane *) method gaz n = predkosc <- n; printf "%s ma prędkość %d\n" model predkosc; method stop = predkosc <- 0; printf "%s zatrzymany\n" model end;; (* Klasa dziedzicząca *) class samochod model = object inherit pojazd ("Samochód " ^ model) (* Podajemy parametr klasie bazowej inicjalizując ją *) method swiatla w = if w = true then printf "Światła włączone\n" else printf "Światła wyłączone\n"; end;; (* Stworzenie instancji "pojazd" i wywołanie metod *) let rower = new pojazd "Rower";; rower#gaz 5;; rower#stop;; (* Stworzenie instancji klasy "samochód" *) let volvo = new samochod "Volvo";; volvo#swiatla true; volvo#stop;; (* Wynik działania programu: *) Rower ma prędkość 5 Rower zatrzymany Światła włączone Samochód Volvo zatrzymany