
RINGKASAN MATERI OOP II
1.
Konsep OOP
Desain berorientasi object
adalah sebuah teknik yang memfokuskan desain pada object dan class berdasarkan
pada skenario dunia nyata. Pemrograman berorientasi objek diciptakan untuk
mempermudah pengembangan program dengan cara mengikuti model yang telah ada
dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan
nyata, segala bagian (entiti) dari suatu permasalahan adalah objek. Hal ini
menegaskan keadaan (state), behaviour dan interaksi dari objek. Objek-objek ini
kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil.
Sebagai contoh, tengoklah sebuah mobil. Mobil adalah sebuah objek dalam
kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih
kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan
gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara
objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat
dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek
tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain. Selain
itu juga menyediakan manfaat akan kebebasan pengembangan, meningkatkan
kualitas, mempermudah pemeliharaan, mempertinggi kemampuan dalam modifikasi dan
meningkatkan penggunaan kembali software.
Konsep-konsep pemrograman
berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh
bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam
bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara
penerapan konsep-konsep tersebut dalam masing-masing bahasa.
Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing
konsep. Kelas merupakan inti dari pemograman java. Java itu sendiri merupakan
pemograman yang mendukung dan mengimplementasikan konsep pemograman
berorientasi objek sepenuhnya.
2.
Objek
Baik dalam dunia nyata
atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state
dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil
memiliki state warna, model, tahun pembuatan, kondisi, dll. Sedang behaviour
adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok,
membunyikan klakson, dll. Objek menyimpan statenya dalam satu atau lebih
variabel, dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan
di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk
dengan variabel-variabel dan metode-metode yang berhubungan dengan variabel
tersebut.
Dengan karakteristik tersebut, kita
dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek
dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke
dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek
Event, yaitu objek untuk
mewakili peristiwa klik atau tombol ditekan.
Sebuah objek yang dibentuk
dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek
tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode dari instans
ini disebut variabel instans dan metode instans. Setiap instans
menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans
bisa berbeda.
3.
Kelas
Kelas adalah semacam
cetakan, atau template, untuk membuat objek. Ibaratkan sebuah rancangan rumah
yang digunakan untuk membangun ratusan rumah. Rumah yang dibangun tersebut
adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan karena semua
objek rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat
dibuatkan semacam blueprintnya. Tetapi objek-objek yang dibangun tetap akan
memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah
program, atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita
definisikan kembali menjadi sebuah blueprint, atau prototipe, yang
mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.
Sebagai contoh, misalkan
kita ingin membuat kelas Rumah, maka kita harus membuat sebuah kelas yang mendefinisikan
semua variabel yang dimiliki objek dari kelas tersebut. Selain itu, kelas
tersebut juga harus mendeklarasikan metode-metode yang dimiliki objek dari
kelas dan juga membuat implementasi dari metode tersebut. Dengan adanya kelas
ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu
jenis yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk
objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan
memiliki salinan masing-masing untuk setiap variabel instans.
Variabel kelas sebenarnya
sama dengan variabel instans. Bedanya adalah, setiap objek berbagi satu dan
hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel
instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap
objek Rumah terdiri atas 2 lantai.
Maka informasi ini cukup disimpan satu kali, karena nilainya tidak berbeda
untuk semua objek. Lebih jauh, bila ada satu objek yang mengubah nilai dari
variabel kelas, maka semua objek sejenis lainnya akan mengikuti perubahan itu.
Di samping variabel, terdapat juga metode kelas. langsung dipanggil
melalui kelas dan bukan dari instans kelas tersebut.
4.
Method
Method merupakan suatu
operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method
didefinisikan pada class akan dipanggil melalui object. Dengan kata lain method
juga dikenal sebagai fungsi atau prosedur.
Pemanggilan method dalam
suatu kelas dilakukan dengan menuliskan objek pemiliknya dan diikuti oleh
operator titik (.) beserta nama method yang akan di eksekusi.

