Bab 2 - Pemrograman Berorientasi Objek

Download Report

Transcript Bab 2 - Pemrograman Berorientasi Objek

Pemrograman Berorientasi
Objek
Bab 2 – PBO
Pemrograman Berorientasi Objek
Adalah paradigma pemrograman yang
diorientasikan pada objek.
 Semua data dan fungsi di dalam
paradigma ini dibungkus dalam kelaskelas atau objek-objek.
 Setiap objek dapat menerima pesan,
memproses data, dan mengirim pesan
ke objek lainnya.

PBO vs PT



PT, prosedur dan data merupakan dua hal yang
terpisahkan satu sama lain.
Contoh, untuk mengelola data waktu yang terdiri dari
jam, menit, dan detik, dalam C dapat digroupkan
dengan menggunakan struct sebagai berikut:
Namun meskipun demikian, untuk mengolah ketiga
data tersebut, dibutuhkan prosedur yang disusun pada
bagian yang terpisah.
PBO vs PT

PBO, prosedur dan data dapat dibungkus
menjadi sebuah objek sehingga prosedur dan
data tidak terpisah lagi melainkan menjadi
satu kesatuan.
 Ini merupakan salah satu konsep OOP yang
disebut dengan “encapsulation”.
 OOP didasarkan pada pemodelan objek –
objek dunia nyata menjadi objek – objek
dalam pemrograman
Konsep Dasar OOP
Objek
 Kelas
 Abstract Data Type / Tipe Data Abstrak
 Instantiation / Instansiasi
 Inheritance / Inheritas / Pewarisan
 Encapsulation / Enkapsulasi
 Abstraction / Abstraksi
 Polymorphism / Polimorfisme

Objek






Segala sesuatu yang ada.
Objek terdiri dari attribute / state dan
behaviour / event.
Attribute adalah segala ciri atau sifat yang
melekat pada objek.
Behaviour adalah perilaku / perbuatan / aksi /
kejadian yang dapat dilakukan / diterima oleh
objek.
Contoh: anjing, kucing, manusia, meja, dsb.
Attr & behav dari contoh tsb adalah???
Kelas


Cetakan / template / blue print dari objek.
Kelas mendefinisikan attribute (diwujudkan dalam
bentuk field / variable global [variable yang melekat
pada kelas, bukan pada sebuah method / fungsi /
prosedur]) dan behaviour (diwujudkan dalam bentuk
method / prosedur / fungsi) dari objek dalam suatu unit
untuk suatu tujuan tertentu.
 Sebagai contoh 'class of dog' adalah suatu unit yang
terdiri atas definisi-definisi data dan fungsi-fungsi yang
menunjuk pada berbagai macam perilaku/turunan dari
anjing.
 Sebuah class adalah dasar dari modularitas dan
struktur dalam pemrograman berorientasi object.
Kelas



Sebuah class secara tipikal sebaiknya dapat dikenali
oleh seorang non-programmer sekalipun terkait
dengan domain permasalahan yang ada, dan kode
yang terdapat dalam sebuah class sebaiknya (relatif)
bersifat mandiri dan independen (sebagaimana kode
tersebut digunakan jika tidak menggunakan OOP).
Dengan modularitas, struktur dari sebuah program
akan terkait dengan aspek-aspek dalam masalah yang
akan diselesaikan melalui program tersebut.
Cara seperti ini akan menyederhanakan pemetaan
dari masalah ke sebuah program ataupun sebaliknya.
Abstract Data Type





Adalah tipe data tertentu yang didefinisikan oleh
pemrogram untuk kemudahan pemrograman serta
untuk mengakomodasi tipe-tipe data yang tidak secara
spesifik diakomodasi oleh bahasa pemrograman yang
digunakan.
Dalam OOP kita dapat mendefinisikan tipe data baru.
Dapat berisi attribute saja, behaviour saja maupun
keduanya.
ADT diwujudkan dalam kelas – kelas buatan
programmer sesuai dengan kebutuhan / keinginan
programmer.
Singgung tipe data primitive!
Instantiation
Adalah proses penciptaan objek
berdasarkan kelas yang ada.
 Sama dengan pembuatan variable
berdasar kelas tertentu.
 Biasanya ditandai dengan penggunaan
