Rabu, 01 Mei 2013

UML


pengantar UML
Pada awal mula rekayasa perangkat lunak dibuat pemrograman terstruktur menjadi mainstream. Para programmer mulai mengembangkan blok-blok kode yang baku untuk melaksanakan operasi seperti misalnya operasi pembuatan laporan, pencetakan, dan operasi lainnya yang kemudian diduplikasikan dan disisipkan di dalam program-program aplikasi. Dengan demikian dapat mengurangi waktu pengembangan aplikasi yang baru, hal ini akan akan menjadi rumit apabila perubahan harus dilakukan pada blok kode program. Sebab pengembang harus lebih dulu membuat perubahan dimana kode tersebut nantinya akan di gunakan kembali pada aplikasi yang berbeda.
Pemrograman terstruktur (menggunakan bahasa pemrograman terstruktur seperti bahasa pascal, basic, foxpro dan lainya) memberikan beberapa tantangan dalam pengembangan perangkat lunak kedepan, dan tantangan tersebut dijawab dengan pemrograman berorientasi objek (bahasa C++, Java, Visual Basic) untuk memecahkan permasalahan yang dihadapi.
Pada Object Oriented Programming, pengembang aplikasi membuat blok-blok kode yang disebut dengan Class atau Object dimana Class dan Objek ini digunakan oleh berbagai macam program aplikasi untuk kebutuhan yang berbeda. Jika salah satu Class atau Object dimodifikasi maka pengembang hanya membuat satu perubahan saja pada Class atau Object tersebut sehingga instan class akan mengikuti perubahan yang terjadi. Didalam paradigma berorientasi objek pengembang mempunyai sudut pandang yang berbeda terhadap applikasi. Dengan pendekatan berorientasi objek, aplikasi dibagi menjadi bagian-bagian kecil object (berupa Class) yang tidak terikat satu sama lain. Selanjutnya aplikasi dibangun dengan menyatukan object-object kecil ini menjadi aplikasi yang lengkap dan siap untuk digunakan. Sebagai contoh object dalam pemrograman berorientasi objek adalah kontrol server seperti Textbox, Combobox, Button dan kontrol-kontrol lainya, atau programmer dapat membuat definisi class tersendiri secara khusus.
Pada pemrograman terstruktur untuk merancang sebuah form dengan kontrol listbox, textbox dan button di dalamnya, programmer harus menuliskan baris kode yang panjang untuk membuat tampilan form dan masing-masing kontrol tersebut kedalam struktur kode program yang terdiri dapat terdiri dari record, prosedur dan fungsi. Contoh yang lainya apabila programmer ingin menampilkan tombol Ok dan Cancel yang dapat menerima masukan melalui event klick mouse, maka programer menulis kode program untuk menampilkan bentuk tombol OK dan Cancel tersebut dengan menggunakan unit grafis, kemudian menuliskan kode untuk kejadian (event) klik mouse pada tombol tersebut untuk menjalankan fungsi tertentu didalam aplikasi.
Salah satu keuntungan pendekatan berorientasi objek adalah kemampuan untuk membangun komponen secara seketika dan langsung dapat digunakan secara berulang-ulang. Misalnya dengan menambahkan kontrol combobox didalam form dan mengatur nilai properti dari combobox tersebut sesuai dengan kebutuhan dalam aplikasi. Sehingga memanfaatkan form yang mengandung object yang sama pada kebutuhan lainya sangat dimungkinkan, hanya dengan merubah nilai properti dari objek tersebut dan kode program.
Lalu bagaimana paradigma berorientasi objek ini berbeda dengan pendekatan terstruktur dalam pengembangan perangkat lunak ?.
Pada pendekatan terstruktur, aktivitas-aktivitas yang dilakukan oleh tim pengembang perangkat lunak adalah :
1. Bertanya kepada user, informasi apa saja yang mereka butuhkan.
2. Mendesain basisdata untuk menyimpan informasi tersebut.
3. Mendesain tampilan layar untuk memasukkan informasi yang akan disimpan didalam basis data dan pembuatan laporan yang dapat dicetak.
Dari aktivitas diatas dapat disimpulkan bahwa pada pendekatan terstruktur lebih terpusat pada informasi, bukan pada perilaku sistem, maka pendekatan semacam ini disebut dengan pendekatan data-centric. Pendekatan data-centric sangat sesuai untuk desain program untuk penyimpanan informasi dalam basisdata dan pengolahannya. Namun akan muncul permasalahan jika digunakan untuk mendesain aplikasi bisnis, dimana perubahan aturan bisnis dan perilaku suatu sistem tidak mudah untuk diterapkan.
Pendekatan berorientasi objek telah dikembangkan untuk menjawab permasalahan tersebut, pendekatan berorientasi objek tidak hanya pada informasi namun juga melibatkan perilaku sistem yang satu sama lain berbeda. Maka diterapkanlah prinsip-prinsip berorientasi objek yaitu encapsulation, polymorphisme dan inheritance.
1.2. Prinsip-prinsip Berorientasi Objek (Object Oriented).
a. Encapsulation.
Pada konsep object oriented, kombinasi antara informasi dengan perilaku yang spesifik yang selanjutnya dibungkus (disatukan) menjadi suatu object disebut dengan encapsulation. Definisi object secara umum disebut dengan Class. Cara lain untuk melihat sebuah encapsulation adalah dengan membagi aplikasi ke dalam bagian-bagian kecil dari fungsi yang memiliki keterkaitan.
Sebagai contoh, sebuah informasi yang berkenaan dengan suatu rekening bank (sebagai nama object), memiliki informasi nomor rekening, saldo, nama nasabah, alamat jenis rekening, suku bunga, dan tanggal buka rekening (sebagai atribut objek). Perilaku dari sebuah rekening bank misalnya membuka dan menutup tabungan, menarik uang, dan perubahan alamat nasabah (sebagai methoda, operasi objek rekening bank).
Selanjutnya object, atribut dan perilaku disatukan dan dibungkus (encapsulation) bersama-sama ke dalam suatu obyek dengan nama rekening. Dengan demikian terbentuklah sebuah Class dengan nama Rekening dengan atribut dan methodanya.
Rekening Nama Class
Nomor rekening
Nama nasabah
Alamat nasabah
Jenis rekening
Suku bunga
Tanggal pembukaan
Saldo
Atribut-atribut Class
Membuka tabungan
Menutup tabungan Menarik uang
Perubahan alamat nasabah
Methoda Class
Sehingga apabila terjadi perubahan pada sistem perbankan yang berhubungan dengan rekening dapat dengan mudah diterapkan kedalam objek rekening tersebut. Keuntungan lain dari encapsulation adalah membatasi efek perubahan sistem secara keseluruhan. encapsulation dapat dianalogikan sebagai suatu sistem air di danau, dan kebutuhan akan suatu perubahan sebagai batu karang yang besar, apabila batu karang tersebut di jatuhkan kedalam air danau maka akan menyebabkan :
1. Munculnya riak air ke segala arah sampai ke tepi danau dan terjadi tumbukan antar riak air.
2. Batu karang tersebut membuat efek yang sangat besar pada sistem air di danau.
Apabila danau tersebut kita sekat dengan sebuah penghalang pada beberapa bagian maka efek riak oleh jatuhnya batu karang tersebut dapat kita batasi. Perhatikan ilustrasi enkapsulasi dibawah ini :
Gambar 1.2 Analogi Encapsulation.
Gambar 1.3. Encapsulation Model Sistem ATM pada Bank.
b. Inheritance
Dalam konsep object oriented, inheritance adalah suatu mekanisme yang membolehkan kita membuat atau menciptakan suatu objek baru (derived object/class) dari objek dasarnya (base object/class) disebut juga konsep parent-child. Objek anak (childI) mewarisi sifat dan kualitas yang dimiliki dari objek orangtua (parent). Contoh inheritance pada dunia nyata adalah makhluk hidup berjenis mamalia, diamana terdapat banyak sekali jenis makhluk hidup mamalia yang masing-masing memiliki karakteristik yang unik satu sama lain seperti pada ilustrasi berikut ini. Bahwa object mamalia memiliki turunan objek seperti kucing, anjing, dan paus.
Dengan inheritance maka akan mengurangi pemeliharaan, misalnya jika terjadi suatu perubahan pola perilaku, ciri-ciri atau bentuk pada makhluk hidup mamalia, maka secara otomatis objek anak akan menerima warisan perubahan itu dengan spesifikasi yang sama dengan objek parentnya. Contoh lain pada aplikasi komputer yaitu Inheritance pada model jendela (window), misalnya kita memiliki 4 buah jendela, apabila pemakai melakukan perubahan antarmuka (tampilan penampang) pada jendela, maka maka harus melakukan perubahan pada setiap jendela satu persatu. Akan berbeda apabila salah satu jendela menjadi parent dan 3 jendela yang lain menjadi child, maka dengan mengakses dan melakukan perubahan yang diinginkan pada jendela parent, maka akan secara otomatis jendela child akan melakukan perubahan yang sama.
c. Polymorphism.
Polymorphisme menggambarkan suatu kejadian/event dalam format yang berbeda baik bentuk, langkah-langkahnya maupun jenisnya. Pada dunia nyata bentuk sebuah polymorphisme seperti misalnya perintah “Bersuara !” maka masing-masing objek akan menghasilkan keluaran yang berbeda.
a. Orang akan bersuara “apa khabar”.
b. Kucing akan bersuara “ngeong”.
c. Burung akan bersuara “cuit cuit”.
Contoh lain suatu polymorphisme adalah sistem menggambar sebuah grafik atau bidang. Ketika seseorang ingin menggambarkan suatu gambar/grafik, apakah garis, lingkaran, atau kotak maka sistem akan memberikan perintah “gambarkan!”, dengan perintah yang sama setiap objek akan menghasilkan keluaran (output) yang berbeda-beda tergantung dengan jenis objek yang bersangkutan.

Tidak ada komentar:

Posting Komentar