Pewarisan adalah salah
satu cirri pemograman berorientasi objek, yang menyatakan suatu kelas dapat
diturunkan lagi menjadi kelas-kelas baru yang lainnya sehingga dapat membentuk
sebuah hiraki. Kelas yang merupakan kelas turunan ini bisa disebut dengan kelas
anak (subclass) dan kelas yang menjadi dasar penurunan disebut kelas orang tua
(superclass).
a.
Dasar Pewarisan (Superclass dan Subclass)
Pemograman java
mengizinkan kita untuk mendefinisikan suatu kelas yang bersifat generic.
Selanjutnya kelas tersebut diturunkan lagi menjadi kelas baru yang bersifat
lebih spesifik. Adapun kelas baru yang hasil turunan disebut subclass. Pada
proses penurunan kelas ini kelas turunan akan mewarisi sifat-sifat yang
terdapat pada kelas induknya, selanjutnya, kelas turunan tersebut dapat
memiliki sifat-sifat spesifik yang sebelumnya tidak dimiliki oleh kelas induk.
Sebagai contoh, yakni terdapat kelas binatang, kelas tersebut selanjutnya akan
diturunkan lagi menjadi kelas-kelas baru yang lebih spesifik tanpa meninggalkan
sifat-sifat dari kelas binatang, menjadi kelas: Herbivora (binatang pemakan
tumbuhan) dan Karnivora (binatang pemakan tumbuhan). Kelas turunan yang lain
akan diturunkan lagi menjadi kelas turunan yang lainnya seperti kelas herbivora
bisa diturunkan lagi menjadi kelas Kambing dan Kerbau, sedangkan untuk kelas
Karnivora dapat diturunkan lagi menjadi Anjing, Harimau, Singa dsb.
( ) kelas binatang adalah superclass
dari kelas herbivoran dan karnivora itu sendiri berperan sebagai subclass.
kemudian dari superclass tersebut terdapat subclass nya yakni pada superclass
Herbivora dapat menjadi Subclass dari kelas Kambinga dan Kerbau. Begitupun pada
superclass Karnivora dapat menjadi subclass dari kelas Harimau dan Kucing.
Pada pemograman java
menyediakan kata kunci extends yang digunakan untuk proses penurunan terhadap
suatu kelas. Bentuk umum dari penggunaan kata kunci tersebut adalah sebagai
berikut:
Class nama-subclass extends
nama-superclass{
// badan kelas
}
Ketika kita sedang membentuk sebuah
hiraki kelas constructor yang akan dipanggil pertama kali dalam setiap
pembentukan objek adalah constructor dari kelas induk paling dasar. Sebagai
contoh kita memiliki induk dengan nama A dan diturunkan lagi menjadi kelas C,
pada situasi saat ini setiap kita membentuk objek dari kelas C, maka urutan
yang dipanggil adalah contructor dari kelas A disusul dengan contructor dari
kelas B, baru kemudian contructor dari kelas c. Pada saat kita membentuk atau
melakukan instansiasi terhadap suatu objek turunan, maka sebelumnya java juga
akan membentuk objek dari kelas induk-induk nya.
b.
Pengertian Polimorfisme
Polimorfisme adalah
kemampuan suatu objek untuk mengungkap banyak hal melalui satu cara yang sama.
Polimorfisme merupakan salah satu hal esensial dalam pemograman berorientasi
objek karena alasan beriku: yakni polimorfisme mengizinkan kelas induk untuk
mendefinisikan sebuah method general ( bersifat umum) untuk semua kelas
turunannya. Polimorfisme dapat berupa overloading atau overriding.
Overloading merupakan
bentuk polimorfisme yaitu beberapa metode yang dapat memiliki nama yang sama
dengan isi dan parameter yang berbeda didalam sebuah kelas.
Biasanya
eksekusi program akan langsung mengacu pada metode yang dipanggil sesuai dengan
parameter . Overriding
merupakan bentuk polimorfisme yaitu berupa metode pada kelas orang tua yang
dapat di tulis ulang pada kode kelas anak dalam pewarisan (inherentance) dengan
memiliki nama yang sama dan memiliki isi ataupun parameter yang sama atau
berbeda.
Mengenal Object, Class, Method, dan
Property
Burung itu ibarat objek yang punya nama, mata, kaki, sayap,
warna, jenis. Burung juga dapat terbang, berkicau dan berjalan. Mata, kaki
sayap dan warna dalam dunia pemrograman disebut juga atribut atau properties.
Sedangkan aktifitasnya yaitu terbang, berkicau dan berjalan dalam dunia
pemrograman disebut sebagai method.
Class
adalah cetakan, template, prototype,tempat dari object, sedangkan object adalah
isi dari kelas. Satu kelas dapat mempunyai object lebih dari satu atau banyak.
Contoh sederhananya seperti berikut : satu cetakan biasa menghasilkan banyak
kue.
Ada 3
Konsep Dasar OOP pada Java :
Ø Encapsulation
Encapsulation
adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses
program agar tidak dapat diakses secara sembarangan atau di intervensi oleh
program lain. Dalam OOP Encapsulation di wujudkan dalam bentuk “class”.
Seperti yang telah dijalaskan sebelumnya dalam sebuah class terdapat property
dan method yang memiliki hak akses tertentu terhadap
environment/lingkungan-nya, hak akses ini biasa di sebut Access Modifier,
access modifier terdiri dari private, protected, dan public.
Contoh
Program Encapsulation:
package
praktikum5;
public
class manusia {
public String nama;
public manusia(String n){
this.nama= n;}
public String
tampilkanNama(){
return nama;}
public void makan(){System.out.println("nyam ... nyam..");}
public void kerja (){System.out.println("kerja...kerja..");}
public void bersantai() {System.out.println("santaiii broo");}
// TODO Auto-generated method stub
}
Dimana
Pada public ini memberikan hak akses kepada property dan method agar dapat
digunakan diluar class tersebut.
class manusia Ini bisa diakses oleh
kelas lain dan masing-masing method diberikan nama public void makan,kerja ,dan
bersantai ini dapat di p[anggil oleh klas utama dengan menggunakan nama
makan,bersantai,dan kerja.
Ø Inheritance
Inheritance adalah pewarisan yang
artinya sebuah class dapat mewarisi atribut dan metho dari class lain. untuk
mendeklarasikan suatu class sebagai subclass dilakukan dengan cara menambahkan
kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama
parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa
kita ingin melakukan perluasan class.
Contoh
Programnya :
package praktikum5;
public class
oop extends
manusia {
public oop (String n) {
super(n);
}
public void kerja (){
System.out.println("tak tik
tuk");
}
public void
bersantai(){
System.out.println("game over, you
lose ");
}
}
Public class oop ini memanggil class
manusia , dimana kelas semua method pada kelas manusia akan diganti dengan
method oop.dan pada saat di run yang akan muncul methodnya adalah method yang
ada pada oop.
Ø Polymorism
Suatu aksi yang memungkinkan
pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana
obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai
dengan sifat masing-masing obyek.
Polymorism dapat berarti banyak bentuk, maksudnya yaitu kita
dapat menimpa (override), suatu method, yang berasal dari parent class (super
class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang
berbeda.
Contoh
program java nya :
Simpan dengan
nama tentara.java
package praktikum5;
class tentara extends manusia {
public String pangkat;
public tentara(String n){
super (n);
this.pangkat=
n;}
public String tampilkanPangkat () {return pangkat;}
public void
kerja(){System.out.println("Dor...Dor");}}
Public class tentara ini memanggil
class manusia , dimana kelas semua method pada kelas manusia akan diganti
dengan method tentara.dan pada saat di run yang akan muncul methodnya adalah
method yang ada pada tentara.
Kemudian
compile dan run.
Ø Gabungan program OOP
·
Kelas Utama 1
package praktikum5;
class
ttt {
public static void main(String[] args) {
manusia
ttt = new
manusia("tisa");
System.out.println("nama"+ttt.tampilkanNama());
ttt.makan();
ttt.kerja();
ttt.bersantai();
}
}
ü
Outputnya
namatisa
nyam ... nyam..
kerja...kerja..
santaiii broo
class
utama ttt ini menghasilkan output yang ada pada di atas dan output d atas
adalah milik method yang ada pada kelas manusia
·
Kelas Utama 2
package praktikum5;
public class
dedi {
public static void
main(String args[]){
sopir dedi=new sopir ("dedi");
System.out.println("nama= "+dedi.tampilkanNama());
dedi.makan();
dedi.kerja();
dedi.bersantai();
}
}
ü Outputnya
nama= dedi
nyam ... nyam..
nyong...nyong.ciit.
santaiii broo
class
utama dedi ini menghasilkan output yang ada pada di atas dan output d atas
adalah milik method yang ada pada kelas manusia dan untuk void kerja
menggantikan class tentara
·
Kelas Utama 3
package praktikum5;
public class
pekerja {
public static void main(String[] args) {
manusia[]
profesi= new
manusia[3];
profesi[0]=
new oop("");
profesi[1]=
new tentara("");
profesi[2]=
new sopir("dedi");
for
(int
i=0; i<3; i++){
profesi[i].kerja();
//*profesi[0].kerja();
//*profesi[1].kerja();
//*profesi[2].kerja();
}
}}
ü Outputnya
tak tik tuk
Dor...Dor
nyong...nyong.ciit.
class utama pekerja inio menghasilkan output yang
ada pada di atas dan output d atas adalah milik method kerja yang ada pada
kelas manusia dimana manusia ini memiliki
peranakan danyang di panggil adalah oop,tentara,sopir.
·
Pewarisan 1
package
praktikum5;
public
class manusia {
public String nama;
public manusia(String n){
this.nama= n;}
public String
tampilkanNama(){
return nama;}
public void makan(){System.out.println("nyam ... nyam..");}
public void kerja (){System.out.println("kerja...kerja..");}
public void bersantai() {System.out.println("santaiii broo");}
// TODO Auto-generated method stub
}
·
Pewarisan 2
package praktikum5;
public class
oop extends
manusia {
public oop (String n) {
super(n);
}
public void
kerja (){
System.out.println("tak tik
tuk");
}
public void bersantai(){
System.out.println("game over, you
lose ");
}
}
·
Pewarisan 3
package praktikum5;
public class
sopir extends
manusia{
public sopir (String n) {
super(n);}
public void
kerja (){
System.out.println("nyong...nyong.ciit.");
}
}
·
Pewarisan 4
package praktikum5;
class
tentara extends
manusia {
public String pangkat;
public tentara(String n){
super (n);
this.pangkat= n;}
public String
tampilkanPangkat () {return pangkat;}
public void kerja(){System.out.println("Dor...Dor");}}

·
KELAS
UTAMA
Nama
class ini adalah kelasutama
dan ini merupakan kelas yang bisa di compile atau di run. Karen memiliki method
yaitu public static void main(String args [ ] ){ yang memiliki fungsi dan
kegunaan yaitu inilah objeknya. Mungkin pertanyaan anda adalah, kalau baris ini
adalah objeknya lalu nama objeknya apa, terus atribut
dan methodnya mana?
Pada
contoh program ini saya belum mendefinisikan sebuah nama objek dengan jelas
karena programnya masih sangat sederhana, untuk contoh ini “kelasutama” adalah nama objeknya
berikutnya yang ada didalam .
package OOP2;
import javax.swing.JOptionPane;
public class utamaaa {
public static void main(String args[]){
kelaskedua tina=new kelaskedua ();
do {
tina.hitung();
System.out.println("");
while (JOptionPane.showConfirmDialog(null,"Ulang lagi?")==JOptionPane.YES_OPTION);
}
}
ü
OUTPUTNYA
Masukan Bulan penjualan : 7
Jumlah Data : 3
Nama Barang ke- 1: K U L K A S
Barang : 2
Harga Rp. : 1000
Nama Barang ke- 2: L A P T O P
Barang : 4
Harga Rp. : 3000
Nama Barang ke- 3: L E M A R I
Barang : 1
Harga Rp. : 800
Laporan Penjualan PT YAI
Bulan : 7
=================================================================
| No. | Nama Barang |
Jumlah | Harga
| Total |
=================================================================
1. K U L K A S 2 1000 2000
2. L A P T O P 4 3000 12000
3. L E M A R I 1 800 800
=================================================================
Total Barang : 3
Total Penjualan : 14800
Untuk kelas utama ini di gunakan untuk
me run dan mengcompile program ini dan di program utama ini akan memanggil
kelas anak 2 dimana anak 2 ini merupakan
pewarisan dari anak 1 jadi kelas ini memanggil semua method yang ada di
kelas anak1 dan kelas anak2, sehingga outputnya seperti diatas, untuk memanggil
kelas anak 2 kita menggunakan kata public static void hitung yang sudah di
deklarasikan di kelas anak 2, dengan terlebih dahulu mendeklarasikan nama tina .
·
Pewarisan 1
package OOP2;
public class kelaspertama {
public static void bulan(){System.out.println(" Laporan
Penjualan PT YAI");}
public static void tabel(){System.out.println("=================================================================");
System.out.println("| No.
| Nama Barang |
Jumlah | Harga
| Total |");
System.out.println("=================================================================");}
void grs(){System.out.println("=================================================================");}
}
Ini meerupakan pewarisan 1 yang
berhubungan langsung dengan kelas anak2 yang bisa diakses oleh semua kelas
karena sudah di deklarasikan dengan kata publiuc void tersebut jadi kelas ini
bisa di akses oleh semua kelas.
·
Pewarisan 2
package OOP2;
import java.util.Scanner;
public class kelaskedua extends kelaspertama {
public void hitung(){
Scanner
input=new Scanner(System.in);
Scanner
input2=new Scanner(System.in);
System.out.println("");
System.out.print(" Masukan Bulan penjualan : ");
int bulan=input.nextInt();
System.out.print(" Masukkan Jumlah Data : ");
int n =
input.nextInt();
int jumlahbarang[]=new int[n+1];
int hargabarang[]=new int[n+1];
String namabarang[]=new String[n+1];
int total[]=new int[n+1];
int total1=0;
for (int i=1;i<=(n);i++) {
System.out.print(" Nama Barang ke- "+i +": ");
namabarang[i]=input2.nextLine();
System.out.print(" Jumlah : ");
jumlahbarang[i]=input.nextInt();
System.out.print(" Harga Rp. : ");
hargabarang[i]=input.nextInt();
System.out.println("");
total[i]=hargabarang[i]*jumlahbarang[i];
total1=total1+total[i];}
kelaspertama.bulan();
System.out.println(" Bulan : "+bulan);
kelaspertama.tabel();
for (int i=1;i<=n;i++) {
System.out.println(" "+i+". "+namabarang[i]+" "+jumlahbarang[i]+" "+hargabarang[i]+" "+total[i]+"");}
kelaskedua kamu=new kelaskedua();
kamu.grs();
System.out.println(" Total Barang : "+n);
System.out.println(" Total Penjualan : "+total1);
}}
Pada kelas pewarisan 2 ini yaitu kelas
anak 2 merupakan method yang paling penting karena program utamanya berada di
kelas ini dan di kelas ini kita menghubungkan dengan kelas anak 1 dengan
kodfenya yaitu kamu.tabel();, dan
kamu.bulan(); yang ada pada kelas anak 1 ,,,
Lalu untuk kelas ini memiliki public
void hitung yang merupakan kata kunci dari semua ini karena kata hitung ini
berguna untuk mengakses kelas anak 2 ini yang sudah terhubung dengan kelas anak
1 harus menggunakan public void hitung yang sudah ada pada kelas utama.