Rabu, 23 Desember 2009

Pendalaman OOP

Pembahasan ini, hanyalah memperjelas tentang OOP dalam sebuah sistem aplikasi. Sebagai contoh kasus yang bisa saya gambaran yang menurut saya cukup sederhana adalah sistem simpan pinjam. Yaah... anggaplah sistem ini merupakan sebagian kecil dari bisnis operasi misalnya koperasi simpan pinjam.

Pertama-tama yang dikenali dari sistem simpan pinjam disini dalam OOP yaitu adanya kelas, maka kelas pada sistem aplikasi simpan pinjam dapat saya sebut kelas simpan pinjam. Sebagaimana dalam konsep OOP kelas memiliki objek beserta state / atribut dan behaviour / method, maka saya akan menentukan objeknya terlebih dahulu. Contoh objek dalam kelas simpan pinjam ini adalah nasabah dan uang/dana. Saya pilih dua objek ini saja sebagai gambaran pengenalan objek pada suatu kelas dalam konsep OOP. Selanjutnya kedua objek ini pasti memiliki state dan behavior, biar mudah (red- bagi saya) saya gunakan kata atribut untuk state dan perilaku untuk behaviour. Atribut pada objek nasabah yaitu identitas nasabah dan jenis nasabah. Turunan dari nasabah ini dalam OOP, dikenal dengan istilah inheritance (pewarisan), yang berupa jenis nasabah. Jenis nasabah dalam kelas simpan pinjam ini adalah nasabah simpan dan nasabah pinjam. Maka bisa saya simpulkan bahwa kedua jenis nasabah ini merapakan turunan dari nasabah, cara pendekatan ini dikenal juga dengan IS-A, yaitu yang mana objek turunan adalah juga bertipe objek asalnya. Jadi nasabah simpan sebagai turunan nasabah, pastilah nasabah simpan termasuk nasabah dalam sistem simpan pinjam ini. Atau ditulis nasabah simpan IS-A nasabah. Penggunaan pada pemrograman dengan Java, ternyata untuk turunan dari objek bisa mengimplementasikan dengan menggunakan extends hanya dari satu superclass, sementara dengan menggunakan interface bisa mengimplementasikan diri lebih dari satu interface. Baiklah, sudah saya bahas sedikit mengenai inheritance disini. Saya lanjutkan dengan menentukan perilaku dari nasabah adalah mendaftarkan diri sebagai nasabah dan mengundurkan diri sebagai nasabah. Untuk nasabah simpan memiliki perilaku menambah simpanan, mengurangi simpanan, dan melihat simpanan. Sedangkan perilaku nasabah pinjam adalah meminjam, mengembalikan pinjaman, dan kondisi pinjaman.

Okelah kalau begitu…. objek nasabah sudah cukup saya bahas. Sekarang objek kedua yaitu uang atau dana. Saya pergunakan kata dana saja deh, mudah-mudahan lebih pas. Objek dana Dana pun memiliki turunan objek berupa dana simpanan dan dana pinjaman. Disini terdapat juga karakteristik OOP berupa inheritance tadi yang sudah saya bahas sebelumnya. Jadi, langsung saya bahas perilaku dari objek dana, yaitu dana lokal dan dana asing, maksudnya dana lokal itu adalah mata uang lokal, yaitu rupiah. Sedangkan dana asing berupa mata uang asing, seperti dollar, ringgit, dll. Selanjutnya perilaku dana simpan yaitu keadaan dana simpan, dana simpan bertambah dan dana simpan berkurang. Perilaku dana pinjam yaitu dana pinjam yang tersedia, dana pinjam yang keluar, dan dana pinjam yang kembali.


Sampai disini dulu pembahasan saya, kiranya sudah bisa lebih memahami tentang OOP... mungkin akan saya update pembahasan ini dilain waktu untuk mempertajam dengan karakteristik OOP yang belum terbahas.. tentunya dengan contoh ini.

Selasa, 08 Desember 2009

Case Tool

pada tautan link berikut akan menerangkan tentang penggunaan case sebagai tool menggambar sistem informasi.. silahkan klik judul di atas.

Konsep Dasar OOP

Bukan suatu yang baru dalam membahas konsep dasar OOP, karena sudah cukup banyak bahasan terkait dengan pembahasan ini.

