Penerapan OOP pada OpenERP

Setelah kita mempelajari dasar2 object & class pada python, sekarang saya ingin memberikan contoh penerapannya pada OpenERP.

Setiap class pada openerp mempresentasikan suatu object atau table pada database. Baik yang asli (_name) maupun inherit (_inherit). Jika dalam python, membuat object class dengan perintah :

nama_object = NamaClass()

atau dengan method :

nama_object.nama_method(self, parameter1)

sedangkan dalam OpenERP dengan perintah :

nama_object = self.pool.get(‘nama.table’)

atau dengan method :

nama_object.nama_method(self, cr, uid, ids, context={})

Keduanya memiliki fungsi yang sama begitu juga dengan fitur2nya. Kemudian dalam suatu method ada beberapa parameter yang sering kita lihat baik dalam Python = nama_method(self, parameter1, parameter2) maupun OpenERP seperti nama_method(self, cr, uid, ids, context={}).  Penjelasannya sebagai berikut :

self        : Parent dari method tsb.
cr          : Cursor pada database
uid         : ID user yang sedang login
ids         : ID object/table yang aktif
context     : Dictionary berisi data2 (paramater2) yang diperlkan

Contoh method yang parameternya telah diberikan nilai default :

    def nama_method(self, parameter1 = False, parameter2 = []):
        if parameter1: # Sama seperti if parameter1 == True
            print 'Perintah ini akan dijalankan ketika parameter1 bernilai True'
        elif parameter2: # Sama seperti if parameter2 != []
            print 'Perintah ini akan dijalankan ketika parameter2 tidak list yang kosong'

Method diatas dapat kita panggil tanpa kita perlu memberikan parameter yang diwajibkan method itu, karna sudah di set nilai defaultnya. Contoh :

nama_objek.nama_method()

Dan kita juga bisa memberikan/merubah nilai parameter tsb agar code perintah didalam method tsb dijalankan. Contoh :

nama_objek.nama_method(True, [1,2,3])
Contoh method yang parameternya tidak diberikan nilai default :

    def nama_method(self, parameter1, parameter2):
        if parameter1: # Sama seperti if parameter1 == True
            print 'Perintah ini akan dijalankan ketika parameter1 bernilai True (selain = False, None, [], (), {}, dll)'
        elif parameter2: # Sama seperti if parameter2 == True
            print 'Perintah ini akan dijalankan ketika parameter2 bernilai True (selain = False, None, [], (), {}, dll)'

Method diatas harus kita panggil dengan memberikan parameter yang diwajibkan method itu, karna belum di set nilai defaultnya. Contoh :

nama_objek.nama_method(True, [1,2,3])

Jika kita memanggil method tsb tanpa memberikan parameter yang diwajibkan, hasilnya adalah ERROR. Seperti contoh dbawah ini :

nama_objek.nama_method()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: nama_method() takes exactly 2 arguments (0 given)

Cara membaca error diatas yaitu, Method nama_method() meWAJIBkan 2 parameter. Tetapi anda tidak memberikan parameter (0 parameter)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s