Lewati ke konten utama

Objek dan Kelas di R

Pelajari Pemrograman Berorientasi Objek (OOP) beserta objek R, berbagai kelas seperti S3 dan S4, termasuk konstruksi, pembuatan fungsi generic dengan contoh, dan banyak lagi.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Pemrograman Berorientasi Objek (Object-Oriented Programming/OOP) adalah paradigma pemrograman di mana berbagai metode digunakan untuk merancang perangkat lunak berpusat pada data atau objek alih-alih fungsi. Metode pada dasarnya adalah fungsi, dibahas dalam konteks OOP. Disebut berorientasi objek karena semua pemrosesan berputar di sekitar objek dan field. Setiap objek memiliki atribut dan perilaku yang berbeda.

Dalam pemrograman berorientasi objek, seluruh program dapat dibagi menjadi berbagai kelas untuk memahami eksekusi program dengan cepat. R adalah bahasa pemrograman fungsional, dan OOP akan membantu menangani masalah sistem berskala besar. OOP biasa digunakan untuk mengelola aplikasi GUI, terutama aplikasi web. Pemrograman Berorientasi Objek bagus untuk membangun alat analisis data namun kurang cocok untuk analisis data itu sendiri.

Sistem OOP

Secara umum ada dua sistem utama OOP, yang dijelaskan di bawah ini:

  • Kelas S3: Memungkinkan Anda melakukan overloading fungsi.
  • Kelas S4: Memungkinkan Anda membatasi data karena cukup sulit untuk melakukan debug program

Catatan: Kelas-kelas ini akan dibahas lebih detail pada bagian berikutnya.

Objek di R

Objek adalah instans dari kelas. Selain itu, segala sesuatu di R adalah objek dan untuk mengetahui lebih lanjut lihat Tipe data di R. Objek juga dapat memiliki atribut seperti class, attributes, dimnnames, names, dan sebagainya.

Misalnya, objek diberi nilai menggunakan <-, perhatikan potongan kode berikut di mana 'a1' dan 'a2' adalah variabel yang diberi nilai numerik.

a1 <- 10
a2 <- 20

Sebuah objek dapat diberi sekumpulan angka di mana 'a3' adalah objek yang berisi vektor dari berbagai angka.

a3 <- c(10,20,30)

Di sini c memuat angka 10, 20, 30 ke dalam sebuah vektor.

Mari ambil contoh kehidupan nyata seperti seorang siswa yang memiliki atribut nama, usia, kelas, dan jenis kelamin; sedangkan guru memiliki nama, usia, dan jenis kelamin.

st_name <- "andrew"
st_age <- 16
st_class <- 10
st_gender <- "male"

t_name <- "angelina"
t_age <- 26
t_gender <- "female"

student <- c(st_name, st_age, st_class, st_gender)
teacher <- c(t_name, t_age, t_gender)


print(student)
print(teacher)
[1] "andrew" "16"     "10"     "male"  
[1] "angelina" "26"       "female"   

Kode di atas menghasilkan keluaran berikut:

"andrew" "16" "10" "male"  
"angelina" "26"  "female"

Pada kode di atas, Anda dapat melihat contoh di mana terdapat berbagai jenis objek. Objek 'student' dan 'teacher', yang juga disebut variabel, berisi tipe 'character' dan 'double'.

Kelas di R

Kelas adalah cetak biru yang membantu membuat objek dan memuat variabel anggotanya beserta atributnya.

Seperti dibahas sebelumnya, ada dua kelas di R, yaitu S3 dan S4.

Kelas S3

Kelas-kelas ini membantu melakukan overloading fungsi dengan memecahnya menjadi generic dan methods.

functions = generic + methods

S3 sangat berbeda dari bahasa pemrograman lain seperti C#, Java, dan sebagainya. Karena sangat mudah diimplementasikan, S3 hanya menggunakan argumen pertama untuk dispatch. Itulah mengapa tidak memerlukan terlalu banyak pengetahuan dari sudut pandang programmer.

S3 bekerja dengan mendefinisikan konvensi penamaan yang ketat berupa generic dot class.

                             generic.class

Argumen metode harus memuat argumen milik generic, dan metode harus menyertakan ...arg.

Membangun beserta Contoh Kelas S3

