Anda di halaman 1dari 17

Kelompo Makalah PPL Observer Pattern k 1

Makalah PPL Observer Pattern


3 D Kelompokr 1e4 m IeT n D e p a t A T e k n Adrianti Kusuma W i k / 7409040002 I Riatma Galih n f o r m a t i k a / 7409040007 E E P I S I n d o n e s i a Shoffi Patrisia / 7409040011 Nurul Arini Z / 7409040020 April Fatmasari / 7409040030

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

DAFTAR ISI
1. Daftar Isi 2. Bab I : Pengertian Observer Pattern

hal. 2

hal. 3 Loosely Couple Applicability


1. Bab II :Struktur pada Observer

hal. 5 Relasi Observer dan Subject UML Diagram Class in UML Diagram
1. Bab III : Studi Kasus

hal. 9 Pelelangan Pacman Spreadsheet Program


1. Bab IV : Check List

hal. 13
2. Bab V : Perbandingan Program

hal. 13
3. Bab VI :Kesimpulan

hal. 15

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

I.

Pengertian Observer Pattern


Observer adalah suatu interface yang digunakan untuk memastikan suatu konsistensi pada suatu object, Observer pattern memiliki 2 bagian utama, yaitu satu subject yang akan memunculkan event - event tertentu, dan observer sendiri yang akan selalu mengamati event event yang terjadi pada subject. Hubungan antara subject dan observer ini berupa one-tomany, maksudnya satu subject akan memiliki banyak observer.

Saat ada event yang terjadi di subject, subject akan menotifikasi semua observer yang terdaftar dengan memanggil salah satu method yang ada di interface observer.

Loosely Couple
Observer pattern merupakan desain dimana hubungan subject dan observer bersifat loosely couple, karena: Yang perlu diketahui subyek dari suatu obyek observer hanyalah bahwa obyek observer mengimplementasikan tertentu. Kita dapat menambahkan obyek observer kapan saja. Kita tidak perlu memodifikasi subyek jika kita menambahkan tipe observer yang baru. Subyek maupun Observer dapat digunakan kembali tanpa tergantung satu dengan lainnya. suatu interface

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1 Perubahan yang terjadi di Subyek maupun Observer tidak akan mempengaruhi satu sama lain.

Applicability
Observer pattern digunakan ketika Subject tidak tahu berapa banyak observer yang ada Subject dapat menotifikasi observernya tanpa harus mengetahui object observernya.

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

I.

Struktur pada Observer


a. Relasi Observer dan Subject

Terdiri dari 2 point : Subject Observer

Subject : informasi sentral bagi observer jika ada update atau perubahan informasi pada subject --> mencerminkan pada observer yang berlangganan.

Setiap observer menyediakan methode AddObserver () observer baru dapat berlangganan sendiri pada subject.

a. UML Diagram

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

Pola Observer mendefinisikan dependensi one-to-many objek sehingga ketika satu objek change state,

antara semua

tanggungan yang akan diberitahu dan diperbarui secara otomatis. Perihal menggunakan komposisi untuk mendelegasikan observer.

b. Class in UML Diagram


Subject Interface

mendefinisikan signature dari metode yang diterapkan dalam objek subjek. Metode yang digunakan oleh observer untuk mendaftar dan unregister dari observer. Interface juga mendefinisikan signature dari metode yang digunakan untuk memberitahu observer ketika state subjek berubah Observer Interface

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

Interface ini mendefinisikan signature dari metode yang diterapkan di objek Observer. pada state. Concrete Subject Interface setidaknya mendefinisikan signature dari satu metode yang bisa disebut oleh subjek ketika perubahan

RemoveObserver(observer)

digunakan oleh concrete observer untuk unregister diri dari subjek itu sendiri sebagai parameter. Metode loop melalui array yang berisi semua observer yang terdaftar. Untuk check weather, apa sudah ada dalam array. Jika ada maka hanya request concrete observer dihapus dari array. NotifyObservers() untuk mengupdate concrete observer pada

