Welcome to Abdul Malik Ikhsan's Blog

Programming Methodology – The Introduction

Posted in Teknologi by samsonasik on November 14, 2010

Programming methodology dapat diartikan jenis pendekatan yang bisa dilakukan untuk memecahkan masalah secara pemrograman. Programming Methodology berkaitan erat dengan analisis, desain, dan implementasi program. Beberapa methodology yang banyak dipakai secara umum ada 3, yaitu :

1. Unstructural Programming Methodology
Adalah sebuah pendekatan di mana kita meng-kode program secara langsung, ketika permasalahan bertambah, code program pun bertambah. Sebagai contoh pada assembly programming. Ketika kita menemukan sebuah bug, maka kita harus mendebug program secara komplit. Dalam methodology ini, jelas tidak ada reusability program karena kita harus mere-code program nya. Satu-satunya kelebihan dari unstructural ini karena ia sangat dekat dengan bahasa mesin.
2. Procedural Programming Methodology
Pendekatan yg dilakukan adalah “Top Down Approach“. Yaitu sebuah pendekatan dengan melihat permasalahan dari atas, kemudian membagi menjadi potongan-potongan sub task permasalahan. Sebagai contoh pada kalkulator, maka kita membagi kalkulator itu menjadi 2 bagian, Scientific dan Non Scientific, kemudian misalnya dari Non Scientific itu kita bagi lagi menjadi float operation dan integer operation. Setelah itu kita bagi lagi masing-masing menjadi operasi tambah, kurang, kali, dan bagi.  Setiap sub task yg dibagi akan dikumpulkan dan jadilah aplikasi kalkulator. Dengan cara ini, proses debugging menjadi sangat mudah karena kita bisa mere-use kode program untuk module aplikasi yang lain. Procedural programming methodology berkonsentrasi pada apa yang dibutuhkan untuk melakukan suatu hal, bukan pada siapa yang akan menggunakan.
Dalam procedural programming methodology, ruang lingkup data dibagai menjadi 2, yaitu : Global dan Lokal. Anggaplah kita mempunyai bagan beberapa procedure seperti gambar berikut :

Kita mempunyai variable x, maka variable itu bisa dipanggil di procedure 1, 2, dan 3. Variable ini mempunyai ruang lingkup Global. Sedang ketika kita mendeklarasikan variable a, ruang lingkupnya hanya di procedure 1 saja, inilah ruang lingkup lokal. Nah, bagaimana ketika kita ingin ada sebuah variable yang bisa diakses oleh Procedure 1 dan 2 saja ? Hm.., jawabannya adalah tidak bisa. Nah, inilah kelemahan dari Procedural Programming Methodology, yaitu data yang tidak aman karena tidak terlokalisasi.
3. Object Oriented Programming Methodology
Methodology ini menggunakan pendekatan “Bottom-Up”. Ketika ada permasalahan, kita melihat dari bawah, dengan cara melihat “Who are Going to Using“. Anggaplah kita punya permasalahan yang harus dipecahkan, yaitu sistem kursus. Siapa aja yang memakai Sistem itu ? Contoh Trainer, Trainee, dan Admin. Trainer dapat mengikuti test dan mendapatkan nilai. Trainee dapat  menulis soal, dan melihat nilai, admin dapat mengatur user.
Ok, so, what is an Object ? Object dapat berupa apapun.Misal, pulpen , Laptop , meja , dan lain-lain. bisa berupa benda hidup, maupun yang tidak hidup. Setiap object mempunyai 2 hal, satu adalah state dan satunya lagi adalah behavior. State adalah hal yang bisa dilihat dari look and feel-nya, misal panjang, lebar, warna, harga, dan lain-lain.  Behavior adalah apa yang bisa dilakukan, misalnya menulis, menggambar, dan lain-lain.  State dari object disebut ATRIBUTE, dan behavior disebut METHOD. Nah, untuk mendefiniasikan object, kita gunakan blueprint object, yang kita sebut sebagai CLASS. Class adalah template/ blueprint object, berupa koleksi atribute dan method. Kita harus memberikan hak akses terhadap atribute dan method yang disebut sebagai Access Specifiers atau Access Modifiers yang secara umum ada 3, yaitu private, protected, dan public. Akses private hanya bisa diakses oleh kelas itu sendiri melalui method yang bersifat public, protected bisa diakses oleh kelas itu sendiri dan turunannya yang bersifat public, dan akses public bisa diakses oleh semua kelas.
Dengan OOP, lokalisasi data menjadi lebih terarah. Kapan sebaiknya pakai OOP dan kapan sebaiknya pakai Procedural, bisa dibaca di artikel saya yang telah lalu.

Semoga bermanfaat. 🙂
This article contained copyrighted material licensed under various creative commons licenses unless otherwise noted:
Photo :
http://stevemooradian.com/wordpress/wp-content/images/programming/_code.jpg
Video :
http://makvin-it.com

Advertisements

Zend Framework – Registering Zend Database Adapter in Registry for Complex Queries

Posted in Tutorial PHP, Zend Framework by samsonasik on November 11, 2010

