Monday, October 20, 2014

MVC Sederhana Dengan Python

Pemrograman Python sudah mendukung pengembangan aplikasi berbasis MVC, beberapa aplikasi dan framework berbasis Python populer saat ini yang sudah mendukung MVC dengan Python antara lain wxPython, Django dan Web2py.

Terinspirasi dengan artikel wxPython yang mengulas teknik pembuatan aplikasi berbasis MVC, dengan tulisan ini saya bermaksud sedikit berbagi bagaimana menggunakan teknik MVC sederhana dalam pemrograman Python.

Tapi sebelum kita mulai tidak ada salahnya kita ulas sedikit apa itu yang dimaksud MVC.

Dikutip dari Wikipedia, Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller). Dalam implementasinya kebanyakan framework dalam aplikasi website adalah berbasis arsitektur MVC. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna, dan bagian yang menjadi kontrol dalam sebuah aplikasi web.

Model, Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data ke basis data, pembaruan data dan lain-lain.

View, View adalah bagian yang mengatur tampilan ke pengguna. Bisa di katakan berupa halaman web.

Controller, Controller merupakan bagian yang menjembatani model dan view. Controller berisi perintah-perintah yang berfungsi untuk memproses suatu data dan mengirimkannya ke halaman web.

Dibawah ini adalah contoh pengaplikasian teknik MVC yang mungkin 'teramat sangat' sederhana. Sebelum Anda memulai pastikan di PC atau laptop Anda sudah terinstall Python (dan IDLE), berikut contoh kodenya :

class Model:
    def __init__(self):
        self.kata="\"Text from Model\""
        self.data=[]
    def tampil1(self):
        self.tambahkata()
        return self.data
    def tampil2(self):
        self.kata="\"Simple Model View Controller\""
        self.tambahkata()
        return self.data
    def tambahkata(self):
        self.data.append(self.kata)      

class View:
    def nampil1(self,data):
        print "\n\rData pertama : " + data[0]
    def nampil2(self,data):
        print "\n\rData kedua : " + data[1]
    def nampilsemua(self,data):
        print "\n\rTampilkan semua data :"
        if len(data)>0:
            for d in data:
                print d


class Controller:
    def __init__(self):
        self.model=Model()
        self.view=View()
        self.teks=""
    def tampilKata1(self):
        self.teks=self.model.tampil1()
        self.view.nampil1(self.teks)
    def tampilKata2(self):
        self.teks=self.model.tampil2()
        return self.view.nampil2(self.teks)
    def semuaKata(self):
        return self.view.nampilsemua(self.model.data)
    def tanpaView(self):
        print "\n\r\"Accessing Controller directly without View\""


def main():
    app=Controller()
    app.tampilKata1()
    app.tampilKata2()
    app.semuaKata()
    app.tanpaView()
   
if __name__ == '__main__':
    main()


Bila tidak ada kesalahan berikut hasil keluarannya :

Data pertama : "Text from Model"

Data kedua : "Simple Model View Controller"

Tampilkan semua data :
"Text from Model"
"Simple Model View Controller"

"Accessing Controller directly without View"

No comments: