Prinsip-prinsip pemprograman SOLID

Posted: 6 Juli 2014 in programming

Prinsip – prinsip pemprograman SOLID

Oke kali ini saya akan share sedikit tentang prinsip-prinsip pemprograman.

saya berikan tutorialnya namun cuman komen sedikit saja. selebihnya silahkan baca sendiri ya.

tenang mungkin awal2 merasa bingung. tapi tenang saja. saya sendiri tidak memahaminya secara instan, butuh waktu setidaknya 3 bulan lebih untuk memahaminya bagi saya.
prinsip2 ini saya peroleh waktu bekerja di PT. Magic Softasia System http://www.magicsoft-asia.com/ , saya bekerja disini sewaktu kuliah, pas ada program PKL di kampus ya sudah sekalian saya “PKL” di tempat kerja saya, sangat efisien , dapat ilmu, dapat tambahan uang jajan he he . saya share kan nanti di bagian akhir.

Saya dibimbing oleh Pak I Made Ciptayasa yang sangat mahir dalam pemprograman, terima kasih Pak Sudah membimbing saya.

Prinsip pemprograman ini bisa disebut SOLID Principles silahkan buka link berikut tutorial mudahnya http://www.blackwasp.co.uk/SOLIDPrinciples.aspx

berikut tutorialnya https://dl.dropboxusercontent.com/u/80151151/paradigma.rar

 

oke anggap anda sudah bisa dasar2 pemprograman, lalu pernahkah berfikir ketika anda coding semakin lama semakin bertambah banyak, lalu dikemudian hari diperbaiki dengan menambah modul2 baru sehingga banyak sekali yang dirubah ? ya itulah, kalau coding hanya insert update delete view tabel itu mudah, tapi bagaimana membuat sebuah code program tidak ruwet dikemudian hari itu hal yang penting.

  1. Single Responsiblity Principle ( “S” dari SOLID) => Satu class harus punya satu tujuan, jangan anda tempatkan dalam 1 class banyak method yang berbeda meskipun method tersebut memiliki 1 tujuan yang sama atau saling berhubungan. Pastikan 1 kelas memiliki tanggung jawab tunggal,  namun bukan berarti 1 class berisi 1 method, hal ini berguna bila kemudian hari kode berkembang perubahan nya tidak menimbulkan bug tumbuh. Dengan 1 class 1 tanggungjawab / tujuan makan ketika berubah drastis. silahkan baca link berikut sebagai contoh http://www.blackwasp.co.uk/SRP.aspx\
  2. Open Close Principle ( “O” dari SOLID) =>Code harus terbukan untuk penambahan, tapi tertutup untuk modifikasi. misal anda punya modul begini
    int modul=1;
    if (modul==1)
    {
          modul_buka();
    }
    else if (modul==2)
    {
         modul_tutup();
    }
    else if (modul==3)
    {
         modul_pindah();
    } 
    
    

    ketika modul bertambah misal modul_diam() tentu Anda akan menambahkan if then baru untuk menampungnya kan ? if (modul==4) dan seterusnya. Dalam prinsip Open Close Principle , kode harus open dalam extension (penambahan) namun tertutup dalam modifikasi. Sehingga ketika menambah modul kita tidak merubah if then nya. untuk itu dibutuhkan Dependency Injector.silahkan lihat link berikut http://www.blackwasp.co.uk/OCP.aspx , untuk dependency injectornya bisa dilihat di link berikut http://www.blackwasp.co.uk/DependencyInjection.aspx

  3. Liskov Substitution Principle ( “L” dari SOLID) => definisi mudahnya “sebuah fungsi yang menggunakan kelas dasar dapat menggunakan kelas turunannya tanpa mengetahui bagaimana kelas turunan tersebut” . jadi ketika kelas turunannya berubah atau diganti makan fungsi yang menggunakan kelas diatas nya (kelas induk / superclass) tidak terpengaruh. contohnya anda punya fungsi yang menggunakan method dari kelas turunan dari superclass tersebut, ketika kelas turunannya berubah tentu fungsi tersebut harus berubah / diedit bukan ?🙂 jadi dengan LSP ini anda menggunakan kelas bapaknya tapi menggunakan method anaknya, ketika anaknya berubah fungsi anda tidak terpengaruh untuk dirubah juga. lebih jelasnya silahkan baca http://www.blackwasp.co.uk/LSP.aspx
  4. Interface Segregation Principle ( “I” dari SOLID) => misal Anda punya class dengan banyak properti (variabel) , ada lebih dari satu kelas yang menggunakannya kelas dengan banyak properti tersebit namun banyak kelas yang menggunakannya itu tidak menggunakan semua. anda punya kelas contact dengan 4 properti (nama, alamat, email , telpon)  lalu digunakan oleh kelas pengirim email  hanya nama dan email, sedangkan kelas telpon cuman menggunakan nama dan telpon. tentu kelas email tidak membutuhkan properti telpon, sedangkan kelas telpon tidak membutuhkan properti email. dengan ISP maka menggunakan Interface untuk memisahkan mana yang digunakan oleh masing2 class . lebih jelasnya silahkan baca http://www.blackwasp.co.uk/ISP.aspx
  5.  Dependency Inversion Principle ( “D” dari SOLID) => modul tingkat tinggi (bapak) tidak bergantung pada modul tingkat rendah (anak). keduanya bergantung pada abstraksi. abstraksinya tidak bergantung pada rincian, tapi rincianlah yang bergantung pada abstraksi. jadi antar class tidak kaku dan saling tergantung karena bila ada penambahan misalnya, kelas yang berhubungan akan berubah juga. berikut silahkan baca di http://www.blackwasp.co.uk/DIP.aspx

ini laporan PKL saya, ada lengkap beserta programnya juga. saya terapkan di MultiDatabase Library yang intinya kita bisa ganti2 database tanpa merubah code :-)  pakai Visual Studio 2010 : LAPORAN PKL LENGKAP

berikut versi pdf nya

 

dan terakhir … correct me if I’m wrong ^_^
semoga bermanfaat

 

 

 

 

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s