-
M. Irfan Junaidi authoredM. Irfan Junaidi authored
Tutorial 2
Pada sesi tutorial-1
kemarin, kamu sudah menerapkan dua buah design pattern, yaitu Strategy Pattern
dan Observer Pattern
. Pada sesi tutorial-2
ini, kamu akan menerapkan design pattern yang sudah kamu pelajari minggu ini, yaitu Command Pattern
dan Template Method
.
Command Pattern
Kesuksesanmu dalam menyelesaikan permasalahan yang dihadapi oleh berbagai pelaku usaha tersebar ke penjuru negeri. Kali ini, perusahaan bioskop ternama, PT Citra Gagah Visual, memintamu untuk membuat sebuah program yang dapat mengontrol perangkat-perangkat yang ada dalam suatu cinema.
Dalam satu cinema, terdapat beberapa perangkat yang dapat dikontrol. Perangkat-perangkat tersebut adalah:
- Pendingin ruangan
- Layar
- Lampu
Pendingin ruangan dapat dinyalakan dengan mode LOW, MEDIUM, dan HIGH, serta dimatikan. Layar bisa dinyalakan untuk menampilkan iklan dan juga film serta dimatikan. Sedangkan untuk lampu hanya bisa dinyalakan atau dimatikan saja.
Aplikasi ini terdiri dari dua halaman. Halaman pertama adalah /cinema-admin/enable-device
. Halaman ini digunakan untuk enable perangkat-perangkat yang ada dalam cinema.
Halaman kedua adalah /cinema-admin/control-panel
. Halaman ini digunakan untuk mengontrol perangkat dan menampilkan riwayat penggunaannya. Perangkat yang tampil di halaman ini hanya perangkat yang sudah di-enable sebelumnya.
Kamu diharapkan untuk membuat program yang dapat mengontrol perangkat-perangkat tersebut dengan mengimplementasikan Command Pattern
.
UML Diagram
Template Method
PT Citra Gagah Visual cukup puas dengan hasil kerjamu. Kamu kemudian direkomendasikan untuk mengerjakan sistem baru yang ingin dibuat oleh perusahaan bioskop lain, yaitu PT XIXIXI.
Bioskop PT XIXIXI menyediakan tiga jenis cinema, yaitu Reguler, Deluxe, dan Premium. Sistem yang sudah ada saat ini terbagi menjadi tiga untuk masing-masing jenis cinema tersebut. Padahal, langkah yang perlu dilakukan untuk mengoperasikan ketiganya sama saja.
Langkah-langkah yang perlu dilakukan untuk mengoperasikan cinema adalah sebagai berikut:
- Menyalakan pendingin ruangan
- Menghidupkan lampu
- Menghidupkan layar
- Menyalakan sound system
- Menampilkan iklan
- Mematikan lampu
- Menampilkan film
- Menghidupkan lampu
- Mematikan sound system
- Mematikan layar
- Mematikan lampu
- Mematikan pendingin ruangan
Tentu saja ada alasan mengapa terdapat tiga jenis cinema, yaitu pengaturan perangkat yang ada di dalam cinema berbeda-beda.
Pada cinema reguler, pendingin ruangan diatur pada pengaturan paling rendah (LOW) demi menghemat biaya tiket. Pada cinema Deluxe, pendingin diatur pada pengaturan standar (MEDIUM). Lalu pada cinema Premium, pendingin ruangan diatur pada pengaturan paling tinggi (HIGH) untuk memaksimalkan kenyamanan penonton.
Durasi iklan yang ditampilkan juga berbeda. Iklan pada cinema Reguler durasinya 10 detik, pada cinema Deluxe 3 detik, dan pada cinema Premiere sama sekali tidak menampikan iklan.
Format film yang ditampilkan pun berbeda. Cinema Reguler dan Deluxe menampilkan film dengan format QHD, sedangkan cinema Premium menampilkan film dengan format UHD.
Aplikasi ini terdiri dari dua halaman. Halaman pertama adalah /template/cinema
. Halaman ini digunakan untuk memilih jenis cinema.
Halaman kedua adalah /template/cinema/<jenis-cinema>
. Halaman ini digunakan untuk melihat keluaran dari aplikasi per jenis cinema.
Kamu diminta untuk membuat sebuah sistem yang dapat "mengontrol" operasi ketiga jenis cinema tersebut dengan pengaturan yang berbeda-beda hanya dari satu program saja dengan mengimplementasikan Template Method