Zend Framework menggunakan 2 diantara 4 Data Source Architectural Patterns yang diperkenalkan oleh Martin Fowler, yaitu Table Data Gateway (object bentukan bertugas sebagai pintu gerbang table ) dan Row Data Gateway (object bentukan bertugas sebagai pintu gerbang single record), sama dengan Active Record, hanya saja di dalam Active Record bisa ditambahkan domain logic. How about performance ? Yeah, An ORM will always come with a performance penalty. Tetapi, kita seharusnya tidak mengesampingkan ORM hanya karena hal tersebut. Kelebihan memakai teknik ORM ini adalah memetakan table ke dalam object dengan property-property di dalamnya yang berhubungan dengan table sehingga mengubah pola pikir kita dari complex query menjadi lebih sederhana.

Hanya saja, perlu diakui, ORM dalam kaitannya dengan filtering, updating, maupun inserting ke dalam table dengan logic yang rumit akan jadi hambatan bagi developer. ORM cocok sekali dipakai untuk hal-hal yang bersifat CRUD dan operasi-operasi sederhana yang butuh kecepatan ketimbang menuliskan query yang kompleks. Ketika query yang rumit dan kompleks kita perlukan, kita sebaiknya menggunakan Query biasa :).

Zend Framework memberikan solusi pada permasalahan ini. Kita bisa menyimpan database adapter ke dalam registry.
Anggap saja kita mempunyai konfigurasi database seperti berikut :

;db config
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "your.database.host"
resources.db.params.dbname = "database_name"
resources.db.params.username = "username"
resources.db.params.password = "password"

Nah, di file bootstrap atau index.php, kita bisa define deh :

$fileconfig= APPLICATION_PATH.'/configs/application.ini';
$config=new Zend_Config_Ini($fileconfig,APPLICATION_ENV);
$db= Zend_Db::factory($config->resources->db->adapter,$config->resources->db->params);
Zend_Registry::set('db',$db);

Dan ketika sewaktu-waktu kita perlukan, kita bisa panggil langsung, misal :

$db = Zend_Registry::get('db');
$query = $db->query(" this is a complex query for table relation for selecting, updating, or filtering which can't be handled by ORM");

Referensi :
Patterns of Enterprise Application Architecture, Fowler, Martin
http://efreedom.com/Question/1-2034201/Set-Current-User-View
http://framework.zend.com/manual/en/zend.db.html
http://en.wikipedia.org/wiki/Zend_framework

 

jQuery – membuat plugin sendiri

Posted in Javascript by samsonasik on November 2, 2010

Selain Prototype Javascript library,  jQuery adalah salah satu library javascript yang banyak dipakai para developer ( kalau saya sih, tukang nonton kamen rider aja, hehehehe).  jQuery mempunyai ukuran yang relative kecil dibandingkan dengan library-library javascript lainnya dan mudah untuk dipelajari. Kita bisa dengan mudah meng-extends core library jQuery, dan membuat plugin sendiri untuk kebutuhan kita yg lebih spesifik.
Pada kesempatan kali ini, saya akan mencoba memaparkan cara membuat plugin sendiri di jQuery.
Hal pertama yg harus kita lakukan adalah menambahkan property ke dalam jQuery.fn object (  anggaplah kita akan membuat sebuah plugin untuk animasi menggoyang element ),  simpan dalam file goyang.jQuery.js

 $.fn.goyang = function(){};

Jika kita ingin menambahkan parameter, kita bisa gunakan seperti berikut :

 $.fn.goyang = function(options){};

Berikut contoh coding  jquery plugin untuk menggoyang element :

$.fn.goyang = function(options){
//setting default value jika parameter tidak dilewatkan
var    defaults = {
 left:'500',
 right:'1000'
 },
 settings = $.extend({}, defaults, options);

 var element = this;  //"this" adalah DOM object
 var leftpost = parseInt($(element).css("left")) -  parseInt(settings.left);
 $(element).click(function(){
 //geser kiri...
 $(element).animate({
 left:  leftpost
 },function(){
 //geser kanan...
 $(element).animate({ left: leftpost + parseInt(settings.right) });
 });
 });
};

Nah, kalau sudah, kita tinggal panggil deh :

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="goyang.jQuery.js"></script>
<script type="text/javascript">
 $(document).ready(function(){
$('#book').goyang({   /* override default value */     left:'300', right:'700' });
 });
</script>

<div>
 <img  id="book" src="book.png" alt="" width="100" height="200" style="position: relative;left:600px"/>
</div>

simple kan ? hehehe
——————————
This article contained copyrighted material licensed under various creative commons licenses unless otherwise noted:
Image :
http://tpgblog.com/2009/11/30/jquery-plugin-its-cutetime-1-0-5/
Articles :
http://docs.jquery.com/Plugins/Authoring
http://net.tutsplus.com/articles/news/learn-how-to-create-a-jquery-plugin/
http://net.tutsplus.com/articles/news/you-still-cant-create-a-jquery-plugin/
http://jqfundamentals.com/book/book.html
jQuery 1.4 API ( CHM Version )