47
STK372 KOMPUTASI STATISTIK II MATERI 3a Pemrograman Berorientasi Objek (S3) © Agus Mohamad Soleh

MATERI 3a Pemrograman Berorientasi Objek (S3)stat.ipb.ac.id/en/uploads/AMS/STK372-Komputasi Statistik/2016... · Class adalah kumpulan objek yang berbagi struktur dan ... OOP dalam

Embed Size (px)

Citation preview

STK372 KOMPUTASI STATISTIK II

MATERI 3a

Pemrograman Berorientasi Objek (S3)

© Agus Mohamad Soleh

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))

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 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

AKHIR MATERI