Sabtu, 04 Januari 2014

Object Oriented Programming



PEMROGRAMAN BERORIENTASI OBJEK


Pemrograman beriorientasi obyek (Object Oriented Programming = OOP) berbeda dengan pemrograman konvensional pada umumnya, terutama dalam memperlakukan prosedur dan data. Pada pemrograman biasa, prosedur dan data merupakan dua hal yang dipisahkan satu sama lain. Sebagai contoh, untuk mengelola data waktu yang terdiri dari jam, menit, dan detik dapat dibuat suatu struktur data dalam C sebagai berikut :
struct Time {
int hour; // 0-23
int minute; // 0-59
int second; // 0-59
};
Definisi ini terdiri dari tiga data, dimana untuk mengelolanya dibutuhkan prosedur yang disusun pada bagian yang terpisah. Salah satu konsep OOP yang paling penting adalah membungkus prosedur dan data menjadi satu software obyek. Konsep ini disebut sebagai encapsulation.
 
Pemrograman berorientasi objek (OOP) ini juga merupakan paradigma pemrograman yang menggunakan "objek" - struktur data yang terdiri dari datafields dan metode bersama dengan interaksi mereka - untuk merancang aplikasi dan program komputer. Teknik pemrograman dapat mencakup fitur seperti data abstraksi, enkapsulasi, modularitas, polimorfisme, dan pewarisan. Itu tidak umum digunakan dalam pengembangan aplikasi perangkat lunak arus utama sampai awal 1990-an. [Rujukan?] Banyak bahasapemrograman modern sekarang mendukung OOP.
OOP memodelkan obyek yang ada di dunia nyata (real-word objects) ke dalam software obyek dalam pemrograman. Oleh karena itu, di dalam OOP juga dikenal istilah seperti yang ada pada obyek dunia nyata, yaitu pewarisan (inheritance), dimana suatu obyek dapat mewariskan sifat-sifat yang dimilikinya kepada obyek turunannya.
Secara umum, beberapa keuntungan yang dapat diperoleh pada OOP antara lain adalah simplicity, modularity, modifiability, extensibility, flexibility, maintainability, dan reasonability. Bahasa pemrograman yang mendukung OOP antara lain adalah: Smalltalk (murni OOP), C++, CLOS (Common Lisp Object System), Java, dan sebagainya. Dalam buku ini digunakan bahasa pemrograman C++ untuk memahami implementasi OOP.
Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.            
                               KONSEP DAN CONTOH OOP
Kelas : Sebuah kelas mendefinisikan karakteristik abstrak dari sesuatu (objek), termasuk hal karakteristik (sifat-sifatnya, ladang atau properti) dan hal perilaku (hal-hal itu dapat dilakukan, atau metode, operasi atau fitur). Orang mungkin mengatakan bahwa kelas adalah cetak biru atau pabrik yang menggambarkan sifat sesuatu. Sebagai contoh, Anjing kelas akan terdiri dari sifat-sifat yang dimiliki oleh semua anjing, seperti berkembang biak dan bulu warna (karakteristik), dan kemampuan untuk kulit dan duduk (perilaku). Kelas menyediakan modularitas dan struktur dalam sebuah object-oriented program komputer. Kelas harus biasanya dapat dikenali untuk non-programmer akrab dengan masalah domain, yang berarti bahwa karakteristik kelas harus masuk akal dalam konteks. Selain itu, kode untuk kelas harus relatif self-contained (biasanya menggunakan enkapsulasi). Secara kolektif, sifat dan metode yang didefinisikan oleh kelas yang disebut anggota. 
 
Objek : Sebuah pola (contoh) dari sebuah kelas. Dog kelas mendefinisikan semua kemungkinan anjing dengan membuat daftar karakteristik dan perilaku yang mereka dapat miliki; objek Lassie adalah salah satu anjing tertentu, dengan versi tertentu karakteristik. A Dog telah bulu; Lassie telah cokelat-dan-bulu putih. 
 
