Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 1
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)
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 2 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 variable-variabel 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 :
- Atribut dengan inisialisasi :
Contoh pendeklarasian atribut :
[modifier] tipedata nama_atribut ;
[modifier] tipedata nama_atribut = nilai;
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 3
[modifier] tipe_nilaiKembali nama_method (parameter input) { Method body;
… }
void nama_method (parameter input) { Method body;
… }
public int LuasPersegi() { int luas = sisi * sisi; return luas;
}
}
public int LuasPersegi(int sisi) { return sisi * sisi; }
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 :
- Method fungsi menggunakan parameter :
- Method prosedur tanpa parameter :
- Method prosedur menggunakan parameter :
Contoh pendeklarasian method : - Method fungsi tanpa parameter :
- Method fungsi menggunakan parameter :
[modifier] tipe_nilaiKembali nama_method () { Method body;
… }
void nama_method () { Method body; …
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 4
void LuasPersegi() {
System.out.println(“Luas Persegi = ” + (sisi * sisi));
}
void LuasPersegi(int s) { sisi = s;
}
get namaInstanceVariabel
public class Persegi{ private int sisi;
public int getSisi(){ return sisi;
} }
set namaInstanceVariabel
public class Persegi{ private int sisi;
public void setSisi(int temp){ sisi = temp;
} }
- Method prosedur tanpa parameter :
- Method prosedur menggunakan parameter :
Accessor Method
Accessor method digunakan untuk membaca nilai variable pada class, baik berupa instance maupun static.
Berikut penulisan accessor method :
Contoh pendeklarasian accessor method :
Mutator Method
Mutator method digunakan untuk memberi atau mengubah variable dalam class oleh object lain.
Berikut penulisan mutator method :
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 5
nama_class nama_object;
nama_object = new nama_constructor();
Kotak k = new Kotak();
Kotak k;
k = new Kotak();
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 :
Contoh pendeklarasian object :
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 :
Contoh kode java yang tidak menggunakan kata kunci this :
Contoh kode java yang menggunakan kata kunci this :
Class PersegiPanjang{
double panjang, lebar; PersegiPanjang(double p, double l){
this.panjang = p; this.lebar = l; }
}
nama_class nama_object = new nama_constructor();
Class PersegiPanjang{
double panjang, lebar; PersegiPanjang(double p, double l){
panjang = p; lebar = l; }
}
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 7
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)
myMethod(String s1, String s2, String s3)
Jumlah arugument berbeda, tapi urut-urutan tipe data berbeda
myMethod(String s, float f, int i)
Jumlah arugument berbeda, tapi urut-urutan tipe data berbeda
Method yang mengoverload (ILEGAL)
myMethod(String s, int i, float f)
Jumlah argument sama, urut-urutan tipe data sama.
myMethod(String x, int y, float z)
Jumlah argument sama, urut-urutan tipe data sama.
Yang haru diperhatikan dari contoh ini adalah, nama variabel yang berbada tidak lantas menyebabkan argument list menjadi berbeda.
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 8 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. Dibuat secara otomatis saat class dikompilasi.
4. Dibuat secara otomatis jika class yang dikompilasi tidak mempunyai constructor sama sekali.
5. Tidak memiliki parameter formal.
Contoh default constructor :
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 9
{
//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() {
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 10 }
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 Pada Method & Variable
1. Default Dapat diakses oleh yang sepaket.
Diwarisi oleh subkelas dipaket yang sama, dapat diakses oleh method-method yang sepaket. 2. Public Dapat diakses dimanapun Diwarisi oleh subkelasnya, dapat diakses dimanapun.
3. Protected Tidak bisa diterapkan Diwarisi oleh subkelasnya, dapat diakses oleh method-method yang sepaket.
4. private Tidak bisa diterapkan
Tidak dapat diakses dimanapun kecuali oleh method-method yang ada dalam kelas itu sendiri.
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 11 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:
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 12 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
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 void infoMahasiswa (int laki2, int perempuan,Stringkelas) {
... }
public void infoMahasiswa (int mhsLama, int mhsBaru, int mhsCuti, int angkatan)
{
... }
}}
}} Rektor
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 13 Kalab
private
public void viewkalab() { super (namaX,nikX,jurX);
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 14 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
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 15 Polimorfisme untuk alat-alat transportasi
Pada program utama dilakukan pemanggilan terhadap ketiga class tersebut, masing-masing 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
Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 16
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 – efazriyati@staff.gunadarma.ac.id Page 17
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); }