Monday, December 17, 2012

MVC Approaching for OOP Based Application Design using C++

"MVC Approaching for Object Oriented Programming Based Application Using C++"
Dari judul artikel seperti itu setidaknya ada 3 hal yang harus dipahami sebelum meneruskan  membaca tulisan tidak jelas ini. Yaitu MVC design, Object Oriented Programming dan C++. Mungkin bagi sebagian besar orang yang terbiasa menggunakan pendekatan OOP dalam mengembangkan aplikasi mungkin bertanya, "OOP kok pake C++? struktur MVC lagi..", yaa setidaknya itu yang muncul di benak saya ketika mengetahui kenyataan bahwa harus menggunakan pendekatan dengan kombinasi yang cukup dibilang sulit ini.
C++ untuk develop aplikasi berbasis OO dan arsitektur MVC ditambah harus ada penggunaan persistence data. Cukup mengerikan rasanya. Umumnya bahasa OOP yang sering saya gunakan antara lain C#, Java maupun AS3 memiliki struktur yang sama. 1 class di wakili 1 file, tidak perlu bingung ngatur dependensi antar class juga, sangat mudah dalam penggunaan template class dan static variable. Dan sekarang harus melakukan semua itu di C++ yang dibuat untuk procedural programming ditambah lagi harus mengatur arus data ke File layaknya sebuah DMBS. Haha, pusing kalo dipikir. Yasudah lah ya dipikir aja tidak dikerjakan ya sama aja nol. Diruntut saja lah ya satu per satu.
Disini kita asumsikan saja sudah paham betul dengan konsep pemrograman C++ dan OOP yang dipaksakan dengan C++. Jadi masalahnya adalah bagaimana mengubah pendekatan object oriented umum yang biasanya berorientasi simulasi menjadi konsep yang berorientasi ke data. Umumnya jika belajar OOP yang ditekankan adalah bagaimana membuat keadaan di dunia nyata digambarkan dalam sebuah struktur class utuh. Dan yang seperti ini menurut saya bisa dibilang sebuah simulasi. Class yang dibuat umumnya class actor. Maksudnya, class-class ini merupakan sesuatu yang bisa melakukan perilaku sesuai methodnya. Misalnya class Student beri method doTask() yang menggambarkan seorang mahasiswa yang mampu mengerjakan tugasnya melalui method doTask(). Sedangkan jika berbicara arsitektur MVC yang umumnya untuk aplikasi berbasis Sistem Informasi, permodelannya sudah beda lagi. Di konsep ini pendekatannya adalah data yang terlibat di sistem, bukan siapa atau apa yang terlibat di dalam sistem. Umumnya di model ini class yang dibuat adalah class Entity yang isinya hanya enkapsulasi karakteristik datanya. Sebagai contoh, class Faculty dengan attribut id dan nama, sedangkan method-nya hanya berupa setter-getter saja, hanya untuk mengenkaspsulasi data atributnya.
Nah, dengan konsep yang berbeda jauh dari 2 permodelan ini tentu saja tidak bisa dipelajari dalam waktu singkat. Yang jelas, kalo menggunakan bentu MVC cocoknya untuk sistem informasi sedangkan klo dimodelkan OOP umum berbentuk simulasi atau game lebih cocok.
Dalam arsitektur MVC dibagi menjadi 3 bagian utama yaitu "M" untuk Model, "V" untuk "View" dan C untuk "Controller". Kalo dijelaskan satu persatu pasti butuh waktu lama. Yang jelas Model itu kelompok class yang digunakan sebagai data,  View adalah yang ditampilkan ke pengguna aplikasi, sedangkan Controller adalah pengatur arus data yang diambil dan ditampilkan ke View.
Well, langsung saja ke contoh kasus yang sangat sederhana sekali. Jadi misalkan ada sistem informasi yang hanya untuk manajemen data jurusan di suatu Institut teknik. Jadi datanya hanya data fakultas. Misalnya dibuatkan class Faculty. Kemudian untuk melakukan managemen data tersebut dibuatkan controller dengan nama FacultyController. Jadi untuk menambah, mengupdate dan menghapus data harus dilakukan melalui controller itu.
Desain class secara keseluruhan
Dari diagram tersebut class Faculty berperan sebagai data, sering juga disebut Persistence class atau Entity class. Di class tersebut hanya ada attribut dan setter-getter. DataAccess merupakan template class untuk entity controller. Dalam hal ini adalah FacultyController. Dengan memanfaatkan template class ini jika suatu saat ingin ditambahkan entity class baru, maka controllernya tinggal menjadi sub-class dari DataAccess dan mengimplementasi abstract method dari class tersebut. Dengan cara tersebut controller sudah bisa digunakan. Jadi template ini akan sangat membantu jika diperlukan banyak entity class dalam suatu kasus.
Implementasi dapat didownload di QueryBuilder.zip(~7 KB)

 
 
Copyright (c) 2010 printf("hello world"); and Powered by Blogger.