Instance : Satu dapat memiliki sebuah instance dari kelas, sedangkan contoh adalah objek sebenarnya dibuatpada saat runtime. Dalam programmer jargon, yang Lassie objek adalah instance dari kelas Dog. Himpunan nilai-nilai dari atribut objek tertentu disebut dengan negara. Objek terdiri dari negara dan perilaku yang didefinisikan dalam kelas objek. 
 
Abstraksi : Abstraksi menyederhanakan realitas kompleks oleh kelas pemodelan sesuai dengan masalah, dan bekerja pada tingkat paling tepat warisan untuk suatu aspek dari masalah.Sebagai contoh, Lassie the Dog dapat diperlakukan sebagai Anjing banyak waktu, bila perlu Collie mengakses atribut khusus atau perilaku, dan sebagai Hewan (mungkin kelas induk anjing), ketika menghitung Timmy's pets.
Abstraksi juga dicapai melalui Komposisi. Sebagai contoh, sebuah Mobil kelas akan terdiri dari sebuah Engine, Gearbox, Steering objek, dan banyak lagi komponen. Untuk membangun kelas Mobil, seseorang tidak perlu mengetahui bagaimana berbagai komponen bekerja secara internal, tetapi hanya bagaimana untuk berinteraksi dengan mereka, yaitu, mengirim pesan kepada mereka, menerima pesan dari mereka, dan mungkin membuat objek yang berbeda yang menyusun kelas berinteraksi dengan satu sama lain. 
 
Encapsulation : Enkapsulasi menyembunyikan detail fungsional dari sebuah kelas dari objek yang mengirimkan pesan itu. Sebagai contoh, kelas memiliki Anjing menggonggong () method. Kode untuk kulit () method mendefinisikan persis bagaimana kulit terjadi (misalnya, dengan menghirup () dan kemudian buang napas (), di lapangan tertentu dan volume). Timmy, Lassie teman, bagaimanapun, tidak perlu tahu persis bagaimana dia menyalak. Enkapsulasi dicapai dengan menetapkan kelas-kelas yang dapat menggunakan anggota suatu objek. Hasilnya adalah bahwa setiap objek menghadapkan untuk setiap kelas antarmuka tertentu - dapat diakses oleh para anggota kelas. Alasan untuk enkapsulasi adalah untuk mencegah klien dari sebuah antarmuka dari tergantung pada bagian-bagian dari pelaksanaan yang mungkin berubah di masa depan, sehingga memungkinkan perubahan itu harus dilakukan dengan lebih mudah, yaitu tanpa perubahan kepada klien. Sebagai contoh, sebuah antarmuka dapat memastikan bahwa anak-anak anjing hanya dapat ditambahkan ke sebuah objek dari kelas Dog oleh kode di kelas.
Anggota seringkali ditentukan sebagai publik, dilindungi atau swasta, menentukan apakah mereka yang tersedia untuk semua kelas, sub-class atau hanya mendefinisikan kelas. Beberapa bahasa melangkah lebih jauh: Jawa menggunakan pengubah akses standar untuk membatasi akses juga untuk kelas-kelas dalam paket yang sama, C # dan VB.NET cadangan beberapa anggota kelas-kelas dalam majelis yang sama menggunakan kata kunci internal (C #) atau Friend (VB.NET), dan Eiffel dan C dapat digunakan untuk menentukan kelas-kelas yang dapat mengakses setiap anggota.
 
Polimorfisme : Polimorfisme memungkinkan programmer untuk memperlakukan anggota kelas turunan seperti orangtua mereka anggota kelas. Lebih tepatnya, polimorfisme dalam pemrograman berorientasi obyek adalah kemampuan benda-benda yang termasuk tipe data yang berbeda untuk menanggapi panggilan metode dengan nama yang sama, masing-masing sesuai dengan tipe yang sesuai perilaku tertentu. Salah satu metode, atau operator seperti, -, atau *, dapat abstrak diterapkan dalam banyak situasi yang berbeda. Jika Anjing diperintahkan untuk berbicara (), hal ini dapat mendatangkan suatu kulit (). Namun, jika Pig diperintahkan untuk berbicara (), hal ini dapat menimbulkan suatu oink (). Setiap subclass menimpa berbicara () method yang diwarisi dari kelas induk Animal.
 
