(PEMROGRAMAN BERORIENTASI OBJEK) MATERI PBO KELAS XI
1. KONSEP PEMROGRAMAN BERORIENTASI OBJEK
Contoh class, object, attributes, dan behavior:
2. Pewarisan (Inheritance)

Keuntungan Pewarisan
3. Polimorfisme
Sumber:
http://www.adityarizki.net/2012/06/konsep-dasar-pemrograman-berorientasi-objek/
2.METHOD, CLASS, DAN OBJEK PADA JAVA
Prosedural vs OOP
Dalam dunia pemrograman, biasanya kita dihadapkan pada dua jenis metode pemrograman, yaitu pemrograman prosedural (procedural) dan pemrograman berorientasi objek (object oriented).
Apa perbedaan kedua metode tersebut? Bagaimana pemrograman berorientasi
objek itu dilakukan? Apa saja konsep-konsep OOP yang harus dikuasai?
Tulisan ini akan menjelaskan pertanyaan-pertanyaan tersebut.
Pemrograman prosedural merupakan suatu metode menulis program yang didasarkan pada "serangkaian tugas yang diselesaikan dalam bentuk fungsi atau prosedur".
Cara pandang pemrograman prosedural yaitu sebuah program adalah suatu
urutan instruksi. Programmer harus mem-break down suatu problem/masalah
menjadi sub problem yang lebih sederhana. Fokus utama metode prosedural
ini adalah fungsi dan prosedur, dimana keduanya digunakan untuk
memanipulasi data. Dalam hal ini data bersifat pasif.
Lain halnya dengan pemrograman
berorientasi objek (OOP), fungsi dan data bukan menjadi dua hal yang
terpisah. Fungsi dan data menjadi satu kesatuan yang disebut sebagai
objek aktif. Cara pandang OOP ini yaitu sebuah program merupakan serangkaian objek yang bekerjasama untuk menyelesaikan suatu problem.
Dengan kata lain, metode prosedural
berfokus pada cara komputer menangani tugas, sedangkan metode OOP
berfokus pada tugas yang kita kembangkan untuk dieksekusi komputer.
Kedua jenis metode pemrograman tersebut dapat digunakan untuk menangani
masalah yang sama, asalkan bahasa pemrograman yang digunakan mendukung
metode-metode tersebut. Contoh bahasa pemrograman yang mendukung OOP
diantaranya : Java, C++, Pascal, Visual Basic .NET, Ruby, Python, PHP,
C#, Delphi, Perl, dsb. Selain itu masih banyak bahasa lain yang termasuk
ke dalam bahasa prosedural, atau bahkan bisa mendukung kedua metode
pemrograman tersebut. Untuk lebih lengkapnya, dapat dilihat daftar
bahasa pemrograman berdasarkan tipenya di sini.
Istilah-Istilah OOP
1. Objek
Untuk mempermudah pemahaman, maka disini
akan dijelaskan melalui analogi. Pada dasarnya semua benda yang adadi
dunia nyata dapat dianggap sebagai objek. Misalnya rumah, mobil, sepeda,
motor, gelas, komputer, meja, sepatu, dll. Setiap objek memiliki
atribut sebagai status (state) dan tingkah laku sebagai behavior.
Contoh objek : Motor. Maka atribute
(state) nya adalah pedal, roda, jeruji, speedometer, warna, jumlah roda.
Sedangkan tingkah laku (behavior) nya adalah kecepatan menaik,
kecepatan menurun, dan perpindahan gigi motor.
Analogi pemrograman berorientasi objek
sama dengan penggambara pada dunia nyata seperti contoh di atas. Dalam
OOP, state disimpan pada variabel dan tingkah laku disimpan pada method.
Dalam bahasa teoretis OOP, Objek
berfungsi untuk membungkus data dan fungsi bersama menjadi satu unit
dalam sebuah program komputer. Objek merupakan dasar dari modularitas
dan struktur dalam sebuah program komputer berorientasi objek.
2. Class
Definisi class yaitu template untuk
membuat objek. Class merupakan prototipe atau blue prints yang
mendefinisikan variabel-variabel dan method-method secara umum. Objek
merupakan hasil instansiasi dari suatu class. Proses pembentukan objek
dari suatu kelas disebut sebagai instantiation. Objek disebut juga
sebagai instances.
Dalam bahasa teoretis OOP, class
merupakan kumpulan atas definisi data dan fungsi-fungsi 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.
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.
3. Attributes
Atribut adalah data yang membedakan antara objek satu dengan yang lainnya.
Contoh Objek : VolcanoRobot ( a volcanic exploration vehicle), mempunyai atribut sebagai berikut:
- Status ~> exploring, moving, returning home
- Speed ~> in miles per hour
- Temperature ~> in Fahrenheit degrees
Dalam class, atribut sering disebut
sebagai variabel. Atribut dibedakan menjadi dua jenis yaitu Instance
Variable dan Class Variable.
Instance variable adalah atribut untuk
tiap objek dari kelas yang sama. Tiap objek mempunyai dan menyimpan
nilai atributnya sendiri. Jadi, tiap objek dari class yang sama bokeh
mempunyai nilai yang sama atau berbeda.
Class Variable adalah atribut untuk
semua objek yang dibuat dari class yang sama. Semua objek mempunyai
nilai atribut yang sama. Jadi semua objek dari class yang sama mempunyai
hanya satu nilai yang value nya sama.
4. Behavior
Behavior/tingkah laku adalah hal-hal
yang bisa dilakukan oleh objek dari suatu class. Behavior dapat
digunakan untuk mengubah nilai atribut suatu objek, menerima informasi
dari objek lain, dan mengirim informasi ke objek lain untuk melakukan
suatu tugas (task).
Contoh behavior untuk objek VolcanoRobot:
- check current temperature
- begin a survey
- report its current position
Dalam class, behavior disebut juga
sebagai methods. Methods sendiri adalah serangkaian statements dalam
suatu class yang menghandle suatu task tertentu. Cara objek
berkomunikasi dengan objek yang lain adalah dengan menggunakan method.
5. Abstraksi
Abstraksi adalah kemampuan sebuah
program untuk melewati aspek informasi yang diproses olehnya, yaitu
kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani
sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan
dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam
sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses,
fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik
digunakan untuk mengembangkan sebuah pengabstrakan.
Konsep Konsep OOP
1. Enkapsulasi (Encapsulation)
Definisi enkapsulasi: Pembungkusan
variabel dan method dalam sebuah obyek yang terlindungi serta
menyediakan interface untuk mengakses variabel tersebut. Variabel dan
method yang dimiliki oleh suatu objek, bisa ditentukan hak aksesnya.
Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari
struktur dalam bahasa C.
Contoh: jam tangan. Dalam hal ini,
penting sekali untuk mengetahui waktu, sedangkan cara jam mencatat waktu
dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah
penting kita ketahui.
Dengan kata lain enkapsulasi berfungsi
untuk memastikan pengguna sebuah objek tidak dapat mengganti keadaan
dalam/dari sebuah objek dengan cara yang tidak layak; hanya metode dalam
objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap
objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat
berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan
tergantung kepada representasi dalam objek tersebut.
2. Pewarisan (Inheritance)
Pewarisan merupakan pewarisan atribut
dan method dari sebuah class ke class lainnya. Class yang mewarisi
disebut superclass dan Class yang diwarisi disebut subclass. Subclass
bisa berlaku sebagai superclass bagi class lainya, disebut sebagai
multilevel inheritance.
Contoh : terdapat class sepeda dan
sepeda gunung. Sepeda termasuk superclass. Sepeda gunung termasuk
subclass. Hal ini dikarenakan sepeda gunung memiliki variabel dan method
yang dimiliki oleh sepeda.
Prinsip dasar inheritance yaitu
persamaan-persamaan yang dimiliki oleh beberapa kelas dapat digabungkan
dalam sebuah class induk sehingga setiap kelas yang diturunkannya memuat
hal-hal yang spesifik untuk kelas yang bersangkutan.
Contoh PewarisanKeuntungan Pewarisan
- Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass, sehingga memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class (abstraksi), untuk mendefinisikan class dengan tingkah laku dan state secara umum.
Single & Multiple Inheritance
Bahasa C adalah contoh multiple
inheritance. Suatu class diperbolehkan untuk mempunyai lebih dari satu
superclass. Variabel dan method yang diwariskan merupakan kombinasi dari
superclass-nya. Java adalah contoh single inheritance. Suatu class
hanya boleh mempunyai satu superclass.
Multilevel Inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
3. Polimorfisme
Polimorfisme adalah kemampuan suatu
obyek untuk mempunyai lebih dari satu bentuk. Polimorfisme tidak
bergantung kepada pemanggilan subrutin. Metode tertentu yang berhubungan
dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana
pesan tersebut dikirim. Contohnya, bila sebuah burung menerima pesan
"gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor
singa menerima pesan yang sama, dia akan menggerakkan kakinya dan
berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai
dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah
variabel tungal dalam program dapat memegang berbagai jenis objek yang
berbeda selagi program berjalan, dan teks program yang sama dapat
memanggil beberapa metode yang berbeda di saat yang berbeda dalam
pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang
mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
Kesimpulan :
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 bagian administrasi, maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian 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, dapat dilakukan dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
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 bagian administrasi, maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian 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, dapat dilakukan dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Sumber:
http://www.adityarizki.net/2012/06/konsep-dasar-pemrograman-berorientasi-objek/
2.METHOD, CLASS, DAN OBJEK PADA JAVA
Class dan
Objek pada Java
Kelas merupakan salah satu konsep fundamental
pemrograman berorientasi objek. Kelas dapat diilustrasikan sebagai suatu cetak
biru (blue print) atau prototipe yang digunakn untuk menciptakan objek.
Definisi Class
Definisi kelas terdiri atas dua komponen, yaitu
deklarasi kelas dan body kelas. Deklarasi kelas adalah baris pertama di suatu
kelas, dan minimal mendeklarasikan nama kelas. Sementara itu, body
dideklarasikan setelah nama kelas dan berada diantara kurung kurawal.
//deklarasi kelas
Public class ContohKelas {
//body kelas
}
Pada Java, nama kelas sekaligus merepresentasikan nama file kode program
dan sifatnya casesensitive.
Objek adalah entitas dasar saat runtime. Pada saat
kode program dieksekusi, objek berinteraksi satu sama lain tanpa harus
mengetahui detil data atau kodenya. Interaksi antara objek ini dilakukan
menggunakan suatu message.
Pada pemrograman berbasis objek, objek dijadikan
sebagai komponen utama dalam program, objek menggabungkan data dan fungsi
sebagai satu kesatuan. Dalam Pemrograman berbasis objek terdapat dua istilah
yang sangat terkenal yaitu class dan objek. Pengertiannya adalah sebagai
berikut class adalah cetak biru dari sebuah objek, jadi kita dapat membuat
banyak objek dari sebuah class, atau kita dapat analogikan, class itu adalah cetakan
puding, sedangkan objek adalah puding. Contoh sebuah class adalah motor. Class
motor memiliki data merk, warna, tahun pembuatan dan juga memiliki metode
seperti menghidupkan mesin, kecepatan dsb.
Jadi jika ada motor Bowo, motor Raga dan motor Loan
maka itu adalah sebuah objek dari class motor. Pada pemrograman java, cara
untuk menciptakan sebuah objek dari suatu class adalah dengan cara sebagai
berikut :
<nama class> <nama objek>=new <nama
konstruktor>
Misal:
String str = new String();
Random r = new Random();
Pegawai p2 = new Pegawai();
Date hari = new Date();
Hari adalah object reference dari class Date yang
akan digunakan untuk mengakses class Date. Sedangkan operator new adalah
operator yang akan menghasilkan hari sebagai reference ke instance dari class
Date ().
Contoh :
Instansiasi Class
Untuk membuat sebuah objek atau sebuah instance
pada sebuah class. Kita menggunakan operator new. Sebagai contoh, jika
anda ingin membuat instance dari class string, kita menggunakan kode berikut :
String str2 = new String(“Hello world!”);
Ini juga sama dengan,
String str2 = "Hello";
Menentukan Class dari sebuah Object
Jika kita ingin mengetahui class dari sebuah obyek
dapat dilakukan dengan cara :
1. Method getClass() mengembalikan sebuah obyek Class (dimana
Class itu sendiri merupakan sebuah class) yang memilki sebuah method getName().
Selanjutnya getName() akan mengembalikan sebuah string yang mewakili nama
class.
Sebagai contoh,
String name = key.getClass().getName();
2. Operator InstanceOf
InstanceOf memiliki dua operand: obyek pada sebelah
kiri dan nama class pada sebelah kanan. Pernyataan ini mengembalikan nilai true
atau false tergantung pada benar/salah obyek adalah sebuah instance dari
penamaan class atau beberapa subclass milik class tersebut. Sebagai contoh,
boolean ex1 = "Texas" instanceof String;
// true
Object pt = new Point(10, 10);
boolean ex2 = pt instanceof String; // false
Method pada Java
Metode adalah sekumpulan statement program yang
disatukan menjadi sebuah subprogram atau fungsi, diawali dengan tanda “{“
diakhiri dengan tanda “}”. Ada 2 macam metode dan 1 metode pengendali, yaitu:
- Metode kelas : Metode ini dapat dieksekusi walaupun tidak terdapat objek dalam kelas tersebut. Seperti variabel kelas, metode kelas juga dideklarasikan menggunkan keyword static.
- Metode objek : Metode ini hanya dapat dieksekusi sehubungan dengan objek tertentu.
- Metode main() : Metode ini digunakan pada saat aplikasi Java dimulai, menggunakan keyword static. Sebelum aplikasi mulai dieksekusi, diperlukan metode walaupun tanpa objek.
Metode adalah suatu blok dari
program yang berisi kode dengan nama dan properti
yang dapat digunakan kembali. Metode dapat mempunyai nilai balik atau
tidak, penjelasan
beserta contohnya adalah sebagai berikut:
Metode tidak membalikkan nilai
Jika diberi awalan dengan kata void maka metode tersebut tidak memberi
nilai balik.
contoh:
Metode membalikkan nilai
Jenis kedua adalah jika metode diberi awalan sebuah tipe data maka
metode tersebut akan
memberi nilai balik data yang bertipedata sama dengan metode tersebut.
contoh :
Selain dua jenis diatas metode juga ada yang diberi
parameter
contoh :
Karakteristik dari
Method
antara lain :
Berikut adalah karakteristik dari method :
1. Dapat mengembalikan satu nilai atau tidak sama sekali
2. Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada
parameter sama sekali.
3. Setelah method telah selesai dieksekusi, dia akan kembali pada method
yang memanggilnya.
Memanggil Instance dan
memberikan Variabel dari Method
Sekarang, untuk mengilustrasikan bagaimana
memanggil method, mari kita menggunakan class string sebagai contoh. Anda dapat
menggunakan the dokumentasi dari Java API untuk melihat semua method yang
tersedia dalam class string. Selanjutnya, kita akan membuat method, kita sendiri.
Tapi untuk saat ini, mari terlebih dahulu kita gunakan method yang sudah
disediakan oleh Java.
Untuk memanggil sebuah instance method, kita dapat menuliskan :
nameOfObject.nameOfMethod(
parameters );
mari kita
mengambil dua contoh method yang ditemukan dalam class String.
Contoh program seperti dibawah ini
:
String str1 = "Hello";
char x = str2.charAt(0);
String str2 = "hello";
boolean result =
str1.equalsIgnoreCase( str1 );
Pemberian Variabel Dalam
Method
Pada contoh kita sebelumnya , kita sudah pernah
mecoba melewati variabel pada method. Walaupun kita belumdapat membedakan
antara perbedaan tipe variabel yang diberikan (passing) ke method dalam
Java. Ada dua tipe data variabel passing pada method, yang pertama
adalah pass-by-value dan yang kedua adalah pass-by-reference.
Pass-by-Value
Ketika pass-by-values terjadi, method membuat
sebuah salinan dari nilai variable yang dikirimkan ke method. Walaupun
demikian, method tidak dapat secara langsung memodifikasi nilai variabel
pengirimnya meskipun parameter salinannya sudah dimodifikasi
nilainya di dalam method.
Contoh :
Pada contoh diatas, kita
memanggil method tes dan melewatkan nilai variabel i sebagai parameter. Nilai
pada i disalinkan ke variable j pada method. Pada kondisi ini variabel jadalah
merupakan variabel pengganti pada method tes, jika nilai j berubah maka nilai variabel
i yang terletak pada main tidak akan ikut berubah walaupun awalnya variabel j merupakan
salinan dari variabel i.
Pass-by-reference
Ketika sebuah pass-by-reference terjadi, alamat
memori dari nilai pada sebuah variable dilewatkan pada saat pemanggilan method.
Hal ini berarti bahwa method menyalin alamat memori dari variabel yang
dilewatkan pada method. Ini tidak seperti pada pass-by-value, method dapat
memodifikasi variabel asli dengan menggunakan alamat memori tersebut, meskipun
berbeda nama variabel yang digunakan dalam method dengan variabel aslinya, kedua
variabel ini menunjukkan lokasi dari data yang sama.
contoh :
Memanggil Method Static
Method Static adalah method yang dapat dipakai
tanpa harus menginisialisasi suatu class (maksudnya tanpa menggunakan variabel
terlebih dahulu). Method static hanya dimiliki oleh class dan tidak dapat
digunakan oleh instance (atau objek) dari suatu class. Method static dibedakan
dari method yang dapat instance di dalam suatu class oleh kata kunci static.
Untuk memanggil method static, ketik :
Classname.staticMethodName(params);
Contoh dari static method yang digunakan :
System.out.println(“Hello world”);
int i = Integer.parseInt(“10”);
String hexEquivalent = Integer.toHexString( 10 );
Konstruktor
Konstruktor adalah suatu metode yang dapat digunakan
untuk memberi nilai awal pada saat objek diciptakan. Konstruktor akan dipanggil
secara otomatis begitu objek diciptakan. Konstruktor memiliki ciri :
a. namanya sama dengan nama kelas
b. Tidak mengembalikan nilai ( dan juga tidak boleh ada kata void
didepannya)
Jika constructor tidak didefinisikan, Java
memberikan constructor dengan nama constructor_default. Constructor default
tidak melakukan apa-apa, namun semua variabel yang diinisiallisasi dianggap sebagai
berikut:
- Variabel numerik diset ke 0
- String diset ke null
- Variabel boolean di set ke false
Constructor tidak memiliki tipe hasil, walaupun
constructor bisa public, private, atau protected. Sebagian constructor bersifat
public.
contoh :
Jika konstruktor dipanggil dari kelas turunan, maka
caranya adalah dengan menuliskan kata super(); pada class turunan. Untuk
penurunan sifat akan dibahas pada pertemuan selanjutnya Konstruktor juga ada
yang diberi parameter
contoh :
konstrk(String a){
System.out.println(“INI
KONSTRUKTOR”);}
Comments
Post a Comment