digunakan

perubahan state subject. Metode loop melalui array yang berisi semua observer yang terdaftar dan memperbarui call () method pada setiap objek concrete observer, jika diperlukan kita bisa melewati beberapa nilai-nilai terkait untuk mengubah keadaan subjek melalui metode update () pada objek observer. Subject juga dapat menentukan metode seperti getState () dan setState (), yang digunakan untuk mengatur dan mendapatkan perubahan keadaan aplikasi pada Subyek,

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1 sehingga dapat memperbarui mengubah negara untuk semua observer yang terdaftar. Concrete Observer

mengimplementasikan interface Observer. Kelas mengimplementasikan update () metode yang didefinisikan dalam interface Observer. Metode concrete observer dipanggil sudah terdaftar perubahan di state. oleh Subject (jika concrete observer dengan subjek) ketika setiap sendiri

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

I.

Studi Kasus
a. Pelelangan

Pada kasus ini merupakan contoh bagaimana observer terjadi. Contohnya adalah pada pelelangan dimana mendemonstrasikan pola observer. Setiap penawar mengajukan beberapa nilai untuk diajukan lelang. Pelelang pun memulai tawarannya dan mengobservasi tawaran mana yang cocok untuk diterima. Misal pada gambar tersebut pelelang menerima tawaran dengan nilai 13. Maka ketika pelelang menerima 13, informasi tersebut di broadcast ke seluruh penawar dan kemudian nilai 13 tersebut diajukan lagi sebagai tawaran baru untuk dicari tawaran tertinggi yang akan diterima.

b. Pacman

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

Observer dapat diterapkan pula pada permainan pacman. Pada permainan terdapat Pacman sebagai Subject dan Musuh sebagai observer. Pola bagaimana yang menunjukkan pola observer dalam permainan ini? Setiap kali Pacman memakan pelet (titik), musuh akan dikonfirmasi bahwa si Pacman memakan peletnya. Tugas dari Musuh adalah menghalangi Pacman untuk menghabiskan pelet dalam 1 wilayah tersebut. Sehingga ketika Pacman membroadcast ke seluruh musuh bahwa ia telah memakan pelet, musuh pun akan menerima broadcast

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1 tersebut dan bergerak menuju tempat Pacman untuk mengagalkan Pacman berhasil memakan semua pelet yag tersedia. Berikut ini overview kode yang dibutuhkan dalam permainan Pacman dengan menerapkan pola observer. // set up Pacman class to broadcast Pacman extends EventDispatcher // tell enemies to listen to pacman instance pacman.addEventListener(Pacman.ATE_PELLET, enemy1.update); pacman.addEventListener(Pacman.ATE_PELLET, enemy2.update); pacman.addEventListener(Pacman.ATE_PELLET, enemy3.update); // broadcast state change pacman.dispatchEvent(new Event(Pacman.ATE_PELLET)); // enemies respond enemyClass.update() { // run away } c. Spreadsheet Program

Pada prorgam spreadsheet dapat diaplikasikan pula pola observer seperti pada diagram. Pada kasus ini yang bertindak sebagai Subyek adalah Spreadsheet Data. Sedangkan Observernya adalah Spreadsheet Formula, Bar Graph dan Pie Chart. Bagaimana Pola Observer yang terjadi? Ketika spreadsheet data mengirim notifikasi kepada Observernya saat terjadi perubahan pada data, SpreadSheet Formula , Bar Graph dan Pie Chart akan menerima notifikasi tersebut. Sehingga data yang baru saja berubah dapat diupdate secara otomatis oleh Observernya. Sehingga 3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1 masing-masing observer tidak perlu diubah secara manual jika terjadi perubahan data.

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

