Object-Oriented Programming (OOP)
Nim mendukung multi paradigma seperti fungsional dan OOP. Object-oriented programming atau dalam bahasa indonesia pemrograman berorientasi objek adalah pola pemrograman yang mengabungkan record dan fungsi menjadi kedalam satu ikatan yang disebut objek.
Objek juga termasuk kedalam bentuk tipe data buatan, setiap deklarasi dan isinya kita yang menentukanya. Objek dibuat dengan adanya kelas (class), kelas berisi deklarasi fungsi (disebut metod) dan variabel dari field record (disebut attribut) yang akan digunakan untuk digunakan oleh objek.
-
Record biasa
type <nama record> = object <nama field>:<tipe data field> ....
-
Sebuah definisi record dengan objek
type <nama objek> = object <nama atribut>:<tipe data field> .... proc <nama metod> : (this: <nama objek>) = <baris kode metod>
Contohnya seperti ini :
type
Orang = object
nama: string
umur: int
proc echo(this: Orang) =
echo this.nama
echo this.umur
proc siapaYangLebihTua(this: Orang, lain: Orang) =
if this.umur > lain.umur:
echo this.nama & " lebih tua dari " & lain.nama
else:
echo lain.nama & " lebih tua dari " & this.nama
Contoh diatas sebuah kelas Orang memiliki atribut nama
danumur
lalu metod bernama echo
dan
siapaYangLebitTua
.
Bukanya ini hanya Record dan Procedure/Fungsi biasa ? Benar begitu lah cara melakukan OOP di Nim, berikut ini cara pakainya:
let anya = Orang(nama: "Anya", umur: 21)
let elsa = Orang(nama: "Elsa", umur: 18)
anya.echo()
elsa.echo()
anya.siapaYangLebihTua(elsa)
Jadi tidak ada istilah khusus yang digunakan untuk membuat kelas di Nim, cukup dengan sebuah Record dan Sub-program yang menjadikan tipe data record tersebut sebagai parametenrnya.
Fun-fact: Record dikenal dengan object di Nim dan bisa disebut sebagai object tanpa kelas.