Berikut ini Anda akan diperlihatkan bagaimana membangun kelas S3, yang menunjukkan pembuatan list di mana komponen dilewatkan bersama dengan nama kelas yang tepat diikuti hasil yang akan dicetak.

Contoh berikut menunjukkan 'studentBio' memuat sebuah list di mana komponen dilewatkan sebagai list yaitu 'student_name', 'student_age', dan 'student_contact'. Kelasnya dinamai 'Student Info', dan 'studentBio' adalah kelas yang baru dibuat dengan nilai yang ditampilkan di bawah.

studentBio <- list(studentName = "Harry Potter", studentAge = 19, studentContact="London")
class(studentBio) <- "StudentInfo"
studentBio
$studentName
[1] "Harry Potter"

$studentAge
[1] 19

$studentContact
[1] "London"

attr(,"class")
[1] "StudentInfo"

Kode di atas memberikan keluaran sebagai berikut:

$studentName
 "Harry Potter"

$studentAge
19

$studentContact
"London"

attr(,"class")
"StudentInfo"

Jika Anda belum nyaman menulis fungsi di R, bacalah Panduan Menggunakan Fungsi di R!

Membuat Generic Method Anda sendiri di S3

Anda akan mengimplementasikan fungsi generic di bawah ini menggunakan kode berikut.

Kode di bawah menunjukkan fungsi generic bernama 'contact' di mana fungsi dengan objek yang dilewatkan ditetapkan kepadanya. Selain itu, 'UseMethod' digunakan dengan fungsi generic bernama 'contact' yang dilewatkan, di mana terjadi 'dispatching' metode, yaitu proses ketika hasil bervariasi berdasarkan argumen yang dilewatkan.

contact <- function(object) {
UseMethod("contact")
}

Mari buat metode untuk kelas tertentu yang telah Anda buat sebelumnya bernama 'StudentInfo'. Metode 'contact' diikuti notasi titik bersama kelas 'StudentInfo' digunakan, di mana badan fungsi memuat akses ke atribut 'studentContact' menggunakan '$'.

contact.StudentInfo <- function(object) {
cat("Your contact is", object$studentContact, "\n")
}
contact(studentBio)
Your contact is London

Kode di atas menggunakan object$studentContact, di mana objek yang dilewatkan sebagai argumen fungsi bersama '$' untuk mengakses atribut 'studentContact', yang menghasilkan keluaran sebagai berikut.

Your contact is London

Kelas S4

Kelas S4 lebih ketat, konvensional, dan lebih dekat dengan konsep Berorientasi Objek. Kelas-kelas diwakili oleh definisi kelas formal S4. Secara khusus, S4 memiliki fungsi setter dan getter untuk metode dan generic. Dibandingkan kelas S3, S4 dapat memfasilitasi multiple dispatch.

Mari lihat kelas-kelas R yang telah dibahas dengan membuatnya dan membahas melalui contoh.

Sebuah kelas S4 didefinisikan menggunakan fungsi set class.

 setClass()

Membangun beserta Contoh Kelas S4

Seperti dibahas sebelumnya, kelas S4 didefinisikan oleh metode setClass(). Anda akan menggunakan metode setClass() untuk membuat dan mendefinisikan kelas S4. Kita akan menggunakan subrutin untuk memverifikasi konsistensi data (validasi) dan juga menetapkan nilai default (paradigma).

Berikut adalah kode untuk mendefinisikan kelas dan slot-nya:

Berikut digunakan untuk mendefinisikan kelas, juga disebut 'prototype', di mana slot didefinisikan dengan nama kelas 'employee', name bertipe character, id bertipe numeric, dan contact bertipe character.

setClass("employee", slots=list(name="character", id="numeric", contact="character"))

Kode berikut dapat membuat instans atau objek spesifik dari S4.

Mari buat objek menggunakan 'new' dengan nama kelas 'employee' di dalamnya, dengan slot seperti name, id, dan contact diisi dengan nilai.

obj <- new("employee",name="Steven", id=1002, contact="West Avenue")
obj
An object of class "employee"
Slot "name":
[1] "Steven"

Slot "id":
[1] 1002

Slot "contact":
[1] "West Avenue"
An object of class "employee"
Slot "name":
"Steven"

Slot "id":
1002

Slot "contact":
"West Avenue"

