Model-View-Controller (MVC) Design Pattern Untuk

advertisement
Model-View-Controller (MVC) Design Pattern
Untuk Aplikasi Perangkat Bergerak Berbasis Java
Panji Wisnu Wirawan
Program Studi Teknik Informatika, Universitas Diponegoro
[email protected]
Abstrak
Design pattern merupakan salah satu teknik mendesain komponen perangkat lunak yang bisa digunakan kembali.
MVC design pattern merupakan design pattern untuk komponen perangkat lunak yang memisahkan secara tegas
antara model data, tampilan, dan kendali perangkat lunak. Artikel ini akan membahas MVC design pattern disertai
kesesuaiannya dengan aplikasi perangkat bergerak berbasis Java. Bagian akhir artikel ini menunjukkan bagaimana
MVC design pattern untuk aplikasi bergerak berbasis Java.
Kata Kunci : MVC, design pattern, aplikasi perangkat bergerak berbasis Java
1. Pendahuluan
Komponen perangkat lunak sudah semestinya
didesain dan diimplementasikan sehingga bisa
digunakan ulang (reused) pada perangkat lunak yang
lain[6]. Sebagai contoh penggunaan komponen
perangkat lunak yang dapat digunakan ulang adalah
penggunaan text box, drop down menu dan
sebagainya.
Contoh lain dari komponen perangkat lunak
adalah pola-pola tertentu untuk menyelesaikan
masalah yang disebut sebagai design pattern. Polapola tersebut akan tetap sama untuk aplikasi yang
berbeda. Sebagai contoh, ada pola tertentu untuk
memisahkan tampilan, kendali program, dan model
data yang kemudian disebut sebagai model-viewcontroller (MVC) design pattern. Biasanya design
pattern ini digunakan pada aplikasi perangkat lunak
yang menggunakan antarmuka grafis / graphical user
interface (GUI)
Perkembangan aplikasi bergerak yang begitu
pesat sudah selayaknya menggunakan komponenkomponen perangkat lunak yang bisa digunakan
ulang sehingga dapat meminimalkan usaha
pengembangan aplikasi perangkat bergerak. Pada
umumnya, aplikasi perangkat bergerak menggunakan
GUI. Penggunaan MVC diharapkan bermanfaat untuk
pembuatan komponen perangkat lunak untuk aplikasi
bergerak yang bisa digunakan ulang.
Salah satu penelitian mengenai design pattern
untuk aplikasi perangkat bergerak berbasis Java telah
dilakukan oleh Narsoo dan Mohamudally (2008).
Narsoo dan Mohamudally (2008) melakukan
identifikasi design pattern untuk mobile services
menggunakan Java 2 Mobile Edition (J2ME). Mobile
services tersebut termasuk dalam behavioral pattern
yaitu add, edit, erase dan search. Berbeda dengan
artikel tersebut, artikel ini membahas penggunaan
MVC design pattern pada J2ME.
2. Design Pattern
Design pattern merupakan deskripsi kelas-kelas
dan objek-objek yang berkomunikasi yang disusun
untuk memecahkan masalah perancangan secara
umum pada konteks tertentu[3]. Sebuah design pattern
memiliki
nama,
membuat
abstraksi,
dan
mengidentifikasi aspek-aspek desain yang umum
untuk membuat desain berorientasi objek yang bisa
digunakan ulang.
2.1. Kategori
Design pattern memiliki 3 kategori [7], di mana
masing-masing kategori memiliki tujuan tertentu.
Kategori tersebut adalah :
1. Structural pattern
Structural pattern berfokus pada bagaimana
beberapa kelas dan objek disusun untuk
membentuk struktur yang lebih besar[3]. Façade
pattern merupakan satu contoh dari structural
pattern. Façade pattern menunjukkan bagaimana
membuat sebuah objek yang mencerminkan
keseluruhan sub sistem[2].
2. Behavioral pattern
Behavioral pattern berhubungan dengan algoritma
dan tanggung jawab antar objek-objek[3]. Strategy
pattern merupakan satu contoh dari behavioral
pattern yang menunjukkan bagaimana algoritma
dienkapsulasi[2].
3. Creational pattern
Creational pattern bertujuan untuk membuat
abstraksi proses instansiasi[3]. Creational pattern
membantu sistem bagaimana objek dibuat secara
independen. Singleton pattern merupakan satu
contoh dari creational pattern yang menjamin
bahwa sebuah kelas hanya memiliki sebuah instan
dan memberikan satu akses global[2].
tersebut adalah untuk memisahkan data (Model),
menyajikan data (View), dan logika untuk menangani
kejadian (event) dari data ke penyajian maupun
sebaliknya (Controller).
MVC merupakan design pattern yang terdiri dari
design pattern yang lain disebut sebagai compound
pattern [2]. Compound pattern mengkombinasikan
dua atau lebih design pattern yang memecahkan
masalah tertentu. MVC meliputi 3 design pattern
yaitu :
1. Composite pattern
Composite pattern bertindak sebagai komponen
View. Composite pattern bertugas menampilkan
komponen antarmuka grafis dan memperbarui
tampilan ketika diperlukan. Notifikasi perubahan
tampilan dilakukan oleh Controller.
2. Strategy pattern
Strategy pattern bertindak sebagai komponen Model.
Model diorganisasikan dalam strategy pattern.
3. Observer pattern
Observer pattern bertindak sebagai komponen
Controller, yang memungkinkan penggunaan view
yang berbeda dengan model yang sama. Atau bahkan
menggunakan banyak view sekaligus.
2.2. MVC Design Pattern
MVC terdiri dari 3 macam objek[3]. Model
merupakan objek aplikasi, View adalah presentasi
sedangkan Controller mendefinisikan bagaimana
antarmuka pengguna bereaksi terhadap input. Tanpa
MVC, antarmuka pengguna cenderung menyatukan
objek-objek tersebut. Dengan MVC, diharapkan
menambah fleksibilitas dan pemakaian kembali.
MVC
digunakan
utamanya
ketika
mengembangkan perangkat lunak dengan antarmuka
grafis (Graphical User Interface, GUI)[3][8]. Namun,
secara umum, MVC dapat digunakan untuk
mengembangkan sistem yang interaktif. Kegunaan
Gambar 1. MVC design pattern
(Shalloway, 2001)
Gambar 1 menunjukkan class diagram yang
menggambarkan MVC design pattern. Gambar
tersebut menjelaskan bagaimana masing-masing
komponen (design pattern sebagai model, view, dan
controller) berkomunikasi.
Pada gambar 1, jika diamati lebih lanjut, MVC
merupakan Observer Pattern di mana Controller dan
View merupakan concrete observer dan Model
berperan sebagai subject.
4. MVC Design Pattern Pada J2ME
Pada bagian ini, kesesuaian MVC design pattern
dengan J2ME akan dibahas untuk setiap komponen
MVC. Fokus pada artikel ini adalah pada High-level
API.
4.1. View
3. Aplikasi Perangkat Bergerak Berbasis Java
Aplikasi perangkat bergerak berbasis Java
didukung oleh Java 2 Micro Edition (J2ME). J2ME
merupakan keluarga Java untuk telepon selular dan
perangkat bergerak yang lain[1]. J2ME didesain untuk
perangkat elektronik yang tidak memiliki cukup
memori untuk menjalankan Java edisi standar (J2SE).
Aplikasi perangkat bergerak yang dibangun di
atas J2ME disebut MIDlet [4]. MIDlet dibuat dengan
pustaka J2ME yang berbeda dengan J2SE. Dalam
kaitannya dengan MVC, pustaka java.util.Observer
pada J2SE yang pada umumnya digunakan sebagai
pustaka untuk membuat komponen Controller MVC,
tidak tersedia pada J2ME. Jadi, diperlukan hal khusus
untuk mengatasi ketiadaan java.util.Observer, jika
akan menggunakan MVC oada J2ME.
Dalam J2ME dikenal 2 pustaka, yaitu high-level
Application Programming Interface (API) dan lowlevel API. Perbedaan keduanya adalah pada
pengaksesan kendali tampilan dan masukan
pengguna. High-level API menggunakan kelas
Screen, sedangkan Low-level API menggunakan
kelas Canvas. Gambar 2 menjelaskan hirarki dari
masing-masing API tersebut pada pustaka J2ME.
J2ME telah memberikan kemudahan dalam view,
karena pustaka untuk menangani peletakan komponen
pada tampilan telah disediakan. Yang perlu
diperhatikan adalah fungsi masing-masing kelas
seperti Form, List, dan lain-lain, karena masingmasing
memiliki
karakteristik
dalam
mengorganisasikan tampilan.
Komponen view pada MVC design pattern J2ME
menurunkan (inherit) kelas pustaka J2ME untuk
tampilan javax.microedition.lcdui.Form. Hal ini
dilakukan karena pengaturan tampilan telah dilakukan
secara default oleh pustaka tersebut. Kelas lain yang
dalam
hirarki
gambar
2
sejajar
dengan
javax.microedition.lcdui.Form,
bisa
digunakan
semisal akan dibuat view yang lain.
Pada komponen View akan terdapat metode
update,
yang
akan
memperbarui
tampilan
berdasarkan notifikasi dari komponen Model.
4.2. Model
Pada gambar 1, komponen Model merupakan
implementasi dari subject interface, di mana interface
tersebut berisi kontrak untuk memasukkan dan
mengeluarkan view yang akan diperbarui tampilannya
ketika ada perubahan pada model data. Logika bisnis
(business logic) juga diisikan pada kontrak interface
tersebut.
Gambar 2. Hirarki High-level API dan Low-level API
(Knudsen, 2003)
Pada model terdapat metode notifyView yang akan
melakukan notifikasi ketika ada perubahan pada
komponen Model. Notifikasi ini dilakukan kepada
semua View yang sudah dimasukkan/terdaftar pada
komponen Model.
4.3. Controller
Pada J2ME, komponen Controller bertugas untuk
meminta komponen Model untuk melakukan logika
bisnis tertentu sekaligus sebagai entry point aplikasi.
Jadi, Komponen Controller adalah MIDlet itu sendiri.
yang akan diperbarui karena memiliki metode untuk
melakukan notifikasi ketika ada perubahan data.
Komponen Model juga berisi logika bisnis aplikasi.
Dengan pemisahan tersebut diharapkan terbentuk
komponen perangkat lunak yang bisa dipakai kembali
(reusable).
6. Referensi
[1] Barbagallo, R., Wireless Game Development In
Java With MIDP 2.0, Wordware Publishing, 2004.
[2] Freeman, E., et.al, Head First Design Pattern ,
California: O’Reilly Media Inc, 2004.
[3] Gamma, E., et.al., Design Patterns : Elements of
Reusable Object-Oriented Software, AddisonWesley Professional, 1994.
[4] Knudsen, J, Wireless Java-Developing with
J2ME, Apress, 2003.
[5] Narsoo, J. dan Mohamudally,N., Journal of Issues
in Informing Science Information Technology,
42(5), Identification of Design Pattern for Mobile
Services with J2ME, 621-643.
Gambar 3. MVC design pattern J2ME
Dari pemaparan masing-masing komponen MVC
yang disesuaikan dengan J2ME di atas, dapat disusun
diagram kelas pada gambar 3 yang menunjukkan
MVC design pattern untuk J2ME.
5. Kesimpulan
MVC design pattern bisa disusun untuk aplikasi
perangkat bergerak berbasis Java / J2ME. Masingmasing komponen (Model, View dan Controller) bisa
disusun dalam kelas-kelas tersendiri.
Komponen View memiliki komponen tambahan
khusus dari pustaka J2ME untuk mengorganisasikan
tampilan / View. Komponen Controller merupakan
MIDlet yang akan meneruskan pesan ke Komponen
Model. Komponen Model berisi daftar tampilan/view
[6] Pressman, R.S, Software Engineering: A
Practitioner’s Approach 6th ed, Mc Graw Hill,
2005.
[7] Shalloway,A. dan Trott J.R., Design Pattern
Explained : A New Perspective On Object
Oriented Design, Addison-Wesley Professional
,2001.
[8] Yacoub S.M, dan Ammar H.H, Pattern-Oriented
Analysis and Design: Composing Patterns to
Design Software Systems, Addison-Wesley
Professional, 2003.
Download