I. Check List
Apa yang perlu dilakukan untuk pattern Observer? Berikut adalah langkahlangkahnya. 1. Bedakan antara fungsi Inti (Independent) dan fungsi Opsional (Dependent). 2. Modelkan fungsi Independen sebagai Subjek. 3. Modelkan fungsi Dependent sebagai hirarki Observer. 4. Subjek hanya dipasangkan kepada kelas dasar Observer. 5. Klien mengkonfigurasi nomor dan tipe dari Observer. 6. Observer mendaftarkan diri mereka sendiri ke Subjek. 7. Subjek membroadcast kejadian ke semua Observer yang terdaftar. 8. Subjek dapat memberikan informasi kepada Observer, atau , Observer dapat Mencari informasi dari subjek.

I. Perbandingan Program
BEFORE
Jumlah dan jenis User Interface (atau Dependent) obyek terprogram di kelas Subyek. User tidak memiliki kemampuan untuk mempengaruhi konfigurasi ini.

classDivObserver { intm_div; public: DivObserver( int div ) { m_div = div; } void update( intval ) {

cout<<val<< <<m_div<< " is "

"

div

"

<<val / m_div<< '\n'; } };

classModObserver { intm_mod;

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1


public: ModObserver( int mod ) m_value = value; notify(); } void notify() { mod " m_div_obj.update( m_value ); m_mod_obj.update( m_value ); } };

{ m_mod = mod; } void update( intval ) { cout<<val<< "

<<m_mod<< " is " <<val % m_mod<< '\n'; } };

class Subject { intm_value; DivObserverm_div_obj; ModObserverm_mod_obj; public: Subject() : m_div_obj(4),

int main( void ) { Subject subj; subj.set_value( 14 ); }

// 14 div 4 is 3 // 14 mod 3 is 2

m_mod_obj(3) { } voidset_value( int value ) {

AFTER
Kelas Subjek sekarang dipisahkan dari jumlah dan tipe objek Observer. Klien telah meminta dua DivObserverdelegates (masing-masing dikonfigurasi berbeda) dan satu delegasi ModObserver.

class Observer { public: virtual void update( int value ) = 0;

}; class Subject { intm_value;

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1


vectorm_views; public: void attach( Observer* obs ) { m_views.push_back( obs ); } voidset_val( int value ) { m_value = value; notify(); } void notify() { for (inti=0; i<m_views.size(); + +i) m_views[i]->update( m_value ); } }; classDivObserver Observer { intm_div; public: DivObserver( Subject* model, int div ) { model->attach( this ); m_div = div; } /* virtual */ void update( int v ) { cout<< v << " div " <<m_div<< " is " : public { cout<< v << " mod " <<v / m_div<< '\n'; } }; classModObserver Observer { intm_mod; public: ModObserver( int mod ) { model->attach( this ); m_mod = mod; } /* virtual */ void update( int v ) Subject* model, : public

<<m_mod<< " is " <<v % m_mod<< '\n'; } }; int main( void ) { Subject subj;

DivObserver divObs1( &subj, 4 ); DivObserver divObs2( &subj, 3 ); ModObserver 3 ); subj.set_val( 14 ); } modObs3( &subj,

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1


// 14 div 4 is 3 // 14 div 3 is 4 // 14 mod 3 is 2

3 D4 IT A EEPIS Indonesia

Kelompo Makalah PPL Observer Pattern k 1

II. Kesimpulan
Pattern bisa diklasifikasikan Berdasarkan Tujuan Berdasarkan Ruang Lingkup

Berdasarkan Tujuan Pattern diklasifikasikan ke dalam Creational, Structural dan Behaviour. Contoh : Observer Pattern merupakan behavioural pattern, karena observer membantu memodelkan tingkah laku (behaviour) dan interaksi antar obyek. Klasifikasi Diagram Pattern

Observer pattern digunakan ketika Subject tidak tahu berapa banyak observer yang ada Subject dapat menotifikasi observernya tanpa harus mengetahui object observernya.

3 D4 IT A EEPIS Indonesia

Anda mungkin juga menyukai