Hello guys, hari ini kita akan lanjutkan belajar python. Kali ini kita akan membahas tentang modularisasi pada python.
Apa itu Modularisasi
Dalam dunia pemrograman istilah modularisasi bisa dikatakan sangat populer. Berikut definisi modularisasi sebagaimana dikutip dari python-course.eu :
Modular programming is a software design technique to split your code into separate parts. These parts are called modules. The focus for this separation should be to have modules with no or just few dependencies upon other modules. In other words: Minimization of dependencies is the goal
Modular programming adalah teknik pemrograman dengan memisahkan kode menjadi beberapa bagian yang disebut dengan modules. Tujuannya untuk mengurangi ketergantungan antar modul. Teknik ini biasanya digunakan untuk software berskala besar. Software ini memiliki banyak modul di built sendiri-sendiri yang kemudian digabungkan untuk menjalankan fungsionalitas software tersebut.
Dalam bahasa python, modul diimplementasikan dalam file berekstensi .py yang berisi sekumpulan kode untuk menjalankan task tertentu. Modul dapat berisi class, function, statement, atau kode-kode yang lain. Salah satu keuntungan penggunaan modul adalah reusable. Artinya modul ini dapat dipanggil oleh modul lain yang berbeda-beda. Contoh modul bisa kita lihat dari file Listofdict.py seperti berikut:
Untuk membuat modul di pycharm, klik kanan project pilih New > Python File. Selanjutnya kita perlu memberi nama modul tersebut.
mobil_saya = [] mobil1 = {} mobil1['merk'] = 'avanza' mobil1['cc'] = 1300 mobil1['bahan_bakar'] = 'pertalite' mobil1['jenis'] = 'mpv' mobil_saya.append(mobil1) mobil2 = {} mobil2 ['merk'] = 'pajero' mobil2 ['cc'] = 2500 mobil2 ['bahan_bakar'] = 'pertamax' mobil2 ['jenis'] = 'suv' mobil_saya.append(mobil2)
Untuk memanggil modul diatas, kita bisa menggunakan sintaks from <nama_modul> import <nama_fungsi> seperti contoh berikut:
from Listofdict import * i = 0 print('mobil_saya: ') for mobil in mobil_saya: i += 1 print('{} : {} {} cc, bahan bakar {}'.format(i, mobil['merk'], mobil['cc'], mobil['bahan_bakar']))
Tanda asterisk (*) pada kode diatas akan mengambil semua variabel, fungsi, atau class yang ada pada modul Listofdict. Berikut output yang muncul ketika file diatas dijalankan:
Object oriented pada python
Sebagaimana bahasa pemrograman modern lainnya, Python juga mendukung konsep object oriented programming. Disini saya tidak akan mengulas panjang tentang OOP. Saya hanya mengenalkan konsep package, dan class di python dan bagaimana cara memanggilnya.
Package pada python
Just as a module is a collection of classes or functions, a package is a collection of modules. We can organise several module files into a directory structure. There are various tools which can then convert the directory into a special format (also called a “package”) which we can use to install the code cleanly on our computer (or other people’s computers).
Sebagaimana dijelaskan di python-textbok.readthedocs.io, package adalah direktori yang berisi kumpulan module. Untuk memanggil module yang terdapat didalam sebuah package, kita harus menyertakan nama packagenya.
Di Pycharm, membuat package sangatlah mudah. Kita hanya perlu klik kanan pada project, pilih New > Python package. Selanjutnya akan muncul prompt untuk memasukkan nama package seperti gambar berikut:
Setiap pembuatan package, pycharm akan menambahkan modul __init__ secara otomatis.
Class dalam modul pada python
Sebuah modul dalam python dapat berisi class, variabel atau function yang bisa dipanggil oleh modul yang lain. Berikut definisi class dalam python sebagaimana dikutip dari geeksforgeeks.org.
A class is a user-defined blueprint or prototype from which objects are created. Classes provide a means of bundling data and functionality together. Creating a new class creates a new type of object, allowing new instances of that type to be made. Each class instance can have attributes attached to it for maintaining its state. Class instances can also have methods (defined by its class) for modifying its state.
Class adalah sebuah prototype dari sebuah object yang nantinya akan dibuat. Class mirip seperti variabel bertip komplek yang memiliki atrbut dan perilaku nya sendiri. Atribut dalam class dikenal dengan properties dan perilakunya dikenal dengan method.
Hahaha…anda masih bingung? untuk lebih jelasnya, langsung saja kita modifikasi contoh list dari mobil_saya kemarin menjadi bentuk class. Eittts….sebentar. Sebelum melakukan modifikasi, mungkin lebih enak kalo kita membuatnya dengan paradigma Model View Controller (MVC).
Apa itu paradigma MVC ?
Model–view–controller (usually known as MVC) is a software design pattern commonly used for developing user interfaces which divides the related program logic into three interconnected elements. This is done to separate internal representations of information from the ways information is presented to and accepted from the user.
Sebagaimana dijelaskan di wikipedia, MVC merupakan suatu bentuk desain software yang membagi sebuah aplikasi ke dalam 3 element yang saling berhubungan. Elemen itu berupa Model, View dan Controller.
- Model : berisi struktur data dinamis. Bertugas untuk mengambil data dan mendistribusikannya ke controller.
- View : berisi tampilan informasi yang akan dimunculkan pada user. View dapat berupa table, chart atau tulisan biasa.
- Controller : bertugas untuk menerima input dari user kemudian mengirimkannya ke model untuk diproses lalu mengirimkan outputnya ke view.
Hubungan ketiganya bisa dilihat dari gambar berikut:
Setelah kita memahami paradigma MVC diatas, kita akan mencoba membuat package, modul dan class di python dengan menggunakan paradigma MVC ini.
Implementasi modular dengan paradigma MVC di python
Setelah berhasil membuat package mobil, kita perlu membuat modul dengan nama models dan views. Berikut tampilan struktur direktori di pycharm:
Selanjutnya kita buat class untuk mobil di dalam modul models. Berikut code models nya.
class Mobil: def __init__(self, merk, cc, bb, jenis): self.merk = merk self.cc = cc self.bb = bb self.jenis = jenis def __str__(self): return '{} {} cc, bahan bakar {}'.format(self.merk, self.cc, self.bb, self.jenis) mobil_saya = [] mobil1 = Mobil('avanza', 1300, 'pertalite', 'MVP') mobil_saya.append(mobil1) mobil_saya.append(Mobil('pajero', 2500, 'pertamax', 'SUV'))
Instansiasi class di python dapat dilakukan dengan 2 cara. Kita bisa membuat object terlebih dahulu atau langsung menambahkan object pada list milik kita. Untuk memanggil class diatas, kita perlu melakukan import dengan sintaks from mobil.models import mobil_saya
di modul views. Kode lengkapnya seperti berikut:
from mobil.models import mobil_saya i = 0 for dt in mobil_saya: i += 1 print('{} : {} '.format(i, dt))
Jika dijalankan, kode diatas akan menghasilkan output seperti berikut.
Sampai disini pembahasan kita tentang Modularisasi di python. Pemahaman fundamental python ini sangat penting agar bisa lebih memahami python dengan kode yang lebih komplek.
Happy coding guys 🙂
Fullstack Developer yang tinggal di yogyakarta. Suka eksplorasi hal baru yang berhubungan dengan pemrograman dan ilmu keislaman. Berpengalaman dalam pemrograman PHP, Delphi dan sedang upgrade skill dengan python. Just as simple that.