2 of 21
Outline Object dan Classes
Konsep pemrograman berorientasi object (OOP)
OOP dalam R: Sistem S3 dan Sistem S4
Ilustrasi
Objek dan Class
Objek:
KamusWebster:
Object: a visible or tangible thing of relative stable form; A thing that may be apprehended intellectually; A thing to which thought or action is directed
Pemrograman:
Objek memiliki state, behavior, and identity (Booch)
Objek:
KamusWebster:
Object: a visible or tangible thing of relative stable form; A thing that may be apprehended intellectually; A thing to which thought or action is directed
Pemrograman:
Objek memiliki state, behavior, and identity (Booch)
Objek dan Class Objek
The state of an object encompasses all of the (static) properties of the object plus the current (dynamic) values of each of these properties
Behavior is how an object acts and reacts, in terms of state changes and interactions with other objects.
Identity is the property of an object that distinguishes it from all other objects.
Class adalah kumpulan objek yang berbagi struktur dantingkah laku yg sama/umum
Class merupakan abstraksi dari objek
Konsep Pemrograman OO
Tidak semua konsep dari pemrograman berorientasi objek
diterapkan dalam R
Konsep yang diimplementasikan:
Encapsulation
Inheritance
Polymorphism
EncapsulationEncapsulation means that a group of related properties, methods, and other members are treated as a single unit or object. Objects can control how properties are changed and methods are executed.
Why: Makes it easier to change your implementation at a later date by letting you hide implementation details of your objects, a practice called data hiding.
InheritanceInheritance describes the ability to create new classes based on an existing class. The new class inherits all the properties and methods and events of the base class, and can be customized with additional properties and methods.
Why: Promotes code reuse since the code for the methods of the subclasses do not need to be rewritten.
PolymorphismPolymorphism means that you can have multiple classes that can be used interchangeably, even though each class implements the same properties or methods in different ways. Polymorphism is essential to object-oriented programming because it allows you to use items with the same names, no matter what type of object is in use at the moment.
Why: Polymorphism becomes more flexible. Subclasses can keep some methods inherited from their super classes and override others.
OOP dalam R
Semua dalam R adalah objek
Fungsi class digunakan untuk melihat tipe dari objek
numeric
logical
character
complex
List
Class yang lebih kompleks: matrix atau array
Ilustrasi Objek
Suatu objek untuk manipulasi data numerik yang
direpresentasikan dalam suatu lokasi koordinat x y.
Cara mudah untuk menyimpan vektor lokasi koordinat adalah
dalam list
pts <- list (x=round(rnorm(5),2),
y=round(rnorm(5),2))
Perhatian !!!!
Langkah sederhana dalam membuat objek sebelumnya sangat
tidak dianjurkan karena nilai-nilai instan-nya mungkin tidak
tepat
Sebuah fungsi konstruktor dibutuhkan untuk mengecek
instan sesuai dengan objek
Misal:
x dan y harus berupa numerik
vektor tidak boleh NA, NaN, Inf
Vektor harus memiliki panjang yang sama
Menghilangkan informasi class
Kadang tidak dibutuhkan informasi dalam bentuk class
Gunakan fungsi unclass
Fungsi Aksesor
Walaupun objek coords dapat diperlakukan sebagai list untuk
akses data, tetapi akan lebih baik digunakan fungsi aksesor
sendiri
Akan membuat lebih modular dan mudah di modifikasi
Fungsi Generik dan Metode
Atribut Class adalah dasar dari mekanisme OO sederhana
sistem objek “S3”
Mekanisme menggunakan tipe fungsi yang disebut fungsi
generik
Fungsi generik bertindak untuk beralih memilih fungsi
tertentu atau metode tertentu yang dijalankan
Metode tertentu yang dipilih tergantung dalam class argumen
pertama
Contoh: Akan lebih baik jika fungsi print untuk class coords
memiliki metode yang berbeda dengan print list
Menciptakan fungsi generik
Metode hanya dapat didefinisikan untuk fungsi yang generik
Untuk menciptakan fungsi generik
Menambahkan nilai dalam coords
Diinginkan sebuah objek yang berisi lokasi (coords) dan nilai
(value)
Diperlukan menciptakan objek baru dari class vcoords
Objek akan dilabeli dengan class baru atau yang lama
sehingga masih dapat menggunakan metode yang sudah
dibuat
Transformasi Matematika
Objek vcoords berisi slot numerik yang dapat diubah dengan
transformasi matematika
Diinginkan:
fungsi matematika untuk nilai (tidak koordinat)
penambahan, pengurangan, perkalian dan pembagian dari dua
buah objek
Membandingkan nilai dua objek
dll
Metode grup: Math
Hampir semua fungsi matematika membutuhkan identifikasi
yang sama
Langkah lebih cepat menggunakan fungsi get(.Generic)
Ekspresi get(.Generic) mengambil fungsi dengan nama
Math.vcoords yang dijalankan
Metode grup: Ops
Mendefinisikan metode untuk Ops generik membuat
mungkin secara simultan mendefinisikan metode untuk
semua operasi biner:
Metode supaya berjalan secara tepat diperlukan untuk
menyakinkan lokasi dari vcoords adalah identik
Kompleksitas
Sesuatu mungkin lebih kompleks dibanding sebelumnya
Perbandingan (==, !=, <, <=, dll) mengembalikan nilai
logik sehingga menghasilkan hasil vcoords yang tidak perlu
dalam kasus ini
Hanya satu argumen operator biner yang dibutuhkan.
Dibutuhkan pemeriksaan tipe
Subset
Diinginkan untuk memiliki akses terhadap metode subset
Ekspresi berikut misal diinginkan:
Dapat ditangani dengan mendefiniskan metode untuk [
Assign terhadap subset
Syntax yang diinginkan:
Ekspresi ini secara formal equivalen:
Fungsi [<- adalah generik dan mungkin mendefinisikan
metode untuk hal ini
Penggantian umum
Secara umum, mungkin untuk mendefinisikan untuk semua
bentuk ekspresi:
Menggunakan
sehingga efek tepat dapat diperoleh dengan mendefinisikan
secara tepat dari ‘fun<-’
Evaluator R juga dapat dipanggil secara nested sepeti
Masalah dalam Sistem Objek S3
Sistem Objek S3 dalam R memberikan fasilitas object-
oriented, tetapi terlalu longgar
Ekspresi berikut diperbolehkan dalam R
Sistem objek S3 tidak secara lengkap dapat dipercaya
Masih banyak technical issue dalam sistem objek S3
Top Related