Inheritas : Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut ( bahasa berbasis-objek tidak selalu memiliki inheritas.)








Materi JAVA yaitu Pengenalan Pemrograman Berorientasi Object atau disebut juga PBO.
Dari materi yang akan kita diskusikan adalah :
  1. Konsep Dasar Pemrograman Berorientasi Objek:
    Class, Object, Attribute, Method, Constructor
  2. Karakteristik Pemrograman Berorientasi Objek:
    Encapsulation, Inheritance, Polymorphisme
  • Pengenalan OOP
  • Class:
- konsep dan deskripsi dari sesuatu(rsw)
- blueprint/cetakan
  • Object:
-  instance dari class, bentuk (contoh) nyata dari class(rsw)
- hasil cetakan dari class
  • Implementasi Class/Object


  •  Notasi Class/Object

  • Class Member – Atribut
  • Atribut / Variable / State
- Variable yang mengitari class, dengan nilai datanya bisa ditentukan di object (rsw)
- Variable digunakan untuk menyimpan nilai yang nantinya akan digunakan pada program(rsw)
- Sesuatu yang pasti dimiliki oleh class
  • Notasi Class/Object
    with Atribut & method

  • Class Member – Method
  • Method / Behaviour adalah urutan instruksi yang mengakses data dari object (rsw)
  • Kegiatan yang dapat dilakukan/dikerjakan oleh class.
  • Method melakukan:
    • Manipulasi data
    • Perhitungan matematika
    • Memonitor kejadian dari suatu event
Class Member – Method
  • Jenis Method:
―     Method dengan return value
―     Method tanpa    return value
“nilai yang dihasilkan ketika menjalankan / mengakses method” 
  • Implementasi Method

  • Konstruktor – Method
•Method yang identifier/namanya sama dengan nama Class
•Method yang pertama kali di panggil pada proses instansiasi/pembuatan object
  • Refresh OOP Concept
Karakteristik Pemrograman Berorientasi Objek:
Encapsulation, Inheritance, Polymorphisme
  • Enkapsulasi
•Mekanisme menyembunyikan suatu proses dan data dalam sistem untuk menghindari interferensi, dan menyederhanakan penggunaan proses itu sendiri (rsw)
•Pembungkusan attribut untuk menghindari akses illegal
  • Implementasi Enkapsulasi
•Enkapsulasi data juga dapat dilakukan dengan cara:
1.mendeklarasikan instance variable sebagai private
2.mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut
Public Class Kue {
Private String Rasa;
Public String getRasa(){
return Rasa;
}
Public void setRasa(String rasa){
Rasa=rasa;
}
}
  • Inheritance (Pewarisan)
•Suatu class dapat mewariskan atribut  dan method kepada class lain (subclass), serta membentuk class hierarchy
•Tujuan : Reusability, Perluasan Attitude
•Java Keyword: extends
  • Polymorfisme
•Kemampuan untuk memperlakukan object yang memiliki perilaku (bentuk) yang berbeda
•Implementasi konsep polymorphism:
1.Overloading: Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda parameter (tipe dan atau jumlah)
2.Overriding: Kemampuan subclass untuk menimpa method dari superclass, yaitu dengan cara menggunakan nama dan parameter yang sama pada method
**Contoh program :
1. Buatlah Class baru dengan nama “book”;
2. lalu buat sebuah class baru dengan nama “MainBook”;
3. Run Program diatas melalui program “MainBook” . Tekan Shift+F6 atau Klik Kanan > Run File.
maka akan muncul output seperti diatas.