Monday, May 21, 2007

Generalisasi dan Specialisasi

Dulu pas masih kuliah, pernah ada mata kuliah yang mempelajari tentang Generalisasi dan Specialisasi. Gak ngerti apa maksud dan tujuannya mempelajari ini, yang jelas pelajarannya agak aneh karena hanya mempelajari bagaimana melihat sesuatu secara garis besar dan secara terperinci.

Dengan pengandaian yang jauh dari pemrograman, sampai selesai kuliah pun aku masih tidak mengerti apa kegunaan teori ini. Masih banyak yang lebih penting aku pelajari dibanding teori ini, Syntax, OOP, OS dan banyak lagi. Setelah beberapa lama berkutat dengan kehidupan nyata seorang programmer, perlahan-lahan aku mulai memahami bahwa teori tersebut sangatlah berguna, bahkan menjadi sangat penting ketika pekerjaan yang dilakukan sangat banyak dan berulang.

Jadi apa itu Generalisasi? Seperti namanya, generalisasi adalah cara pandang kita terhadap beberapa objek yang berbeda dan menarik persamaan dari objek-objek tersebut. Kalau dalam Biologi, mahluk hidup dibedakan menjadi 2 bagian besar berdasarkan generalisasi persamaan-persamaan yang dimiliki oleh semua mahluk hidup.

Nah, terus apa hubungannya dengan programming? Nah, programming juga begitu, dari definisi project yang diberikan. Biasanya semua project punya kesamaan, input, output dan process. Nah, kesamaan-kesamaan inilah yang harus bisa kita lihat sehingga kita bisa membuat sebuah master object yang bisa mengcover kebutuhan project.

Nah dari generalisasi kita sudah tahu bahwa 50% nya sudah tercover semua. Dari sini kita tinggal menspecialisasi ke object-object yang lebih spesifik untuk menjalankan perintah-perintah yang memang sangat spesifik.

Nah dari sini terlihat kan bagaimana Generalisasi dan Specialisasi bekerja? Dengan generalisasi, kita tidak perlu membuat banyak object atau fungsi untuk semua proses, dengan specialisasi proses-proses yang tidak bisa dihandle dengan object yang sudah ada bisa di dihandle juga.

No comments: