p emrograman berbasis komponen 2
DESCRIPTION
P emrograman Berbasis Komponen 2. Strategy dan Observer Pattern. OBSERVER PATTERN. Project : The Weather Monitoring Application. Menggunakan WeatherData object yg bisa mengambil current condition ( temperatur , kelembapan , dan tekanan ) Harus membuat kemampuan menampilkan : - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/1.jpg)
Pemrograman Berbasis Komponen 2
Strategy dan Observer Pattern
![Page 2: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/2.jpg)
OBSERVER PATTERN
![Page 3: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/3.jpg)
Project : The Weather Monitoring Application
Menggunakan WeatherData object yg bisa mengambil current condition (temperatur, kelembapan, dan tekanan)
Harus membuat kemampuan menampilkan: Current condition, weather statistics, simple
forecast
![Page 4: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/4.jpg)
Project : The Weather Monitoring Application
Yang harus bisa diexpand: Harus bisa dibuat API nya sehingga para
developer bisa menggunakan API (dan bayar pada Weather-O-Rama)
Kita hanya disediakan WeatherData source code!
![Page 5: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/5.jpg)
Desain awal
Device yang mendapatkan data
Melacak data dari weather station dan mengupdate tampilan
![Page 6: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/6.jpg)
Yang kita tahu• WeatherData punya getter method untuk mengambil
temperatur, kelembapan, dan tekanan• Method measureChanged() dipanggil setiap saat ketika
data tersedia dan ada perubahan• Kita harus membuat display untuk current condition,
statistic, dan forecast• System harus bisa diexpand
– Developer lain boleh membuat elemen lain– Pengguna boleh tambah/menghapus elemen yang diinginkan– Jenis yang diketahui baru 3 (kondisi aktual, statistik, dan
perkiraan)
![Page 7: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/7.jpg)
Implementasi Awal
![Page 8: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/8.jpg)
berdasarkan Strategy Pattern?• Kita harus menenkapsulasi fungsi update
karena selalu berubah• Jika kita membuat langsung implementasi
konkret, maka kita akan kesulitan untuk mengubah elemen2 display lain tanpa mengubah program
• Kita sebaiknya menggunakan interface umum yang memiliki method update() yg menerima parameter temp, humidity, dan presure
• Kita akan gunakan OBSERVER PATTERN
![Page 9: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/9.jpg)
Timeout
![Page 10: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/10.jpg)
Studi Kasus• Studi kasus: Langganan Surat Kabar• Penerbit menerbitkan surat kabar• Kita bisa mendaftarkan diri untuk berlangganan• Selama kita berlangganan (dan membayar), kita
pasti dapat surat kabar itu• Kita bisa berhenti berlangganan kapan pun• Pelanggan tidak hanya kita
![Page 11: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/11.jpg)
• Publisher + subscriber = Observer Pattern• Publisher = SUBJECT• Subscriber = OBSERVERS
![Page 12: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/12.jpg)
![Page 13: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/13.jpg)
![Page 14: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/14.jpg)
Definisi
![Page 15: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/15.jpg)
Penjelasan• Subject Interface: digunakan untuk
mendaftarkan, menghapus, dan memberi tahu Observer
• Subject boleh memiliki lebih dari satu Observer• Observer Interface: method update() digunakan
jika state Subject berubah• ConcreteSubject: implementasi real interface
Subject• ConcreteObserver: implementasi real interface
Observer
![Page 16: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/16.jpg)
BACK: Weather Monitoring Application
![Page 17: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/17.jpg)
Implementasi Subject, Observer, & DisplayElement
![Page 18: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/18.jpg)
WeatherData
![Page 19: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/19.jpg)
WeatherData
![Page 20: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/20.jpg)
WeatherData
![Page 21: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/21.jpg)
CurrentConditionsDisplay
![Page 22: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/22.jpg)
Hasil
![Page 23: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/23.jpg)
Contoh Kasus Lain
![Page 24: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/24.jpg)
Studi Kasus Lain• Swing pada Java juga menggunakan
Observer Pattern
• Bisa sebutkan kasus-kasus apalagi yang bisa dipecahkan dengan Strategy Pattern atau Observer Pattern ?
![Page 25: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/25.jpg)
Design Pattern
• Design pattern merupakan best practices yang sudah teruji
• Hanya cocok untuk kasus tertentu saja
• Pahami permasalahan, pilih pattern yang sesuai
![Page 26: P emrograman Berbasis Komponen 2](https://reader036.vdocuments.pub/reader036/viewer/2022081507/568165ae550346895dd89b75/html5/thumbnails/26.jpg)
Next
• Factory Pattern– Produksi object yang bisa dicustomize
• Singleton– Cukup satu saja (one of a kind)