Pemrograman Berorientasi Objek

advertisement
Pemrograman Berorientasi Objek
Class, Object, Method Pada Java
Dalam pemrograman tradisional atau prosedural, seluruh data dan kode digabung
menjadi satu bagian dalam satu program. Untuk membuat program-program sederhana,
penggunaan jenis pemrograman procedural tidak menjadi masalah. Namun masalah akan
muncul ketika program yang dibuat berkembang lebih besar dan kompleks. Hal inilah yang
menjadi awal dibuatnya model pemrograman berorientasi objek.
Pada pemrograman berorientasi objek, komponen-komponen penyusun program
secara konseptual akan dipecah menjadi bagian-bagian tersendiri yang disebut dengan
objek.
Dalam pemrograman berorientasi objek, setiap objek akan memiliki data berupa
variable maupun konstanta, dan memiliki method berupa fungsi. Sehingga objek dapat
didefinisikan sebagai suatu entitas yang memiliki data dan method.
Kelebihan Pemrograman Berorientasi Objek



Objek-objeknya dapat digunakan ulang (reuseable) untuk program-program lain
Programnya lebih terstruktur dan lebih mudah untuk dikembangkan
Bersifat natural karena perilaku dan sifat-sifat objek didalam program akan disesuaikan
dengan objek-objek nyata yang ada di alam sekitar kita.
Kelas (Class) dan Objek (Object)
Hewan adalah suatu objek yang memiliki data-data berupa nama jenis hewan, jenis
kelamin hewan, berat badan, jenis makanan dan yang lainnya. Sedangkan untuk
Pemrograman berorientasi objek – [email protected]
Page 1
methodnya, hewan memiliki cara berkembangbiak, cara mencari makanan, cara bertahan
hidup dan sebagainya. Contoh lainnya adalah manusia sebagai objek dengan data-data
berupa nama, jenis kelamin, tinggi badan, berat badan, usia dan yang lainnya. Untuk
methodnya manusia memiliki cara bicara, cara berjalan, cara tertawa dan yang lainnya.
Objek dalam pemrograman berorientasi objek diabstraksikan menjadi sebuah kelas.
Kelas dapat didefinisikan sebagai blueprint atau kerangka yang mendefinisikan variablevariabel dan method umum dari sebuah objek tertentu. Karena kelas bersifat abstrak,
ketika membuat sebuah kelas baru maka kita telah mendefinisikan tipe data baru. Sekali
didefinisikan, tipe data baru tersebut dapat digunakan untuk membuat suatu objek dari
tipe tersebut. Dengan kata lain, kelas merupakan pola (template) untuk pembuatan objek,
dan objek adalah wujud nyata (instance) dari sebuah kelas. Sebagai contoh, sebuah kelas
manusia memiliki instance berupa nama-nama atau wujud dari manusia, seperti Udin,
Kabayan, Iteung dan yang lainnya.
Modifier
Merupakan sifat yang dimiliki oleh setiap atribut, method maupun kelas dalam java.
Modifier akses adalah modifier yang selalu digunakan. Modifier akses terdiri dari private,
default, protected, public. Selain itu ada pula modifier final, static, abstract, synchronized,
native, dan storage (transient, volatile).
Deklarasi Kelas
Dalam pemrograman java, kelas didefinisikan dengan kata kunci class. Untuk menyimpan
file, simpan dengan nama yang sama seperti nama kelas yang digunakan dalam file
tersebut. Kemudian didalam java ada aturan tersendiri untuk pemberian nama class, yaitu
harus diawali dengan huruf besar untuk membedakan antara class dan objek.
Berikut adalah bentuk umum dari pendeklarasian class pada java :
[modifier] class nama_class {
[deklarasi_atribut]
[deklarasi_konstruktor]
[deklarasi_metode]
}
Deklarasi Atribut
Atribut merupakan karateristik yang dimiliki oleh objek. Deklarasi atribut dibutuhkan
kelas untuk membentuk objek dan diletakkan didalam class body atau diluar method.
Berikut adalah pendeklarasian atribut pada java :
- Atribut tanpa inisialisasi :
[modifier] tipedata nama_atribut ;
-
Atribut dengan inisialisasi :
[modifier] tipedata nama_atribut = nilai;
Contoh pendeklarasian atribut :
private String nama;
String warna = “hijau”;
Pemrograman berorientasi objek – [email protected]
Page 2
Deklarasi Method
Merupakan tingkah laku yang dimiliki oleh objek. Method digunakan untuk
memodularisasi program pemisah satu tugas menjadi satu unit tersendiri. Didalam java
terdapat dua buah method, yaitu :
a. Fungsi. Merupakan method yang memiliki nilai balik jika method tersebut dipanggil.
Cara pembuatan sebuah fungsi adalah dengan cara menentukan nilai baliknya,
kemudian nama methodnya.
b. Prosedur. Merupakan method yang tidak mengembalikan nilai. Cara pembuatan
prosedur sama dengan fungsi, namun bedanya adalah pada prosedur menggunakan
kata kunci void.
Berikut adalah pendeklarasian method pada java :
-
Method fungsi tanpa parameter :
[modifier] tipe_nilaiKembali nama_method () {
Method body;
…
}
-
Method fungsi menggunakan parameter :
[modifier] tipe_nilaiKembali nama_method (parameter input) {
Method body;
…
}
-
Method prosedur tanpa parameter :
void nama_method () {
Method body;
…
}
-
Method prosedur menggunakan parameter :
void nama_method (parameter input) {
Method body;
…
}
Contoh pendeklarasian method :
-
Method fungsi tanpa parameter :
public int LuasPersegi() {
int luas = sisi * sisi;
return luas;
}
}
-
Method fungsi menggunakan parameter :
public int LuasPersegi(int sisi) {
Pemrograman berorientasi
return sisiobjek
* sisi;– [email protected]
}
Page 3
-
Method prosedur tanpa parameter :
void LuasPersegi() {
System.out.println(“Luas Persegi = ” + (sisi *
sisi));
}
-
Method prosedur menggunakan parameter :
void LuasPersegi(int s) {
sisi = s;
}
Accessor Method
Accessor method digunakan untuk membaca nilai variable pada class, baik berupa instance
maupun static.
Berikut penulisan accessor method :
get namaInstanceVariabel
Contoh pendeklarasian accessor method :
public class Persegi{
private int sisi;
public int getSisi(){
return sisi;
}
}
Mutator Method
Mutator method digunakan untuk memberi atau mengubah variable dalam class oleh
object lain.
Berikut penulisan mutator method :
set namaInstanceVariabel
Contoh pendeklarasian mutator method :
public class Persegi{
private int sisi;
public void setSisi(int temp){
sisi = temp;
}
}
Pemrograman berorientasi objek – [email protected]
Page 4
Object
Object adalah instance atau representasi nyata dari sebuah kelas. Sebuah kelas bisa
memiliki banyak object, setiap object mempunyai sifat yang sama persisi seperti yang
didefinisikan dalam kelas tersebut. Untuk pemberian nama sebuah object diawali dengan
huruf kecil.
Berikut adalah pendeklarasian object pada java :
nama_class nama_object = new nama_constructor();
nama_class nama_object;
nama_object = new nama_constructor();
Contoh pendeklarasian object :
Kotak k = new Kotak();
Kotak k;
k = new Kotak();
Kata kunci this
Java menyediakan kata kunci this yang merupakan referensi ke object yang sedang aktif.
This digunakan didalam method untuk mewakili nama kelas bersangkutan.
Berikut adalah pendeklarasian kata kunci this :
this.namaInstanceVariabel
Contoh kode java yang tidak menggunakan kata kunci this :
Class PersegiPanjang{
double panjang, lebar;
PersegiPanjang(double p, double l){
panjang = p;
lebar = l;
}
}
Contoh kode java yang menggunakan kata kunci this :
Class PersegiPanjang{
double panjang, lebar;
PersegiPanjang(double p, double l){
this.panjang = p;
this.lebar = l;
}
}
Pemrograman berorientasi objek – [email protected]
Page 5
Java tidak mengizinkan pendeklarasian variable dengan nama yang sama didalam satu blok
tertentu. Disisi lain, java memperbolehkan untuk mendeklarasikan nama parameter yang
sama dengan nama data yang terdapat didalam kelas. Namun nama variable local secara
otomatis akan menimpa nama data yang terdapat didalam kelas yang bersangkutan. Untuk
menghindari penimpaan variable tersebut, maka digunakanlah kata kunci this. Akan tetapi
programmer akan menghindari penggunaan kata kunci this karena lebih membingungkan,
sehingga untuk kesamaan nama parameter dan data didalam kelas juga akan dihindari.
Pemrograman berorientasi objek – [email protected]
Page 6
Overloading Method, Constructor Dan Access Modifier
Overloading Method
Dalam satu class dapat mendefinisikan lebih dari satu method dengan nama yang sama
tetapi parameter yang dideklarasikan harus berbeda baik itu jumlahnya ataupun tipe
parameternya.
Jenis-jenis method overloading:
1. Jumlah parameter beda, tipe beda
2. Jumlah parameter sama, tipe beda
3. Jumlah parameter beda, tipe sama
Syarat-syarat overloading:
1. Dalam sebuah kelas diperbolehkan lebih dari satu method dengan nama yang sama
dengn catatan method dapat dibedakan berdasarkan banyaknya parameter atau tipe
data parameter.
2. Overloading tidak bisa dilakukan dengan membedakan nilai kembaliannya.
3. Overloading juga bisa dilakukan pada sub kelasnya.
Contoh method yang mengalami overloading:
Method yang di Overload :
myMethod(String s, int i, float f)
Method yang mengOverload (LEGAL)
Jumlah arugument berbeda
myMethod()
Jumlah arugument berbeda
myMethod(int i)
myMethod(String s1, String s2, String s3)
myMethod(String s, float f, int i)
Jumlah arugument berbeda,
tapi urut-urutan tipe data
berbeda
Jumlah arugument berbeda,
tapi urut-urutan tipe data
berbeda
Method yang mengoverload (ILEGAL)
myMethod(String s, int i, float f)
myMethod(String x, int y, float z)
Jumlah argument sama, uruturutan tipe data sama.
Jumlah argument sama, uruturutan tipe data sama.
Yang haru diperhatikan dari
contoh ini adalah, nama
variabel yang berbada tidak
lantas menyebabkan argument
list menjadi berbeda.
Pemrograman berorientasi objek – [email protected]
Page 7
Overloading method terjadi pada objek yang sama. Ketika overloading method dipanggil,
Java mencari kesamaan antara argumen yang digunakan untuk memanggil method dan
parameter dari method. tetapi, kesamaan ini tidak mutlak karena pada Java ada
otomatisasi konversi tipe yang berbeda.
Contoh overloading method secara keseluruhan pada program java :
class OverloadMetode
{
//konversi tujuan bertipe integer
void test(int a)
{
System.out.println("Hasil konversi byte ke integer :"+a);
}
}
class OverloadKonversi
{
public static void main(String args[])
{
OverloadMetode ob = new OverloadMetode();
//variabel asal yang akan dikonversi bertipe byte
byte i=88;
ob.test(i);//memanggil test(integer)
}
}
Konversi otomatis pada java seperti program diatas, hanya dapat dilakukan jika kedua
aturan ini dipenuhi:
1.
Kedua tipe data (data asal dan tujuan) memiliki kompatibilitas(compatible).
2.
Tipe tujuan mempunyai range lebih besar daripada tipe asal.
Selain itu Java juga mengerjakan konversi secara otomatis ketika menyimpan konstanta
integer literal menjadi variable bertipe byte, short, atau long.
Deklarasi Constructor
Constructor adalah method khusus yang didefinisikan didalam kelas dan akan dipanggil
secara otomatis setiap kali terjadi instansiasi objek. Jika dalam suatu kelas kontruktor tidak
didefinisikan, maka secara otomatis Java akan membuat sebuah constructor, yaitu null
constructor. Constructor tersebut dinamakan sebagai default constructor.
Namun jika kita mendefiniskan sebuah constructor baru untuk kelas yang dibuat,
maka default constructor sudah tidak berfugsi atau tidak digunakan lagi.
Ciri-ciri default constructor:
3.
4.
5.
Dibuat secara otomatis saat class dikompilasi.
Dibuat secara otomatis jika class yang dikompilasi tidak mempunyai constructor
sama sekali.
Tidak memiliki parameter formal.
Contoh default constructor :
public StudentRecord()
Pemrograman berorientasi objek – [email protected]
Page 8
{
//area penulisan kode
}
Sifat-sifat constructor:
1.
Nama constructor sama dengan nama class
2.
Tidak memiliki tipe data termasuk void
3.
Tidak memiliki return value.
4.
Dieksekusi ketika terjadi instansiasi.
5.
Dapat mempunyai akses modifier, biasanya public namun dapat berupa private
6.
Tidak dapat dipanggil secara langsung, namun harus dipanggil dengan
menggunakan operator new pada pembentukan sebuah class.
Berikut cara pendeklarasian constructor :
-
Pendeklarasian tanpa menggunakan parameter
[modifier] nama_class ()
{
//statement
}
-
Pendeklarasian menggunakan parameter
[modifier] nama_class (parameter)
{
//statement
}
Overloading Constructor
Constructor dapat melakukan overloading. overloading constructor terjadi pada objek yang
berbeda-beda, nilai argument berbeda, sehingga method bisa lebih dari satu.
Berikut contoh overloading pada constructor:
class Kotak {
double panjang;
double lebar;
double tinggi;
// Mendefinisikan constructor dengan satu parameter
Kotak(double sisi) {
panjang = lebar = tinggi = sisi;
}
// Mendefinisikan constructor dengan tiga parameter
Kotak(double p, double l, double t) {
panjang = p;
lebar = l;
tinggi = t;
}
double hitungVolume() {
return (panjang * lebar * tinggi);
}
Pemrograman berorientasi objek – [email protected]
Page 9
}
class Over {
public static void main(String[] args) {
Kotak k1, k2;
k1 = new Kotak(10);
k2 = new Kotak(4, 3, 2);
//Menampilkan volume dari masing-masing objek Kotak
System.out.println("Volume k1 = " + k1.hitungVolume());
System.out.println("Volume k2 = " + k2.hitungVolume());
}
}
Pada kode program diatas didefinisikan ada dua buah constructor dengan nama Kotak.
Constructor pertama memiliki satu buah parameter dimana parameter sisi sama dengan
nilai panjang, lebar dan tinggi. Constructor kedua memiliki tiga buah parameter dengan
nilai panjang, lebar dan tinggi yang berbeda.
Access Modifier
Berikut adalah jenis-jenis access modifier :
No
.
Access Modifier
Pada class dan Interface
1.
Default
Dapat diakses oleh yang
sepaket.
2.
Public
Dapat diakses dimanapun
3.
Protected
Tidak bisa diterapkan
4.
private
Tidak bisa diterapkan
Pada Method & Variable
Diwarisi oleh subkelas dipaket
yang sama, dapat diakses oleh
method-method yang sepaket.
Diwarisi oleh subkelasnya,
dapat diakses dimanapun.
Diwarisi oleh subkelasnya,
dapat diakses oleh methodmethod yang sepaket.
Tidak dapat diakses
dimanapun kecuali oleh
method-method yang ada
dalam kelas itu sendiri.
Inheritance, Polimorfisme, Interface
Pemrograman berorientasi objek – [email protected]
Page 10
Inheritance
Inheritance dapat menciptakan kelas umum yang mendefinisikan sifat/watak umum. Kelas
ini kemudian dapat diwarisi oleh kelas-kelas lain, yang merupakan kelas-kelas yang lebih
spesifik, dengan menambahkan hal-hal unik. Dalam terminologi java, sebuah kelas yang
diwarisi dikenal dengan superkelas. Kelas yang mewarisi dikenal dengan subkelas. Oleh
karena itu, subkelas merupakan versi terspesialisasi dari superkelas. Subkelas mewarisi
semua variabel dan metode instans yang didefinisikan oleh superkelas. Pada konsep
Inheritance ada beberapa istilah yang perlu diketahui, yaitu :
 Sub class, digunakan untuk menunjukkan class anak atau turunan secara hirarkis dari
