Pelajari Pemrograman Berorientasi Objek (OOP) beserta objek R, berbagai kelas seperti S3 dan S4, termasuk konstruksi, pembuatan fungsi generic dengan contoh, dan banyak lagi.
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.
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.
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.
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 '$'.
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.
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'.
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:
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.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.