Object Oriented Programming atau disingkat OOP merupakan suatu metode/teknik pemrograman yang sesuai dengan namanya berorientasi pada objek. Karenakan OOP merupakan suatu metode/teknik pemrograman, maka haruslah memahami terhadap pendekatan, aturan, dan tools yang digunakan dalam membuat suatu kode program. Dalam metode OOP, menganggap segala sesuatu dalam pemrograman sebagai objek dan interaksi objek.
OOP mempunyai pendekatan pada pemodelan suatu objek pada dunia nyata, baik fisik atau state maupun sifat tingkah laku atau behavior objek tersebut. Fisik /state dalam OOP diwakilkan dengan atribut atau variabel dan relasi, sedangkan sifat tingkah laku /behaviour diwakilkan dengan operasi dan method. Contoh state pada objek kuda antara lain : kepala, ekor, kaki, badan, warna. Contoh behaviour pada objek kuda antara lain : mengangkat kedua kaki depan, mengibas ekor, meringkik.
Setiap objek tentulah memiliki identitas yang unik sehingga dapat membedakan suatu objek dengan objek yang lain dan juga mengelompokkannya. contoh : dalam sistem buku perpustakaan, kandidat objek bisa berupa penjaga perpustakaan, buku perpustakaan, pengunjung dan peminjam. objek dan interaksinya serta interaksi antar objek akan mempresentasikan lingkup permasalahan, maka Object Oriented digunakan sebagai cara untuk memodelkan sistem di dunia nyata yang digambarkan melalui objek-objek penyusunnya dan bagaimana setiap objek tersebut berinteraksi.
Sebagai awal pengenalan dalam Object Oriented adalah :
  • Abstraksi, merupakan karakteristik penting pada suatu objek yang membedakannya dari objek yang lain dan biasanya bersifat public. contoh : objek event, yaitu objek yang mewakili suatu peristiwa seperti peristiwa mouse klik, geser
  • Modularitas, merupakan pembuatan objek secara terpisah dengan objek lain dengan cara dekomposisi logik dan fisik objek menjadi sederhana / kecil.
  • Hirarki, merupakan pemeringkatan atau pengurutan abstraksi kedalam bentuk pohon. Contoh : objek mobil terdiri dari mesin dan penggerak. Penggerak terdiri dari transmisi dan Drive Wheels. Sedangkan Mesin terdiri dari Karburator, Pompa Bahan Bakar, Sistem Pengaturan Mesin, Sistem Pembuangan dan Sistem Ignisi
Selanjutnya dalam OOP terdapat beberapa komponen, yaitu:

  • Kelas, merupakan tempat objek berada beserta atribut dan method yang dimiliki objek. Dalam sehari-hari kita mengenal adanya makhluk hidup seperti manusia, kuda, pohon, dll maka manusia, kuda, pohon itu adalah kelas. Dalam pemrograman java cara penentuan kelas ditulis dengan cara : class namakelas{...}.
    • contoh : kelas kuda, maka penulisan dalam java adalah : class Kuda { ... }

  • Objek, merupakan instance (wujud nyata) dari kelas yang memiliki atribut/variabel dan method/fungsi yang menggunakan variabel yang telah ditentukan. Lanjutan dari pembahasan di atas, maka objek dari kelas Kuda adalah kepala, kaki, ekor. Contoh lain objek dari kelas pohon adalah : daun, batang, akar. Dalam pemrograman java cara penentuan objek adalah : namobjek = new namakelas;.
    • contoh : kaki kuda, maka penulisan dalam java adalah Kuda kakiKuda = new Kuda(); , objek ekor kuda, penulisannya Kuda ekorKuda = new Kuda();
  • Atribut, merupakan ciri suatu objek yang terdiri dari variable-variable. Dalam pemrograman kita mengenal adanya properties, maka atribut ini dapat dicontohkan berupa properties dari contoh di atas, misalnya dari kelas kuda pada objek kaki terdapat atribut berupa panjang kaki, warna kulit kaki, jumlah sendi. Dalam pemrograman java penentuan atribut dengan cara antara lain : tipe data variable namavariable;
    • contoh String warnakakiKuda; , double panjangkakiKuda;

  • Variable yang merupakan penyimpanan data sebuah atribut, terbagi atas instance variable (atribut yang dapat dimiliki sebuah objek dalam kelas yang sama) contoh : panjang ekor kuda pada objek ekor kuda. Dan class variable (atribut yang dimiliki beberapa objek dalam kelas yang sama) contoh : warna kuda dimiliki pada objek badan kuda dan kaki kuda.
  • Method, merupakan fungsi bagaimana objek bereaksi dan menerima reaksi serta merubah nilai atribut, atau dengan kata lain merupakan implementasi objek pada kelas bekerja. Bila diambil dari contoh di atas, maka mehod dari objek kaki kuda pada kelas Kuda
  • Contoh penggunaan beberapa komponen OOP :
