---------------------------------------------------------------
Sifat Polymorphis dari OOP
Subjek: Object Oriented Programming (OOP)
Walaupun cuma mantan programmer, tapi ingin juga gue punya catatan mengenai pengetahuan programming gue, terutama OOP. Satu hal yang paling menarik dari OOP yaitu kemampuan polymorphis-nya yang ingin gue bicarakan disini.
Polymorphis adalah kemampuan untuk menghasilkan hasil yang berbeda dengan menggunakan pesan (message) atau perintah yang sama untuk dua atau lebih objek yang berbeda.
Gampangnya begini: Misal kita punya dua agen(instance) namanya AA dan MM, keduanya adalah objek yang berbeda dan mempunyai tujuan yang berbeda. Ketika mereka ada dalam suatu kontainer yang sama (array, heap, dll) kita dapat memanfaatkan mereka melakukan sesuatu yang berbeda dengan suruhan sebuah pesan yang sama, misalnya pesan XX. Ketika pesan XX diterima oleh MM, maka dia mungkin akan melakukan operasi terhadap sebuah variabel, sedangkan, AA akan melakukan operasi yang berbeda terhadap banyak variabel. Hasil yang dikeluarkan oleh kedua agen tersebut pun berbeda.
Karena enkapsulasi merupakan karakteristik dari OOP, maka agen MM tidak mengetahui apa yang dilakukan oleh agen AA menggunakan pesan yang sama tersebut. Begitupula sebaliknya. Makanya polymorphis adalah hal yang sangat powerful bagi seorang master program karena polymorphis dapat menimbulkan (spawn) hasil yang berbeda secara otomatis pada waktu runtime untuk berbagai objek yang berbeda hanya dengan pesan yang sama!
Lalu bagaimana dengan virus yang memanfaatkan sifat polymorphis tersebut. Virus yang bersifat polymorphis dapat bermutasi di setiap copy yang dibuat sehingga sulit untuk terdeteksi. Keberadaan dari virus yang sulit terdeteksi adalah fitur yang diinginkan untuk mengelabui sistem.
Salah satu virus polymorphis yang berbahaya adalah Virut yang sudah banyak variannya. Virut mampu menginfeksi file. Yang pasti virusnya ditujukan untuk meluluhlantakkan apa yang ada didalam sistem supaya akhirnya sistem harus reset. Awalnya saya hanya melihat para korbannya yang wanita yang dengan mata kebingungan menghadapi kerusakannya karena memang untuk mereka sudah ga ada harapan lagi. Gue sendiri hampir jadi korban. Hanya karena para hacker yang mau menang sendiri menganggap enteng apa yang telah mereka lakukan demi sebuah kesenangan dan kejayaan, kalian harusnya melihat mata helpless para korban ketika sistemnya mengalami sakaratul maut.
Dunia adalah surga bagi para hacker!
---------------------------------------------------------------
Pembuktian Matematik Secara Induksi
Subjek: Matematika Diskrit
Metode pembuktian secara induksi digunakan dengan memakai prinsip bahwa apabila base case dari suatu statement adalah benar, maka, apabila kita bisa membuktikan bahwa iterasi ke-i dan iterasi selanjutnya dari iterasi ke-i adalah juga benar, maka dapat dibuktikan bahwa statement tersebut benar untuk semua iterasi yang mungkin.
Jadi apabila kita mempunyai statement: P(i) untuk semua i=1,2,3,... ith
yang ingin kita buktikan kebenarannya maka yang harus kita lakukan adalah:
1. Membuktikan bahwa P(1) adalah benar,
2. Membuktikan P(i) benar dan P(i+1) adalah juga benar untuk i=1,2,3,...i-th
Dalam dunia nyata kita terkadang sulit untuk mendapatkan sampel yang dibutuhkan untuk sebuah pembuktian. Kalau harus menghitung sampai i ke lima, little-little we can lah tapi kemudian akan cepat exhausted. Tapi kalau sampai pd i-th kesekian, maka akan seperti terlilit benang kusut. Nah, pembuktian matematik secara induksi ini cukup sederhana karena tidak membutuhkan keseluruhan sampel dari i untuk pembuktiannya. Pembuktian induksi biasanya digunakan oleh programmer untuk menentukan base case dari suatu program recursive dan menentukan rumus iterasinya.
---------------------------------------------------------------
Analisis Berbasis Objek dan UML
Subjek: Object Oriented Programming (OOP)
Pemrograman berbasis objek adalah sebuah paradigma baru dalam pemrograman dimana sebelumnya berbasis aliran (flow), yang melihat sebuah program sebagai proses berurut mulai dari titik awal sampai program exit. Dalam pemrograman berbasis objek, proses yang berurut tersebut terurai menjadi interaksi antara objek-objek terpisah untuk mendapatkan hasil tertentu yang diinginkan. Objek-objek tersebut berupa komponen yang mempunyai fungsi dan tugas khusus -dalam artian berbeda atau tidak redundant dengan objek yang lainnya- yang sudah didefinisikan bersama antarmukanya. Objek-objek yang terkumpul dalam sebuah library, dapat digunakan ulang (reusable) untuk program lainnya, karena sifatnya yang umum dan tidak spesifik terhadap suatu program tertentu. Adanya library memudahkan seorang programmer untuk berkonsentrasi pada bagian spesifik dari suatu program, karena yang umum sudah tersedia dari library tersebut.
Pada implementasinya, pemrograman berbasis objek membutuhkan analisis untuk mengidentifikasi objek-objek yang diperlukan yang berupa class-class. Analisis tersebut bisa menjadi pekerjaan yang tidak mudah karena setiap objek harus memenuhi standar desain tertentu seperti loosely coupled dan tidak redundant ditambah lagi harus memasukkan pertimbangan pemanfaatan fitur-fitur dalam OOP seperti abstraction, inheritance, polymorphis dan dynamic binding. Oleh karenanya kita mengenal analisis berbasis objek dalam menganalisa sistem yang modular. Salah satu analisis berbasis objek adalah analisis menggunakan Unified Modelling Language (UML). UML memformalkan persyaratan sistem kedalam objek-objek dan hubungannya.
Didalam UML kita mengenal Use Case, Diagram Aktivitas (ACD) dan Sequence Diagram. Use Case berguna untuk mengidentifikasi persyaratan sebuah sistem dengan menulis skenario untuk para aktor didalam sistem. Beberapa pertanyaan harus dijawab dalam penulisan skenario tersebut seperti: bagaimana masing-masing aktor berinteraksi satu sama lain, apa fungsi dan peran mereka, bagaimana deskripsi dan alur tanggung jawab mereka, apa saja kesalahan yang mungkin dilakukan dan sebagainya. Setelah skenario-skenario dalam sebuah sistem sudah ditulis, diagram Use Case dapat digunakan untuk mempermudah analisa sistem. Contoh bentuk diagram Use Case dalam sebuah sistem keanggotaan TV berbayar dapat dilihat disini beserta penjelasan notasi yang digunakan.
Diagram Aktivitas kemudian dibuat untuk menjelaskan secara lebih detail aliran apa yang terjadi dalam skenario-skenario tersebut. Biasanya, aktivitas diagram dimulai dengan simbol inisial (start) dan berakhir dengan simbol termination (exit). Di dalam Diagram Aktivitas terdapat pengambilan keputusan yang disimbolkan dengan bentuk diamond dan aktivitas-aktivitas beserta flow dari informasinya. Contoh Aktivitas Diagram beserta notasinya dapat dilihat disini. Mungkin untuk yang familiar dengan basic flowchart dapat melihat perbedaannya.
Setelah Diagram Aktivitas terdapat Sequence Diagram yang mendeskripsikan interaksi aktor-aktor dengan komponen sistem secara keseluruhan sehingga terlihat apa saja yang dibutuhkan oleh masing-masing komponen.
Hal selanjutnya dalam UML adalah Class Diagram. Class Diagram memperlihatkan class-class dan atributnya serta bagaimana asosiasi yang terbentuk antar class tersebut. Class Diagram dibuat untuk mentransfer pengertian akan sebuah sistem ke dalam komponen-komponen yang akan memanfaatkan fitur-fitur OOP. Class Diagram adalah gambaran awal building blocks dari suatu program.
Tidak setiap pengembangan program menggunakan UML, tapi setiap analis harus mengetahui penggunaannya dan memanfaatkannya jika nantinya diperlukan dalam suatu pengembangan perangkat lunak.
Catatan
17.05
Savitri

















