Analisis PBO dalam Pemrograman Java
Analisis PBO dalam Pemrograman Java
T A A dan DES
SAIN BER
RORIEN
NTASI OB
BJEK (AD
DBO)
PEEMRROGR
RAMMAN
BER
RORIIENT
TASI OBJJEK ((PBO
O)
DAL
LAM JAVVA
Oleh :
MUHAMM
MAD HUS
SNAN SAR
ROFI
09 1065 2024
2
JUR
RUSAN TEKNIK INFORM
MATIKA
FAK
KULTAS TEKNIK
T K
UNIVER
RSITAS MUHAMM
M MADIYA
AH JEMB
BER
2010
KATA PENGANTAR
Puji syukur Alhamdulillah kami panjatkan kehadirat Allah SWT yang telah
melimpahkan nikmat dan hidayahnya kepada kita semua. Ilmu pengetahuan yang telah
kita terima dan kita miliki saat ini adalah salah satu dari sekian macam nikmat yang patut
kita syukuri, karena tanpa ilmu pengetahuan, maka manusia tidak mampu mengarungi
kehidupan dengan baik. Namun semua itu tidak akan diperoleh tanpa adanya proses
belajar, dan hal ini sepatutnyalah kita pertanggung jawabkan. Dan atas RahmatNya pula
saya bisa menyelesaikan tugas untuk mata kuliah Analisa dan Desain Berorientasi Objek
ini
Prosedural OOP
1. Serangkaian tugas diselesaiakn dalam 1. Fungsi dan data bukan menjadi dua
bentuk fungsi atau prosedur hal yang terpisah,
2. Cara pandang program adalah suatu 2. Fungsi dan data menjadi satu kesatuan
urutan instruksi yang disebut sebagai obyek aktif
3. Programmer harus mem-breakdown 3. Cara pandang program adalah
suatu problem menjadi sub problem serangkaian obyek yang bekerjasama
yang lebih simple untuk menyelesaikan suatu problem
4. Fungsi dan prosedur menjadi fokus
utama
5. Fungsi dan prosedur digunakan untuk
memanipulasi data
Secara umum OOP berputar pada konsep dari obyek yang merupakan elemen
dasar dari program yang kita buat. Ketika kita membandingkan dengan dunia nyata, kita
dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan
seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya.
Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan
manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan
cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari
singa. Coba perhatikan tabel dibawah ini sebagai contoh perbandingan :
Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan
sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku
sebagai method. Data dan method dapat digunakan dalam pemrograman game atau
perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya
adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak
obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang
untuk anak anak.
Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat
lunak yang stukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari
sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus
dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari
obyek. Bisa dikatakan bahwa obyek adalah sebuah perangkat lunak yang berisi
sekumpulan variabel dan method yg berhubungan. Variabel dan method dalam obyek
Ketika diinisialisi, setiap obyek mendapat satu set variabel yang baru.
Bagaimanapun, implementasi dari method dibagi diantara objek pada class yang sama.
Class menyediakan keuntungan dari reusability. Programmer perangkat lunak
dapat menggunakan sebuah kelas beberapa kali untuk membuat banyak objek.
Pada Bab Berikutnya akan dijelaskan tentang pembuatan dan penggunaan class
dalam bahasa Java
2.1. Class
Pada bab sebelumnya telah disinggung apa yang dimaksud dengan Class.
Sebelum menulis class, pertama pertimbangkan dimana kita akan menggunakan class
dan bagaimana class tersebut akan digunakan. Pertimbangkan pula nama yang tepat dan
tuliskan seluruh informasi atau properti yang ingin Anda isi pada class. Jangan sampai
terlupa untuk menuliskan secara urut method yang akan Anda gunakan dalam class.
Dalam pendefinisian class, dituliskan :
Pada bagian ini, kita akan membuat sebuah class yang berisi record dari siswa.
Jika kita telah mengidentifikasikan tujuan dari pembuatan class, maka dapat dilakukan
pemberian nama yang sesuai. Nama yang tepat pada class ini adalah StudentRecord.
Untuk mendefinisikan class tersebut, kita tuliskan
Dimana :
2.2. Atribut
Atribut merupakan hal-hal yang melekat di dalam sebuah class (ciri-ciri class).
Atau bisa dikatakan field penyusun dari class. Misal class Mobil mempunyai atribut
Warna, Merek, Kapasitas, Kecepatan. Untuk mendeklarasikan atribut, kita tuliskan :
Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class.
Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan.
Contohnya, kita tidak mungkin menginginkan untuk menggunakan tipe data integer
untuk nama siswa, atau tipe data string pada nilai siswa.
Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord
Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class,
selanjutnya kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut –
atribut tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka
kita harus mendeklarasikannya sebagai instance variable :
Dimana : private disini menjelaskan bahwa variabel tersebut hanya dapat diakses
oleh class itu sendiri. Object lain tidak dapat menggunakan variabel tersebut secara
langsung. Kita akan membahas tentang kemampuan akses pada pembahasan selanjutnya.
Petunjuk penulisan program :
1. Deklarasikan seluruh instance variable pada awal penulisan class
2. Deklarasikan variable per baris
3. Penulisan instance variable, termasuk juga variabel lain harus dimulai dengan huruf
kecil
4. Gunakan tipe data yang tepat pada setiap variabel
5. Deklarasikan instance variable sebagai private supaya hanya method pada class itu
sendiri yang dapat mengaksesnya.
Disamping instance variable, kita juga dapat mendeklarasikan class variable atau
variabel yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object
di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari
seluruh class, kita dapat mendeklarasikan satu static variable yang akan menampung
nilai tersebut. Kita beri nama variabel tersebut dengan nama [Link]
ini penulisan static variable
2.3. Method
Method adalah bagian-bagian kode yang dapat dipanggil oleh program utama
atau dari method lainnya untuk menjalankan fungsi yang spesifik. Bisa dikatakan bahwa
Method merupakan perilaku dari sebuah class, misal sebuah class mobil memiliki
method berbelok, akselerasi, mengerem.
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. Parameter bisa juga disebut sebagai argumen dari fungsi
3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang
memanggilnya
Sekarang mengapa kita butuh untuk membuat banyak method? Mengapa kita
tidak menuliskan semua kode pada sebuah method? Hal ini karena penyelesaian masalah
yang sangat efektif adalah memecah masalah-masalah tersebut menjadi beberapa bagian.
Kita juga dapat melakukan hal ini di Java dengan membuat method untuk mengatasi
bagian tertentu dari masalah. Sebuah permasalahan dapat dipecah-pecah menjadi
dimana,
<modifier> dapat menggunakan beberapa modifier yang berbeda
<returnType> dapat berupa seluruh tipe data, termasuk void
<name> identifier atas class
<parameter> ::= <tipe_parameter> <nama_parameter>[,]
Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat
kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable
dalam class, baik itu berupa instance maupun static. Method semacam ini disebut dengan
dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar class
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan name = temp; mengidentifikasi nilai dari temp sama dengan
name dan mengubah data pada instance variable name.
Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun
berisi beberapa argumen dari program yang akan digunakan oleh method.
Kita dapat mempunyai banyak return values pada sebuah method selama mereka
tidak pada blok program yang sama. Kita juga dapat menggunakan konstanta disamping
variabel sebagai return value. Sebagai contoh, perhatikan method berikut ini :
dimana,
public Menjelaskan bahwa method ini dapat diakses dari object
-
luar class
static - Method ini adalah static dan pemanggilannya
menggunakan
[namaclass].[namaMethod]. Sebagai contoh :
[Link]
Int - Tipe return dari method. Mengindikasikan method
tersebut harus mempunyai return value berupa integer
public - Menjelaskan bahwa method ini dapat diakses dari object
luar class
getStudentCount - Nama dari method
() - Method ini tidak memiliki parameter
apapun
Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan
return value 0 jika kita tidak mengubah apapun pada kode program untuk mengatur
nilainya.
Reference this digunakan untuk mengakses instance variable yang dibiaskan oleh
parameter. Untuk pemahaman lebih lanjut, mari kita perhatikan contoh pada method
setAge. Dimisalkan kita mempunyai kode deklarasi berikut pada method setAge.
Reference this digunakan untuk mengakses instance variable yang dibiaskan
olehparameter. Untuk pemahaman lebih lanjut, mari kita perhatikan contoh pada method
Dimisalkan kita mempunyai kode deklarasi berikut pada method setAge.
Nama parameter pada deklarasi ini adalah age, yang memiliki penamaan yang
sama dengan instance variable age. Parameter age adalah deklarasi terdekat dari method,
sehingga nilai dari parameter tersebut akan digunakan. Maka pada pernyataan
age = age
Sebagai contoh, kita dapat menulis ulang kode hingga tampak sebagai berikut :
Method ini akan mereferensikan nilai dari parameter age kepada instance variable
dari object StudentRecord.
CATATAN : Kita hanya dapat menggunakan referensi this terhadap instance variable
dan BUKAN static ataupun class variabel.
Dalam class yang kita buat, kadangkala kita menginginkan untuk membuat
method dengan nama yang sama namun mempunyai fungsi yang berbeda menurut
parameter yang digunakan. Kemampuan ini dimungkinkan dalam pemrograman Java,
dan dikenal sebagai overloading method.
Overloading method mengijinkan sebuah method dengan nama yang sama namun
memiliki parameter yang berbeda sehingga mempunyai implementasi dan return value
yang berbeda pula. Daripada memberikan nama yang berbeda pada setiap pembuatan
method, overloading method dapat digunakan pada operasi yang sama namun berbeda
dalam implementasinya.
Sebagai contoh, pada class StudentRecord kita menginginkan sebuah method
yang akan menampilkan informasi tentang siswa. Namun kita juga menginginkan operasi
penampilan data tersebut menghasilkan output yang berbeda menurut parameter yang
digunakan. Jika pada saat kita memberikan sebuah parameter berupa string, hasil yang
ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita memberikan
3 nilai dengan tipe double, kita menginginkan method tersebut untuk menampilkan nama
dan nilai dari siswa.
Supaya dapat meggunakan class yang berada diluar package yang sedang
dikerjakan, Anda harus mengimport package dimana class tersebut berada. Pada
dasarnya, seluruh program JAVA mengimport package [Link].*, sehingga Anda dapat
menggunakan class seperti String dan Integer dalam program meskipun belum
mengimport package sama sekali.
Penulisan import package dapat dilakukan seperti dibawah ini :
Sebagai contoh, bila Anda ingin menggunakan class Color dalam package awt,
kita harus menuliskan import package sebagai berikut :
Baris pertama menyatakan untuk mengimport class Color secara spesifik pada
package, sedangkan baris kedua menyatakan mengimport seluruh class yang terkandung
dalam package [Link].
Cara lain dalam mengimport package adalah dengan menuliskan referensi
package secara eksplisit. Hal ini dilakukan dengan menggunakan nama package untuk
mendeklarasikan object sebuah class :
bersama dengan class – class yang lain dengan nama package schoolClasses.
Langkah pertama yang harus dilakukan adalah membuat folder dengan nama
Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter
menghendaki struktur direktori yang mengandung class eksekusi untuk disesuaikan
dengan struktur package.
Pada UNIX, asumsikan bahwa kita memiliki class - class yang terdapat dalam
direktori /usr/local/myClasses, ketikkan :
Perhatikan bahwa Anda dapat mengatur classpath dimana saja. Anda juga dapat
mengatur lebih dari satu classpath, kita hanya perlu memisahkannya dengan
menggunakan ; (Windows), dan : (UNIX). Sebagai contoh :
3.1. Inheritance
Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP.
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat
mempunyai class turunan. Suatu class yang mempunyai class turunan dinamakan parent
class atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau
child class.
Dalam dunia riil, suatu entitas turunan dapat mewarisi apa-apa yang dipunyai dari
entitas induknya. Misalkan saja antara entitas Bapak dan entitas Anak. Entitas anak dapat
mewarisi apa-apa yang dipunyai oleh entitas Bapaknya. Demikian juga dalam konsep
inheritance, suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Inilah yang terpenting dari konsep inheritance.
Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-
nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan
juga apa-apa yang ia warisi dari class parent-nya. Kesimpulannya, boleh dikatakan
bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Dalam Java, semua class, termasuk class yang membangun Java API, adalah
subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini.
Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk
mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai
class induk yang dinamakan Person.
Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari
program adalah,
Kode ini
i memangggil construuctor keduaa dari supeerclass terdeekat (yaitu Person)
dann mengekseekusinya. Coontoh kode lain ditunju
ukkan sebaggai berikut,
Jadi, ketika kita meminta method getName dari object class Student, method
overridde akan dipanggil, keluarannya akan menjadi,
Method static juga secara otomatis final. Ini artinya Anda tidak dapat
membuatnya override.
Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang
berisi implementasi, dan juga beberapa method yang akan di-overridden oleh subclasses
nya. Sebagai contoh, kita akan membuat superclass bernama LivingThing. class ini
mempunyai method tertentu seperti breath, eat, sleep, dan walk. Akan tetapi, ada
beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita
ambil contoh, method walk. Tidak semua kehidupan berjalan(walk) dalam cara yang
sama. Ambil manusia sebagai misal, kita manusia berjalan dengan dua kaki, dimana
kehidupan lainnya seperti anjing berjalan dengan empat kaki. Akan tetapi, beberapa ciri
umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass
umum dalam hal ini.
Jika class Human tidak dapat overridde method walk, kita akan menemui pesan
error berikut ini,
Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau
constant ). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method
tanpa tubuh.
Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-
sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya
dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan
bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat
memanggil method interface dan versi yang tepat dari method yang akan dieksekusi
tergantung dari tipe object yang melewati pemanggil method interface.
Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan
mengimplementasikan method yang sama. Melalui interface-interface, kita dapat
menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya
seolaholah class yang berhubungan.
Mari kita ambil contoh class Line dimana berisi method yang menghitung
panjang dari garis dan membandingkan object Line ke object dari class yang sama.
Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method
yang membandingkan object MyInteger ke object dari class yang sama. Seperti yang
kita lihat disini, kedua class-class mempunyai method yang mirip dimana embandingkan
mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama
sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini
mengimplementasikan beberapa method dengan tanda yang sama, kita dapat
menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface,
katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi
interface dapat dideklarasikan sebagai,
Berikut ini adalah perbedaan utama antara sebuah interface dan sebuah class
abstract: method interface tidak punya tubuh, sebuah interface hanya dapat
mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan
class istimewa lainnya, mereka didefinisikan secara independent.
Satu ciri umum dari sebuah interface dan class adalah pada tipe mereka berdua.
Ini artinya bahwa sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah
class dapat digunakan. Sebagai contoh, diberikan class Person dan interface
PersonInterface, berikut deklarasi yang benar:
Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method.
Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class
memiliki salah satunya.
Seperti yang telah kita lihat dalam bagian sebelumnya, class dapat
mengimplementasikan sebuah interface selama kode implementasi untuk semua method
yang didefinisikan dalam interface tersedia. Hal lain yang perlu dicatat tentang hubungan
antara interface ke class-class yaitu, class hanya dapat mengEXTEND SATU superclass,
tetapi dapat mengIMPLEMENTASIkan BANYAK interface. Sebuah contoh dari sebuah
class yang mengimplementasikan interface adalah,
Catatan bahwa sebuah interface bukan bagian dari hirarki pewarisan class. Class
yang tidak berhubungan dapat mengimplementasikan interface yang sama.
[Link]
[Link]