super class
 Super class, digunakan untuk menunjukkan class induk secara hirarkis dari sub class
(class anak)
 Extends, digunakan untuk menunjukkan, bahwa suatu class merupakan turunan dari
class lain. Misal A extends B, berarti class A adalah turunan dari class B. A merupakan
subclass, sedangkan B merupakan superclass.
 Super, digunakan untuk memanggil konstruktor dari super class atau memanggil
variable yang mengacu pada super class. Misal super(x,y,z), berarti atribut x,y,z diambil
dari atribut pada class induk
Cara Inheritance Kelas
Pendeklarasian kelas turunan :
Class KelasTurunan extends KelasDasar{
TubuhKelas
}
Pemanggilan Constructor Super Kelas
Superkelas tidak mengandung konstruktor. Untuk itu digunakan kata kunci super.
Super (nama, nim)
Pemanggilan konstruktor kelas dasar harus memenuhi persyaratan berikut :
 Pemanggilan dengan super seperti di atas hanya bisa dilakukan pada konstruktor.
 Pemanggilan konstruktor superkelas harus berkedudukan sebagai pernyataan
pertama dalam konstruktor.
Overriding
Overriding adalah suatu cara untuk mendefinisikan ulang method yang ada pada class
induk apabila class anak menginginkan adanya informasi yang lain. Overriding dilakukan
dengan cara menulis ulang method yang ada pada class induk dengan syarat bahwa nama
dan parameter fungsi tersebut harus sama (tidak boleh diubah). Meskipun fungsi telah
ditulis ulang oleh class anak, fungsi yang asli pada class induk masih dapat dipanggil di
class anak dengan menggunakan class super.
Overloading
Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih) yang memiliki nama
yang sama. Pada bahasan overloading dikenal istilah signature. Signature sebuah fungsi
adalah parameter lengkap dengan tipe datanya yang terdapat dalam fungsi tersebut.Misal
terdapat fungsi:
public int jumlahMahasiswa (int laki2, int perempuan, String kelas);
Pemrograman berorientasi objek – [email protected]
Page 11
maka signature dari fungsi tersebut adalah (int, int, String). Suatu fungsi dikatakan
dioverloadmanakala terdapat beberapa fungsi dengan nama yang sama namun memiliki
signature yang berbeda-beda, sebagai contoh
public void infoMahasiswa (int laki2, int perempuan,Stringkelas)
{
...
}
public void infoMahasiswa (int mhsLama, int mhsBaru, int
mhsCuti, int angkatan)
{
...
}
Contoh Kasus Inheritance
Menunjukkan hirarki kelas dosen., memiliki turunan berupa kelas rektor, kelas dekan dan
kelas kalab. class induk (class dosen) memiliki atribut nama, nik dan jurusan. Method yang
dimiliki oleh class dosen adalah view(). Class turunan dari class dosen ada tiga class. Pada
class rektor, terdapat tambahan atribut berupa th_mulai dan jabatan_ke, serta method
viewRektor(). Pada class dekan terdapat tambahan atribut fakultas, dan method
viewDekan(). Pada class kalab terdapat tambahan atribut laboratorium, dan method
viewKalab().
public
Rektor
}
}}
}}
Pemrograman berorientasi objek – [email protected]
Page 12
Kalab
private
super (namaX,nikX,jurX);
public void viewkalab() {
int
Pemrograman berorientasi objek – [email protected]
Page 13
Polimorfisme
Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda melalui satu cara
yang sama. Apabila mempunyai objek yang bertipe superkelas, variable objek ini bisa diisi
dengan objek superkelas ataupun objek subkelas tanpa perlu melakukan perubahan tipe.
Pada polimorfisme kondisi yang harus terpenuhi supaya fungsi dapat dijalankan yaitu:
1. Semua kelas diturunkan dari suatu kelas yang sama
2. Method yang dipanggil harus melalui variabel dari super class.
3. Method yang dipanggil juga harus merupakan method yang ada pada super class.
4. Signature method harus sama baik yang ada pada super class maupun di subclass.
5. Method access attribute pada subclass tidak boleh lebih terbatas daripada yang ada
pada super class.
Pemrograman berorientasi objek – [email protected]
Page 14
Polimorfisme untuk alat-alat transportasi
Pada program utama dilakukan pemanggilan terhadap ketiga class tersebut, masingmasing dengan parameter yang bersesuaian
Interface
Interface adalah class yang hanya mengandung deklarasi method tanpa memiliki
implementasi dan semua property yang dimilikinya bersifat final. Interface mirip dengan
class abstrak, tetapi interface tidak terikat dengan class hierarki.
Berikut ini adalah aturan yang harus kita ingat tentang pendeklarasian interface:
1. Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak
menggunakan modifier maka interface tersebut hanya dapat diakses dalam package
yang sama.
Pemrograman berorientasi objek – [email protected]
Page 15
2. Semua variabel yang dideklarasikan dalam interface secara otomatis adalah static
final. Karena itu waktu pendeklarasian harus diberikan nilai.
3. Semua method adalah abstrak. Bedanya dengan class abstrak adalah kita tidak perlu
menuliskan keyword abstract pada saat mendeklarasikan method dalam interface.
4. Kita dapat mengimplementasikan lebih dari satu interface (multiple inheritance)
dengan memisahkan nama dari setiap interface dengan tanda koma.
5. Dapat terjadi saat kita mengimplementasikan lebih dari satu interface ternyata
interface – interface tersebut memiliki method yang sama. Dalam hal ini method
yang akan diimplementasi adalah method yang berada pada posisi pertama.
6. Semua method yang diimplemetasikan harus public.
7. Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka
class tersebut harus dideklarasikan sebagai abstract class.
Untuk lebih jelasnya kita akan mengambil contoh pada dunia nyata. Misalnya pembuat
remote control dan pembuat TV. Seorang pembuat remote control tentunya tidak perlu
tahu merk TV dan siapa yang membuat TV tersebut untuk dikontrol menggunakan remote
control tersebut. Yang perlu diketahui adalah Interface apa yang digunakan oleh TV
tersebut agar dapat dikontrol. Demikian pulu si pembuat TV tidak perlu tahu bagaimana
remote control tersebut dibuat. Pembuat TV hanya perlu tahu interface apa yang akan
digunakan agar Tvnya dapat dikontrol oleh remote control tersebut. Perhatikan
implementasinya dalam kode berikut ini.
public class TVSamsung implements Control{
String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada TV Samsung ke "+ this.channel[channel]);
}
public void perbesarVolume(int intensitas) {
System.out.println("Perbesar volume pada TV Samsung sebanyak "+ intensitas);
}
public void perkecilVolume(int intensitas) {
System.out.println("Perkecil volume pada TV Samsung sebanyak "+ intensitas);
}
}
public class RemoteControl {
public void kirimPerintahKeTv(int aksi,Control tv,int tombol){
switch(aksi){
case 1:
tv.pindahChannel(tombol);
break;
case 2:
tv.perbesarVolume(tombol);
break;
case 3:
tv.perkecilVolume(tombol);
break;
}
}
}
public class TestRemoteControl {
public static void main(String[] args){
TVPolitron tvp = new TVPolitron();
TVSamsung tvs = new TVSamsung();
RemoteControl rc = new RemoteControl();
rc.kirimPerintahKeTv(1,tvp,1);
}
}
Pemrograman berorientasi objek – [email protected]
Page 16
public interface Control {
public void pindahChannel(int channel);
public void perbesarVolume(int intensitas);
public void perkecilVolume(int intensitas);
}
public class TVPolitron implements Control{
String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada TV Politron ke "+ this.channel[channel]);
}
public void perbesarVolume(int intensitas) {
System.out.println("Perbesar volume pada TV Politron sebanyak "+ intensitas);
}
public void perkecilVolume(int intensitas) {
System.out.println("Perkecil volume pada TV Politron sebanyak "+ intensitas);
}
}
Pemrograman berorientasi objek – [email protected]
Page 17
Download