OOP
OOP (object oriented programming) merupakan suatu kata yang sudah tidah asing lagi dalam dunia pemrograman. Ada beberapa kelebihan menggunakan pemrograman berorientasi objek, diantaranya adalah :
1. memudahkan programmer dalam menulis program
2. Mempercepat penulisan programmer dalam menulis program
3. Mempermudah pemeliharaan program
4. Extensibility dan reusability
Setiap permasalahan yang diselesaikan dengan menggunakan OOP akan diimplementasikan dalam bentuk objek. Biasanya permasalahan yang ada merupakan permasalahan yang ada dala dunia nyata yang kemudian diimplementasikan dalam bentuk code-code tertentu dan ditulis dengan bahasa pemrograman tertentu yang mendukung pemrograman berorientasi objek, seperti Java, C++,Vb.net, dan bahasa pemrograman lainnya.
Ada beberapa point penting yang harus diperhatikan dala konsep pemrograman berorientasi objek, diantaranya:
a. Kelas
b. Objek
c. Atribut
d. Method
e. Instansiasi
f. Inheritance
g. Enkapsulasi
Berikut ini akan kita bahas satu demi satu point-point penting dari konsep Pemrograman Beorientasi Objek (OOP). Disini saya akan menggunakan Bahasa pemrograman Java untuk mengimplementasikan konsep OOP.
a. Kelas
Kelas dapat kita ibaratkan sebagai suatu wadah, kumpulan, atau himpunan. Biasanya kelas akan memuat objek-objek yang memiliki sifat dan perilaku yang sama. Kelas dapat juga disebut sebagai suatu cetakan atau template. Misalkan terdapat sebuah kelas bernama PK_Deplu, maka dalam kelas PK_Deplu tersebut akan memuat sekumpulan objek yang memiliki sifat dan perilaku yang sama.
Dalam Bahasa Java, sebuah kelas dideklarasikan dengan menggunakan keyword Class.
Contoh implementasi deklarasi class dalam Java:
Class PK_Deplu{ //deklarasi class
//body class
}
b. Objek
Objek dapat kita ibaratkan sebagai anggota dari suatu kelas. Dalam satu kelas bisa terdapat lebih dari satu objek. Objek-objek tersebut dibuat dari template yang sama (dalam hal in template berarti class) . Misalkan dari kelas PK_Deplu bisa dibuat 3 objek. Setiap objek yang dibuat dari class yang sama akan memiliki sifat dan perilaku yang sama. Contoh deklarasi objek dengan menggunakan Java yaitu:
PK_Deplu dewo=new PK_Deplu;
PK_Deplu deni=new PK_Deplu;
PK_Deplu ayi=new PK_Deplu;
Pada contoh di atas, dari Kelas PK_Deplu dibuat 3 buah objek yaitu dewo, deni, dan ayi. Untuk semua objek dari class PK_Deplu tersebut akan memiliki sifat dan perilaku yang sama, karena ketiganya dibuat dari template yang sama, yaitu dari class PK_Deplu.
c. Atribut
Atribut adalah sesuatu yang dimiliki oleh objek. Setiap objek yang dibuat dari kelas yang sama akan memiliki atribut yang sama. Pada implementasi program, sebuah atribut ditulis dalam bentuk data/ variable. Misalkan dari Kelas PK_Deplu dideklarasikan atribut NIP, Nama, dan Kelompok. Deklarasi pada java:
double NIP;
String Nama;
int Kelompok;
Maka untuk setiap objek dewo, deni, dan ayi, ketiganya akan memiliki atribut yang sama, tapi setiap atribut bisa di-assign dengan nilai yang berbeda. Contoh deklarasi atribut dengan menggunakan Java yaitu:
//assign nilai atribut untuk objek dewo
dewo.NIP = 22062008;
dewo.Nama=”Dedy Wibowo”;
dewo.Kelompok=1;
//assign nilai atribut untuk objek deni
deni.NIP = 65335297;
deni.Nama=”Deni Wijaya”;
deni.Kelompok=2;
//assign nilai atribut untuk objek ayi
ayi.NIP = 12346527;
ayi.Nama=”Ayi Dianitasari”;
ayi.Kelompok=3;
Dari contoh deklarasi di atas, dapat kita lihat bahwa setiap objek akan memiliki atribut yang sama, yaitu NIP, Nama, dan Kelompok. Tetapi, masing-masing atribut dari setiap objek bisa diberi nilai yang berbeda.
d. Method
Method adalah sesuatu yang dapat dilakukan oleh objek. Method dalam implementasi program ditulis dalam bentuk fungsi. Misalkan pada kelas PK_Deplu dideklarasikan method kuliah, tidur, makan. Maka untuk setiap objek pada kelas PK_Deplu bisa melakuka makan, kuliah, dan tidur. Contoh implemtasinya adalah:
//deklarasi method kuliah
public void kuliah(){
System.out.println(“sedang kuliah…”);
}
//deklarasi method tidur
public void tidur(){
System.out.println(“sedang tidur…”);
}
//deklarasi method makan
public void makan(){
System.out.println(“sedang makan…”);
}
//pemanggilan method oleh objek dewo
dewo.kuliah();
dewo.tidur();
dewo.makan();
//pemanggilan method oleh objek deni
deni.kuliah();
deni.tidur();
deni.makan();
//pemanggilan method oleh objek ayi
ayi.kuliah();
ayi.tidur();
ayi.makan();
Dari contoh di atas dapat kita lihat bahwa untuk setiap objek pada kelas PK_Deplu bisa memanggil method yang dideklarasikan pada kelas PK_Deplu.
e. Instansiasi
Instansiasi adalah proses pembuatan objek dari kelas yang sudah ada. Di bagian sebelumnya sudah dibahas mengenai pembuatan objek dari kelas PK_Deplu, yaitu:
PK_Deplu dewo=new PK_Deplu;
PK_Deplu deni=new PK_Deplu;
PK_Deplu ayi=new PK_Deplu;
Deklarasi tersebut merupakan contoh dari deklarasi untuk melakukan instansiasi. Untuk membuat objek dari suatu class dalam Java digunakan keyword new. Jadi, dalam satu kelas bisa dilakukan lebih dari 1 instansiasi.
f. Inheritance
Inheritance merupakan konsep pewarisan pada OOP. Pada OOP kelas yang satu bisa dihubungkan dengan kelas lainnya. Dimana kelas yang satu bisa dibuat menjadi turunan dari kelas lainnya. Kelas yang satu disebut sebagai parent, dan kelas lainnya disebut sebagai child. Berarti dalam hal ini kelas parent menurunkan atribut dan methodnya ke kelas child.
Ada 3 tipe akses yang bisa diturunkan dari kelas parent ke kelas child, yaitu:
a. Public: data dan method bisa diakses oleh semua kelas, baik itu kelas parent, child, ataupun kelas lainnya.
b. Private: data dan method hanya bisa diakses oleh kelas itu sendiri.
c. Protected: data dan method bisa diakses oleh kelas parent dan kelas child
Misalkan dari kelas PK_Deplu yang sudah kita buat akan dibuat kelas turunannya, bernama kelas PK_kelompok1. Untuk membuat suatu kelas merupakan turunan dari class parent, implementasi pada java menggunakan keyword extends. Contoh:
class PK_Kelompok1 extends PK_Deplu{ //inheritance
//atribut pada kelas PK_Kelompok1
int umur;
//method pada kelas PK_Kelompok1
public void setumur(int a){}
public double getumur(){} //
}
Dari deklarasi di atas, kelas PK_Kelompok1 merupakan turunan dari kelas PK_Deplu. Perhatikan terdapat kata kunci extends pada deklarasi di atas. Maka, setiap objek yang diinstansiasi dari kelas PK_Kelompok1 akan memiliki atribut umur (atribut asli), atribut NIP,Nama, dan Kelompok (atribut turunan dari kelas PK_Deplu). Dengan catatan atribut dan method yang dideklarasikan pada kelas parent harus diberi tipe akses public atau protected agar dapat diturunkan ke kelas child. Bila digabungkan menjadi:
Class PK_Deplu{ //deklarasi class
//deklarasi property dengan tipe akses protected
protected double NIP;
protected String Nama;
protected int Kelompok;
//deklarasi method kuliah
public void kuliah(){
System.out.println(“sedang kuliah…”);
}
//deklarasi method tidur
public void tidur(){
System.out.println(“sedang tidur…”);
}
//deklarasi method makan
public void makan(){
System.out.println(“sedang makan…”);
}
}
class PK_Kelompok1 extends PK_Deplu{ //inheritance
//atribut pada kelas PK_Kelompok1
int umur;
//method pada kelas PK_Kelompok1
public void setumur(int a){}
public double getumur(){} //
}
public static void main(String[] args) {
//instansiasi objek PK_Deplu
PK_Deplu dewo=new PK_Deplu;
//assign nilai atribut
dewo.NIP = 22062008;
dewo.Nama=”Dedy Wibowo”;
dewo.Kelompok=1;
//pemanggilan method
Dewo.kuliah();
//instansiasi objek PK_Kelompok1
PK_Kelompok1 heni = new PK_Kelompok1;
//assign nilai atribut dari class PK_Deplu
heni.umur=22;
//atribut dari class PK_Kelompok1
heni.Nama = “Heni Rahmini Handayani”;
}
Contoh Kasus
Kasus 1: Lingkaran dan kerucut
- Source Code
public class Lingkaran {
public double jari;
public void setJari(double a){
this.jari=a;
}
public double getJari(){
return jari;
}
public double HitungLuas(){
return 3.14*jari*jari;
}
/** Creates a new instance of Lingkaran */
public Lingkaran() {
}
}
public class Kerucut extends Lingkaran {
double tinggi;
public void setTinggi(double a){
this.tinggi=a;
}
public double gettinggi(){
return tinggi;
}
public double HitungVolume(){
return (3.14*HitungLuas()*tinggi)/3;
}
/** Creates a new instance of Kerucut */
public Kerucut() {
}
}
public static void main(String[] args) {
// TODO code application logic here
Lingkaran l=new Lingkaran();
Kerucut k=new Kerucut();
k.setJari(5);
k.setTinggi(9);
double luas=k.HitungLuas();
double volume=k.HitungVolume();
System.out.println("Luas Lingkaran adalah : "+luas);
System.out.println("Volume Kerucut adalah :"+volume);
}
- Output program:
Luas Lingkaran adalah : 78.5
Volume Kerucut adalah :739.4699999999999
Kasus 2: pajak
- Source code
public class Pajak {
protected double Pendapatan;
String Provinsi;
public double HitungPajak(){
double PajakUmum=0;
if(Pendapatan <>
PajakUmum=Pendapatan*0.04;
}
else{
PajakUmum=Pendapatan*0.05;
}
return PajakUmum;
}
/** Creates a new instance of Pajak */
public Pajak() {
}
}
public class PajakJabar extends Pajak {
public double hitungPajakDaerah(double PajakUmum){
double PajakDaerah=PajakUmum-200;
return PajakDaerah;
}
/** Creates a new instance of PajakJabar */
public PajakJabar() {
}
}
public static void main(String[] args) {
// TODO code application logic here
Pajak p=new Pajak(); //membuat objek
//memberikan nilai untuk variabel pendapatan
p.Pendapatan=1000000;
//memberikan nilai untuk variabel provinsi
p.Provinsi="Jawa Barat";
//menghitung pajak
double PajakAnda=p.HitungPajak();
PajakJabar p1=new PajakJabar();
Double PajakAndaDaerah=p1.hitungPajakDaerah(PajakAnda);
//Menampilkan Hasil
System.out.println("Pajak Anda Adalah :Rp. "+PajakAnda);
System.out.println("Provinsi Anda Adalah : Rp."+p.Provinsi);
System.out.println("Pajak Daerah Anda Adalah : Rp. "+PajakAndaDaerah);
}
- Output pogram
Pajak Anda Adalah :Rp. 50000.0
Provinsi Anda Adalah : Rp.Jawa Barat
Pajak Daerah Anda Adalah : Rp. 49800.0
-------------------- all design by --------------------------------
---- Dedy Wibowo featuring Heni Rahmini Handayani ----