//penentuan class
class Kuda{
// penentuan atribut berupa variable
String warnakaki() ;
int langkahkaki();
}
// penentuan method
public class KudaBerjalan{
public static void main (String [] args){
// menentukan objek
Kuda kakiKuda = Kuda();

// menggunakan atribut dan nilai pada atribut
kakiKuda.warnakaki = "Coklat";
kakiKuda.langkahkaki = 2;

System.out.println("Kuda yang berkaki warna "+ekorKuda.warnakaki+" melangkah sebanyak "+kakiKuda.langkahkaki+" langkah.");
}}
maka keluaran dari contoh tersebut adalah : Kuda yang berkaki coklat melangkah sebanyak 2 langkah.
Lebih lanjut yang musti diketahui adalah deklarasi hak akses, karena deklarasi ini senantiasa dipergunakan pada awalan sebuah method/fungsi dan juga pada kelas. Penggunaan hak akses ini untuk membagi kewenangan penggunaan sebuah kelas atau method. Dengan hak akses ini pada salah satu karakteristik OOP dipergunakan, yaitu encapsulation (pembungkusan). Hak akses yang umum dipergunakan adalah :
  • Public,
    Dengan menggunakan deklarasi ini, suatu method dapat dipergunakan pada kelasnya sendiri atau oleh kelas lain yang merupakan turunan dari kelas utama yang memiliki method ini.
    • contoh : sebuah method pada kelas Kuda memiliki method kudaBerjalan dengan penggunaan deklarasi public pada method kudaBerjalan, method kudaBerjalan juga bisa dipergunakan pada kelas KudaPerang.
  • Private,
    Dengan menggunakan deklarasi ini, suatu method hanya dapat dipergunakan pada kelasnya sendiri sedangkan oleh kelas lain baik dari turunan kelas ini maupun bukan tidak dapat mempergunakan.
    • contoh : sebuah method pada kelas MobilSedan memiliki method buka pintu dengan penggunaan deklarasi private pada method tersebut maka method buka pintu pada kelas MobilSedan tidak bisa dipergunakan pada kelas MobilSport.
Selanjutnya membahasa karakteristik dari OOP yang salah satunya sudah dibicarakan pada baris sebelumnya. Karakteristik dari OOP adalah :
  1. Polymorphism (perbedaan bentuk), yaitu suatu objek dapat mempunyai lebih dari satu interface atau berubah menjadi objek lain. Hal ini dikarenakan atribut/method bersifat umum. contoh warna kulit kuda bisa dipergunakan oleh objek kaki kuda dan badan kuda, method buka bagasi pada objek bagasi pada kelas MobilMewah dapat dipergunakan pada objek pintu belakang kelas MobilSUV.
  2. Encapsulation (pembungkusan), yaitu penyembunyian atribut dan method tertentu pada suatu objek dari objek lain melalui private dan proteced dari suatu kelas / objek, sehingga hanya fungsi / method tertentu yang dapat diakses / digunakan. contoh yang mungkin dapat dimengerti adalah : pada kelas mobil terdapat method pembakaran bahan bakar yang tidak perlu diketahui oleh pengguna mobil agar mobil dapat bergerak, yang cukup diketahui hanyalah method penginjakan pedal gas dan method kecepatan mobil.
  3. Inheritance (pewarisan), yaitu dimana kelas yang berasal satu atau lebih dari kelas lain, sehingga dapat memperluas atau mempersempit kelas sesuai kebutuhan. Hal ini dikarenakan beberapa objek memiliki ciri yang sama dengan penggunaan berbeda. contoh : kelas kereta api uap dan kelas kereta api listrik memiliki objek yang sama pada kelas kereta api seperti objek lokomotif dan objek gerbong
Selain hal yang sudah disebutkan di atas, terdapat pemodelan objek yang belum terbahas sebelumnya berupa :

  1. Interface, berfungsi sebagaipendefinisian method/fungsi dan variable/atribut tanpa implementasi dikarenakan hanya digunakan objek untuk saling berinteraksi.

  2. Package, merupakan himpunan kelas-kelas yang biasanya mewakili dari sistem.

  3. Subsystem, merupakan kombinasi dari suatu paket dan suatu kelas dengan memiliki satu atau lebih suatu interface untuk menjalankan fungsinya.

  4. Component, merupakan bagian fisik dari sistem aplikasi.

  5. Association, merupakan hubungan atau relasi berupa tanda antara suatu kelas dengan kelas lain.

  6. Multiplicity, merupakan jumlah atribut yang berhubungan dengan satu atribut kelas lainnya.

  7. Aggregation, merupakan bentuk yang lebih kuat dari association, dimana

  8. Navigability, merupakan dimungkinkannya menavigasi/kontrol dari suatu kelas yang berasosiasi ke kelas lain yang telah menggunakan asosiasi dengan kelas lainnya.

  9. Dependency, merupakan relasi atau hubungan dua elemen dimana perubahan di dalam satu elemen akan menyebabkan perubahan pada elemen yang lain namun tidak sebaliknya.

  10. Generalisasi, merupakan hubungan / relasi dari suatu inheritance (pewarisan) antar unsur dalam kelompok kelas

sekian dulu penjelasan untuk konsep dasar OOP ...

awal buat

Di bulan ini awal saya buat blog ini...