kata kunci “new”.
 Contoh: A a = new A();

Inheritance / Inheritas / Pewarisan
Pewarisan attribute dan behaviour
sebuah kelas kepada kelas yang lain.
 Contoh real: seorang anak memiliki
anggota tubuh (mata, rambut) yang
sama / mirip (bentuk, warna, etc) dengan
orang tuanya, pewarisan DNA, etc.

Encapsulation / Enkapsulasi

Pembungkusan attribute atau behaviour
sehingga tidak dapat diganti secara
sembarangan dengan cara yang tidak
seharusnya.
 Setiap objek mengakses interface yang
menyebutkan bagaimana objek lainnya dapat
berinteraksi dengannya.
 Objek lainnya tidak akan mengetahui dan
tergantung kepada representasi dalam objek
tersebut.
Encapsulation / Enkapsulasi

Manfaat dari proses enkapsulasi adalah :
Modularitas: Kode sumber dari sebuah
objek dapat dikelola secara independen dari
kode sumber objek yang lain.
 Information Hiding: Karena kita dapat
menentukan hak akses(public, private,
protected, default) sebuah variabel/method
dari objek, dengan demikian kita bisa
menyembunyikan informasi yang tidak perlu
diketahui objek lain.

Abstraction / Abstraksi

Berbagai objek yang sejenis dapat memiliki
behaviour yang sama namun berbeda
implementasinya.
 Sebagai contoh, objek anjing sama – sama
memiliki behaviour menggonggong namun
suara gonggongan anjing berbeda – beda.
 Inilah yang mendasari abstraksi pada OOP.
 Pada OOP sebuah kelas dapat mendefinisikan
behaviour yang sama secara abstract yang
kemudian dapat diimplementasikan secara
berbeda pada saat digunakan.
Polymorphism / Polimorfisme

Kata polimorfisme berarti satu objek dengan
banyak bentuk yang berbeda
 Adalah konsep sederhana dalam
pemrograman berorientasi objek yang berarti
kemampuan dari suatu variabel referensi
objek untuk memiliki aksi berbeda bila method
yang sama dipanggil, dimana aksi method
tergantung dari tipe objeknya.
 Menciptakan berbagai macam bentuk yang
berbeda dari sebuah kelas yang sama.
 Proses ini dilakukan melalui proses pewarisan.
Kelas dan Objek

Class Creation:


class <name> {
}
Object Creation / Instantiation:

<Class Name> <object name> = new
<Class Constructor>;
Constructor / Konstruktor
Adalah sebuah method yang otomatis
akan dipanggil setiap kali melakukan
instansiasi terhadap suatu kelas dan
digunakan untuk melakukan inisialisasi
nilai dari data – data yang terdapat di
dalam kelas yang bersangkutan.
 Namanya == nama kelas.
 Tidak ada return type sama sekali.
 Jika tidak dideklarasikan == use default

Sample in Java
class Mahasiswa {
String nama;
String nim;
public static void main(String[] args) {
Mahasiswa m1 = new Mahasiswa();
m1.nama = "John Smith";
m1.nim = "672000999";
m1.cetakNama();
m1.cetakNim();
Mahasiswa m2 = new
Mahasiswa("Jane Doe", "672000001");
m2.cetakNama();
m2.cetakNim();
}
// default constructor
Mahasiswa() {}
// created constructor
Mahasiswa(String nama, String nim) {
this.nama = nama;
this.nim = nim;
}
void cetakNama() {
System.out.println("Nama = " +
nama);
}
void cetakNim() {
System.out.println("NIM = " +
nim);
}
}
Nama = John Smith
NIM = 672000999
Nama = Jane Doe
NIM = 672000001
Overloading
Adalah mendefinisikan method yang
memiliki nama yang sama, tetapi dengan
signature (data type parameter &
parameter number) yang berbeda dalam
definisi class yang sama.
 Constructor == method  bisa
dioverload (see previous sample)

Sample In Java

void cetakNama() {
System.out.println("Nama = " + nama);
}
 void cetakNama(String nama) {
System.out.println("Nama = " + nama);
}
 void cetakNama(int nama) {
System.out.println("Nama = " + nama);
}
 // not overloading
void cetakNama(String namaSaya) {
System.out.println("Nama = " + namaSaya);
}