Keluaran di atas menunjukkan bahwa objek yang dibuat bertipe kelas "employee" dan Slot "name" bernilai "Steven" bersama Slot "id" bernilai 1002 dan Slot "contact" bernilai "West Avenue".

Fungsi dan perintah

Untuk memeriksa apakah sebuah objek adalah objek S4 atau bukan, dua perintah berikut dapat digunakan:

Perintah 'is.object(obj)' memeriksa apakah sebuah variabel atau instans merujuk pada objek atau tidak.

is.object(obj)

TRUE

Kode di atas menghasilkan keluaran berikut:

TRUE

Perintah 'is.S4(obj)' memeriksa apakah sebuah variabel atau instans merupakan objek S4 atau bukan.

isS4(obj)

TRUE

Kode di atas menghasilkan keluaran berikut:

TRUE

Mengakses dan Memodifikasi nilai slot

Mengakses slot

Slot dapat diakses menggunakan "@" alih-alih "$".

'obj@name' digunakan di mana nama objek beserta nama slotnya untuk mengakses nama 'Steven' dan dilakukan serupa pada 'obj@id'.

obj@name
obj@id

'Steven'

1002

Kode di atas menghasilkan keluaran berikut:

'Steven'
1002

Memodifikasi slot

Mari memodifikasi nilai slot cukup dengan menggunakan operator penugasan ("<-") di mana 'obj@contact' diberi nilai baru yaitu "North Avenue".

obj@contact <- "North Avenue"
obj
An object of class "employee"
Slot "name":
[1] "Steven"

Slot "id":
[1] 1002

Slot "contact":
[1] "North Avenue"

Kode di atas menghasilkan keluaran berikut:

An object of class "employee"
Slot "name":
"Steven"

Slot "id":
1002

Slot "contact":
"North Avenue"

Keluaran di atas menunjukkan bahwa Slot "contact" telah berubah nilainya dari sebelumnya "West Avenue" menjadi "North Avenue".

Sebagai alternatif, ada opsi menggunakan 'slot()' untuk mengubah nilai.

'slot(obj, "id")' menunjukkan nilai slot "id" untuk diubah dengan penugasan 1004, dan hasilnya dicetak dengan 'obj'.

slot(obj,"id") <- 1004
obj
An object of class "employee"
Slot "name":
[1] "Steven"

Slot "id":
[1] 1004

Slot "contact":
[1] "North Avenue"
An object of class "employee"
Slot "name":
"Steven"

Slot "id":
1004

Slot "contact":
"North Avenue"

Keluaran di atas menunjukkan bahwa Slot "id" telah berubah nilainya dari sebelumnya 1002 menjadi 1004.

Membuat Generic Method Anda sendiri di S4

Mari buat fungsi yang membantu mencetak keluaran sesuai kebutuhan, di mana 'setMethod()' dan fungsi generic bernama 'show()' digunakan. Selain itu, nilai semua slot diakses dengan '@', dan namanya dicetak. Terakhir, keluaran diperoleh dengan memanggil 'obj'.

setMethod("show",
"employee",
function(object) {
cat("Name:",object@name, "\n")
cat("Id:",object@id, "\n")
cat("Contact:", object@contact, "\n")
}
)
obj
Name: Steven
Id: 1004
Contact: North Avenue
Name: Steven
Id: 1004
Contact: North Avenue

Keluaran di atas menunjukkan bahwa hasil dicetak dalam bentuk nama Slot beserta nilai Slot masing-masing.

Selamat

Selamat, Anda telah sampai di akhir tutorial ini!

Dalam tutorial ini, Anda telah mempelajari Pemrograman Berorientasi Objek (OOP) beserta objek R, berbagai kelas seperti S3 dan S4, termasuk konstruksinya, membuat fungsi generic dengan contoh, dan banyak lagi.

Jika Anda ingin mempelajari lebih lanjut tentang R, lihat kursus DataCamp berikut:

Object-Oriented Programming with S3 and R6 in R

Topik
R
Data Science

Pelajari lebih lanjut tentang R

Kursus

Pemrograman Berorientasi Objek dengan S3 dan R6 di R

4 jam
23.7K
Kelola kompleksitas dalam kode Anda menggunakan pemrograman berorientasi objek dengan sistem S3 dan R6.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya