MATERI 3a Pemrograman Berorientasi Objek (S3) STK372 KOMPUTASI STATISTIK II Agus Mohamad Soleh
Outline Object dan Classes Konsep pemrograman berorientasi object (OOP) OOP dalam R: Sistem S3 dan Sistem S4 Ilustrasi 2 of 21
Objek dan Class Objek: Kamus Webster: 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 dan tingkah 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
Encapsulation Encapsulation 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.
Inheritance Inheritance 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.
Polymorphism Polymorphism 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))
Menambahkan sebagai Class Untuk menjadikan sebagai objek gunakan fungsi class
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
Fungsi konstrukror
Menggunakan fungsi konstruktor
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
Metode print
Metode length Fungsi generik lain misal length yang bisa dibangkitkan untuk kasus ini
Menciptakan fungsi generik Metode hanya dapat didefinisikan untuk fungsi yang generik Untuk menciptakan fungsi generik
Menciptakan Metode bbox
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
Fungsi konstruktor
Menggunakan konstruktor
Mendefinisikan Metode print Metode print pada class coords sudah tidak tepat lagi
Hasil Metode print: Metode bbox untuk kasus ini masih tepat, jadi tidak perlu diubah
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
Fungsi Matematika Misal fungsi cos atau sin untuk objek
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
Hasil
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
Metode Grup: Ops
Hasil
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
Memeriksa Class objek Untuk memeriksa class objek disarankan menggunakan fungsi inherits:
Ilustrasi
Ilustrasi
Subset Diinginkan untuk memiliki akses terhadap metode subset Ekspresi berikut misal diinginkan: Dapat ditangani dengan mendefiniskan metode untuk [
Metode Subset
Assign terhadap subset Syntax yang diinginkan: Ekspresi ini secara formal equivalen: Fungsi [<- adalah generik dan mungkin mendefinisikan metode untuk hal ini
Definisi Metode Assign Subset
Ilustrasi
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
Ilustrasi
Masalah dalam Sistem Objek S3 Sistem Objek S3 dalam R memberikan fasilitas objectoriented, tetapi terlalu longgar Ekspresi berikut diperbolehkan dalam R Sistem objek S3 tidak secara lengkap dapat dipercaya Masih banyak technical issue dalam sistem objek S3
AKHIR MATERI