MATERI DAN SOAL PBO KELAS XI
1. KONSEP PEMROGRAMAN BERORIENTASI OBJEK
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.
Contoh class, object, attributes, dan behavior:
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 Pewarisan
Keuntungan 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. 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”);}










Komentar
Posting Komentar