import java.util.Scanner;
public class persegi_panjang{
public static void main(String [] args){
int panjang,lebar,luas,keliling;
Scanner S = new Scanner (System.in);
System.out.print("masukan panjang=");
panjang=S.nextInt();
System.out.print("masukan lebar=");
lebar=S.nextInt();
luas=(panjang*lebar);
keliling=2*(panjang+lebar);
System.out.println("luas persegi panjang adalah="+luas);
System.out.println("keliling persegi panjang adalah="+keliling);
}
}
Hasilnnya:
Outputnya
Sumber : http://ditafhiams.blogspot.com/2012/05/contoh-program-bluej-sederhana_07.html
Rabu, 12 Maret 2014
Contoh Program Method di Java
Berikut contoh program dengan konsep method pada java tanpa parameter
class kotak{
int panjang;
int lebar;
int tinggi;
int volume;
// pembuatan method hitung volume dengan jenis non void/ mengembalikan nilai.
public int HitungVolume(){
volume = panjang * lebar * tinggi;
return volume;
}
//pembuatan method hitung volume dengan jenis void/tanpa mengembalikan data.
public void TampilVolume(){
System.out.println("Hasil Volume balok adalah " + panjang * lebar * tinggi);
}
public static void main(String[] args){
kotak obj = new kotak();
obj.panjang = 10;
obj.lebar = 5;
obj.tinggi = 4;
//pemanggilan non void/dengan pengembalian data.
System.out.println("Volume Balok adalah " + obj.HitungVolume() * 5);
//pemanggilan non void/dengan pengembalian data.
obj.TampilVolume();
}
}
Hasilnya
Outputnya
Sumber : http://pohon-tua.blogspot.com/2013/07/contoh-program-method-di-java.html
Contoh Kasus Class Pada Java
SOAL
Buatlah definisi class Motor, yang memiliki data : nama (String) ,status (boolean) memiliki metod : tampilkan() : mencetak keterangan nama keadaan motor (status mati /hidup) memiliki metod : nyalakan() :berfungsi men-set status dari mati
(false) menjadi hidup (true). Jika status sudah hidup dan dipanggil metod nyalakan(), maka akan ada komentar “Mesin sudah hidup”, jika mesin belum hidup dan meetod nyalakan() dipanggil maka status diubah menjadi true.
Buatlah definisi class TesMotor , untuk membuat objek motor : motorku , nama motor HONDA kondisi mati, panggil metod tampilkan() motormu, nama motor YAMAHA , panggil metod nyalakan() dan tampilkan().
public class Testmotor {
public static void main(String[] args) {
Motorcycle motorku = new Motorcycle();
Motorcycle motormu = new Motorcycle();
//test motorku, honda kondisi mati
motorku.tampilkan("Honda");
//test motormu, nyalakan yamaha
motormu.nyalakan("Yamaha");
//test motormu, yamaha kondisi hidup
motormu.tampilkan("Yamaha");
}
}
public static void main(String[] args) {
Motorcycle motorku = new Motorcycle();
Motorcycle motormu = new Motorcycle();
//test motorku, honda kondisi mati
motorku.tampilkan("Honda");
//test motormu, nyalakan yamaha
motormu.nyalakan("Yamaha");
//test motormu, yamaha kondisi hidup
motormu.tampilkan("Yamaha");
}
}
Sumber :http://asprak4514.blogspot.com/2012/10/contoh-kasus-class-pada-java.html
Contoh program Java Class dn Object
Class
Class merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant
dari object. class juga merupakan grup suatu object dengan kemiripan
attributes/properties, behaviour dan relasi ke object lain.
Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.
dari object. class juga merupakan grup suatu object dengan kemiripan
attributes/properties, behaviour dan relasi ke object lain.
Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.
Object
Object adalah instance dari class. Jika class secara umum merepresentasikan
(template) sebuah object, sebuah instance adalah representasi nyata dari class itu
sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan lainlain.
Membuat object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class
yang akan dibuat sebagai instance dari class tersebut.
sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan lainlain.
Membuat object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class
yang akan dibuat sebagai instance dari class tersebut.
String str = new String();
Random r = new Random();
Pegawai p2 = new PEgawai();
Date hari = new Date();
hari adalah object reference dari class Date yang akan digunakan untuk mengakses
class Date.
Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai
reference ke instance dari class Date().
Contoh Program:
Contoh Program Java
class object {
public static void main(String[]args) {
//object
Mobil G8 = new Mobil();
Mobil Jazz = new Mobil();
//pemberian nilai
G8.warna = "Yellow";
G8.tahun = 2012;
G8.merek = "Audi";
Jazz.warna = "red";
Jazz.tahun = 2007;
Jazz.merek = "Honda";
//menampilkan
System.out.println("G8");
System.out.println("warna :" +G8.warna);
System.out.println("tahun :" +G8.tahun);
System.out.println("merek :" +G8.merek);
System.out.println("");
System.out.println("Jazz");
System.out.println("warna :" +Jazz.warna);
System.out.println("tahun :" +Jazz.tahun);
System.out.println("merek :" +Jazz.merek);
}
}
Output
Sumber : http://tasainagijutsu.blogspot.com/2012/05/contoh-program-java-dengan-class-dan.html
Contoh Program Java Dengan Class dan Object
Class
Class merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant
dari object. class juga merupakan grup suatu object dengan kemiripan
attributes/properties, behaviour dan relasi ke object lain.
Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.
dari object. class juga merupakan grup suatu object dengan kemiripan
attributes/properties, behaviour dan relasi ke object lain.
Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.
Object
Object adalah instance dari class. Jika class secara umum merepresentasikan
(template) sebuah object, sebuah instance adalah representasi nyata dari class itu
sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan lainlain.
Membuat object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class
yang akan dibuat sebagai instance dari class tersebut.
sendiri.
Contoh : Dari class Fruit kita dapat membuat object Mangga, Pisang, Apel dan lainlain.
Membuat object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class
yang akan dibuat sebagai instance dari class tersebut.
String str = new String();
Random r = new Random();
Pegawai p2 = new PEgawai();
Date hari = new Date();
hari adalah object reference dari class Date yang akan digunakan untuk mengakses
class Date.
Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai
reference ke instance dari class Date().
Contoh programnya
class objectorang {
public static void main(String[]args) {
//mebuat object
Orang orang1 = new Orang();
//pemberian nilai
orang1.nama = "Aby";
orang1.tinggibadan = 170;
orang1.beratbadan = 55;
orang1.warnarambut = "hitam";
orang1.warnakulit = "putih";
orang1.jeniskelamin = "pria";
orang1.berkacamata = false;
//menampilkan
System.out.println("nama :" +orang1.nama);
System.out.println("tinggi :" +orang1.tinggibadan);
System.out.println("berat :" +orang1.beratbadan);
System.out.println("warna rambut :" +orang1.warnarambut);
System.out.println("warna kulit :" +orang1.warnakulit);
System.out.println("jenis kelamin :" +orang1.jeniskelamin);
System.out.println("berkacamata :" +orang1.berkacamata);
//pemanggilan method
orang1.tertawa();
}
}
public static void main(String[]args) {
//mebuat object
Orang orang1 = new Orang();
//pemberian nilai
orang1.nama = "Aby";
orang1.tinggibadan = 170;
orang1.beratbadan = 55;
orang1.warnarambut = "hitam";
orang1.warnakulit = "putih";
orang1.jeniskelamin = "pria";
orang1.berkacamata = false;
//menampilkan
System.out.println("nama :" +orang1.nama);
System.out.println("tinggi :" +orang1.tinggibadan);
System.out.println("berat :" +orang1.beratbadan);
System.out.println("warna rambut :" +orang1.warnarambut);
System.out.println("warna kulit :" +orang1.warnakulit);
System.out.println("jenis kelamin :" +orang1.jeniskelamin);
System.out.println("berkacamata :" +orang1.berkacamata);
//pemanggilan method
orang1.tertawa();
}
}
Hasilnya dari Program java tsb
Outputnya
Sumber : http://tasainagijutsu.blogspot.com/2012/05/contoh-program-java-dengan-class-dan.html
Contoh Program Class Menggunakan Java
Berikut adalah salah satu contoh program yang menggunakan fungsi class, pada java.
Listing Program coding :
class contohclass
{
public static void main(String args[])
{
//penurunan class (inheritance)
balok a = new balok();
//pemberian nilai ke dalam objek a
a.panjang = 10;
a.lebar = 8;
a.tinggi = 5;double volume =a.panjang * a.lebar * a.tinggi;System.out.println("Panjang = " + a.panjang + " cm");
System.out.println("Lebar = " + a.lebar + " cm");
System.out.println("Tinggi = " + a.tinggi + " cm");
System.out.println("Isi Balok = " + volume + " cm3");
}
}//membuat class balok (objek)
class balok
{
double panjang;
double lebar;
double tinggi;
}
Hasilnya
Outputnya
Sumber: http://note-why.blogspot.com/2012/10/contoh-program-class-menggunakan-java.html
Contoh Program Hello
Cuaca di kota Medan sangat mendukung untuk tidur, habis hujan jadi
suasananya dingin... Yah.. gak nyambung dengan judul hahaha...
Oke.. oke, mari kita bahas..
Class pada Java didefinisikan sebagai sebuah blue print, atau prototype, yang mendefinisikan variabel-variabel dan metode-metode yang umum untuk semua objek dari jenis tertentu.
Class hanyalah sebuah prototype, penggunaan class tersebut tidak bisa langsung tetapi harus dibuatkan objek terlebih dahulu.
Sedangkan Object merupakan bagian dinamis dari suatu Class.
Constructor merupakan method khusus di dalam class yang dipanggil secara otomatis pada saat pembentukan objek.
Setelah memahami pengertian tentang Class dan Object Pada Java mari kita lanjut ke Sorce Code Program.
Contoh program berikut menjelaskan mengenai Class dan Object.
Contoh Sebuah Program Hello
public class Hello
{
public static void main(String []args)
{
//mendeklarasikan a & b sebagai objek dari class Manusia
Manusia a, b;
//a & b merupakan instance baru dari Manusia
a = new Manusia("Kormel");
b = new Manusia("Cewek");
//mengirim pesan ke object untuk melakukan suatu aksi
a.bilangHelloKe(b);
b.bilangHelloKe(a);
}
}
Hasilnya
Oke.. oke, mari kita bahas..
Class pada Java didefinisikan sebagai sebuah blue print, atau prototype, yang mendefinisikan variabel-variabel dan metode-metode yang umum untuk semua objek dari jenis tertentu.
Class hanyalah sebuah prototype, penggunaan class tersebut tidak bisa langsung tetapi harus dibuatkan objek terlebih dahulu.
Sedangkan Object merupakan bagian dinamis dari suatu Class.
Constructor merupakan method khusus di dalam class yang dipanggil secara otomatis pada saat pembentukan objek.
Setelah memahami pengertian tentang Class dan Object Pada Java mari kita lanjut ke Sorce Code Program.
Contoh program berikut menjelaskan mengenai Class dan Object.
Contoh Sebuah Program Hello
public class Hello
{
public static void main(String []args)
{
//mendeklarasikan a & b sebagai objek dari class Manusia
Manusia a, b;
//a & b merupakan instance baru dari Manusia
a = new Manusia("Kormel");
b = new Manusia("Cewek");
//mengirim pesan ke object untuk melakukan suatu aksi
a.bilangHelloKe(b);
b.bilangHelloKe(a);
}
}
Hasilnya
Output Dari Source Code Java Di atas
Sumber :http://www.kormel.com/2012/05/contoh-program-class-object-pada-java.html
Senin, 10 Maret 2014
Contoh Program Menggunakan Thread Pada Java
public class NewClass {
public static void main(String[] args) {
Thread kopasus = new Thread();
Thread marinir = new Thread();
int ibuHamil = 5;
int manula = 5;
int teroris = 15;
int nIbuHamil = 1;
int nManula = 1;
int nTeroris = 1;
int batas = ibuHamil + manula + teroris;
kopasus.start();
marinir.start();
boolean is = true;
while (is) {
try {
if (nIbuHamil <= ibuHamil) {
kopasus.sleep(1000);
System.out.println("IBU HAMIL yang terselamatkan: " + nIbuHamil);
nIbuHamil++;
} else {
if ((nManula - 1) == manula && (nTeroris - 1) == teroris) {
is = false;
} else {
if (nManula <= manula) {
kopasus.sleep(1000);
System.out.print("MANULA yang terselamatkan: " + nManula + "\t");
nManula++;
} else {
System.out.print("\t\t\t\t");
}
if (nTeroris <= teroris) {
marinir.sleep(1000);
System.out.print("MARINIR masuk membunuh teroris: " + nTeroris);
nTeroris++;
} else {
System.out.print("\t\t\t\t");
}
}
}
} catch (Exception ex) {
System.out.println("Terjadi kesalahan dalam penyelamatan");
}
if (!is) {
System.out.println("Infanteri melakukan finishing");
break;
}
}
}
}
Hasil
Ketika Run Source Code
Output Ketika Run Program java di atas
Output Kedua
Hasil Terakhir Output
Sumber :
public static void main(String[] args) {
Thread kopasus = new Thread();
Thread marinir = new Thread();
int ibuHamil = 5;
int manula = 5;
int teroris = 15;
int nIbuHamil = 1;
int nManula = 1;
int nTeroris = 1;
int batas = ibuHamil + manula + teroris;
kopasus.start();
marinir.start();
boolean is = true;
while (is) {
try {
if (nIbuHamil <= ibuHamil) {
kopasus.sleep(1000);
System.out.println("IBU HAMIL yang terselamatkan: " + nIbuHamil);
nIbuHamil++;
} else {
if ((nManula - 1) == manula && (nTeroris - 1) == teroris) {
is = false;
} else {
if (nManula <= manula) {
kopasus.sleep(1000);
System.out.print("MANULA yang terselamatkan: " + nManula + "\t");
nManula++;
} else {
System.out.print("\t\t\t\t");
}
if (nTeroris <= teroris) {
marinir.sleep(1000);
System.out.print("MARINIR masuk membunuh teroris: " + nTeroris);
nTeroris++;
} else {
System.out.print("\t\t\t\t");
}
}
}
} catch (Exception ex) {
System.out.println("Terjadi kesalahan dalam penyelamatan");
}
if (!is) {
System.out.println("Infanteri melakukan finishing");
break;
}
}
}
}
Hasil
Ketika Run Source Code
Output Ketika Run Program java di atas
Output Kedua
Hasil Terakhir Output
Sumber :
Jumat, 07 Maret 2014
Contoh Penggunaan thread dibagian 1 Java
Dalam artikel kali ini, ada sedikit contoh penggunaan Thread pada sebuah program java dengan memanfaatkan method sleep()
yang ada dalam java. Fungsi/method sleep() sendiri digunakan untuk
menunda thread unuk beberapa jumlah waktu tertentu (dalam satuan
milidetik), artinya misal 1000=1 detik atau 10000=10 detik. Mungkin
program tidak akan terlihat pada screenshot program, hanya terlihat saat
program di jalankan, seperti berikut misal masukkan kata : thedewaku
maka secara otomatis program akan mencetak tulisan thedewaku secara berurutan sehingga membentuk bentuk seperti di bawah ini :
Contoh Source Codenya
import java.io.*;
import java.util.*;
class tambahan{
public static void main (String[] args) throws Exception {
Scanner in=new Scanner(System.in);
Thread th=new Thread();
System.out.print("Masukkan kata : ");
String kata=in.next();
System.out.println("Ryan Nathaniel");
char[] hrf=kata.toCharArray();
int p=kata.length();
for(int i=0;i<p;i++){
for(int j=0;j<=i;j++){
if(i==j)
System.out.print(hrf[i]);
else if(i!=j)
System.out.print(" ");
th.sleep(100);
}
if(i==p-1){
}else if(i!=p-1){
System.out.println();
}
}
for(int k=p-2;k>=0;k--){
System.out.print(" "+hrf[k]);
th.sleep(100);
}System.out.println();
for(int i=p-2;i>=0;i--){
for(int j=i;j>=0;j--){
if(j==0)
System.out.print(hrf[i]);
else if(j!=0)
System.out.print(" ");
else
System.out.print(hrf[i]);
th.sleep(100);
}
System.out.println();
}
}
}
Hasilnya
Source Code ketika Di Run
Outputnya k-1
Sumber : http://thedewaku.blogspot.com/2013/07/contoh-penggunaan-thread-di-java-bagian-1.html
maka secara otomatis program akan mencetak tulisan thedewaku secara berurutan sehingga membentuk bentuk seperti di bawah ini :
Contoh Source Codenya
import java.io.*;
import java.util.*;
class tambahan{
public static void main (String[] args) throws Exception {
Scanner in=new Scanner(System.in);
Thread th=new Thread();
System.out.print("Masukkan kata : ");
String kata=in.next();
System.out.println("Ryan Nathaniel");
char[] hrf=kata.toCharArray();
int p=kata.length();
for(int i=0;i<p;i++){
for(int j=0;j<=i;j++){
if(i==j)
System.out.print(hrf[i]);
else if(i!=j)
System.out.print(" ");
th.sleep(100);
}
if(i==p-1){
}else if(i!=p-1){
System.out.println();
}
}
for(int k=p-2;k>=0;k--){
System.out.print(" "+hrf[k]);
th.sleep(100);
}System.out.println();
for(int i=p-2;i>=0;i--){
for(int j=i;j>=0;j--){
if(j==0)
System.out.print(hrf[i]);
else if(j!=0)
System.out.print(" ");
else
System.out.print(hrf[i]);
th.sleep(100);
}
System.out.println();
}
}
}
Hasilnya
Source Code ketika Di Run
Outputnya k-1
Output ke -2
Produksi
Contoh Program Produksi
import java.util.*;
public class Produksi
{
public static void main(String[]args)
{
String nama;
int matic1,matic2,matic3;
Scanner honda = new Scanner (System.in);
System.out.println("Produksi Honda Matic per Bulan");
System.out.println("==============================");
System.out.println("Honda Vario");
System.out.print("Jumlah Produksi : ");matic1=honda.nextInt();
System.out.print("\n");
System.out.println("Honda Beat");
System.out.print("Jumlah Produksi : ");matic2=honda.nextInt();
System.out.print("\n");
System.out.println("Honda Scoopy");
System.out.print("Jumlah Produksi : ");matic3=honda.nextInt();
System.out.print("\n\n");
System.out.println("Total Produksi Honda Matic per Bulan : "+(matic1+matic2+matic3));
}
}
Hasilnya
Ketika Run Source Codenya
Sumber : http://dimaspariskiraditiyo.blogspot.com/2013/04/contoh-program-sederhana-java-dari.html
import java.util.*;
public class Produksi
{
public static void main(String[]args)
{
String nama;
int matic1,matic2,matic3;
Scanner honda = new Scanner (System.in);
System.out.println("Produksi Honda Matic per Bulan");
System.out.println("==============================");
System.out.println("Honda Vario");
System.out.print("Jumlah Produksi : ");matic1=honda.nextInt();
System.out.print("\n");
System.out.println("Honda Beat");
System.out.print("Jumlah Produksi : ");matic2=honda.nextInt();
System.out.print("\n");
System.out.println("Honda Scoopy");
System.out.print("Jumlah Produksi : ");matic3=honda.nextInt();
System.out.print("\n\n");
System.out.println("Total Produksi Honda Matic per Bulan : "+(matic1+matic2+matic3));
}
}
Hasilnya
Ketika Run Source Codenya
Ketika di Run Muncul Output
Muncul Output Kedua
Muncul Output ketiga
Output terakhir menjumlahkan setiap input yang ditulis
Sumber : http://dimaspariskiraditiyo.blogspot.com/2013/04/contoh-program-sederhana-java-dari.html
Senin, 03 Maret 2014
this dan super
Meskipun ide dasar dari pemrograman berorientasi objek merupakan
konsep yang cukup sederhana dan jelas, akan tetapi untuk memahaminya
dengan baik kita membuthkan lebih banyak waktu. Sayangnya, banyak sekali
detail yang harus diulas di luar konsep dasarnya. Bagian ini dan bagian
berikutnya akan berbicara tentang hal-hal detail, yang tidak perlu
dikuasai dalam waktu singkat, akan tetapi pengenalan tentang hal detail
ini sangat berguna paling tidak sebagai bahan referensi.
Variabel spesial
Anggota statik suatu kelas bisa digunakan langsung di dalam kelas tersebut. Untuk digunakan di kelas lain, maka ia harus dipanggil dengan nama lengkapnya dalam bentuk "
Variabel dan metode instansi juga bisa digunakan langsung di dalam kelas tersebut, misalnya suatu variabel instansi bisa digunakan langsung oleh metode instansi di kelas yang sama. Anggota instansi juga memiliki nama lengkap akan tetapi ingat bahwa anggota instansi dimiliki oleh objek, bukan kelas. Sehingga untuk memanggil suatu anggota instansi, kita harus menggunakan nama objek yang diciptakan dari kelas tersebut, dalam bentuk
Akan tetapi, misalnya kita sedang menulis metode instansi di suatu kelas. Bagaimana caranya kita memanggil anggota instansi kelas yang sama jika kita belum tahu nama objek apa yang diciptakan dari kelas ini?
Java memiliki variabel spesial yang dinamakan "
Salah satu kegunaaan
Dalam konstruktor di atas, variabel instansi
Ada lagi kegunaan lain dari
Java juga memiliki variabel spesial yang dinamakan "
Suatu kelas bisa ditambah atau dimodifikasi dari kelas turunannya. Variabel
Misalnya kita akan menulis suatu kelas, dan kelas tersebut memiliki metode instansi bernama
Alasan mengapa Java memiliki variabel
Ketika kita membuat metode baru pada kelas turunan yang memiliki nama dan jenis parameter yang sama dengan metode pada kelas supernya, metode dari kelas super akan disembunyukan. Dalam bahasa pemrograman, metode ini menimpa (override) metode dari kelas supernya. Variabel
Kegunaan utama dari
Misalnya, kita memiliki kelas
Dengan cara ini kita bisa memperluas apa yang dilakukan oleh metode
Konstuktor pada Kelas Turunan
Konstruktor tidak bisa diturunkan, artinya jika kita membuat kelas turunan dari suatu kelas, konstruktor pada kelas supernya tidak termasuk bagian yang diturunkan. Jika kita ingin konstruktor tersebut pada kelas turunannya, maka kita harus membuat kembali konstruktor tersebut di kelas yang baru. Jika tidak, maka Java akan membuat konstruktor standar tanpa parameter apa-apa.
Hal ini mungkin menjadi masalah jika konstruktor pada kelas supernya melakukan banyak tugas. Artinya kita harus mengulang kembali menuliskan semua instruksi pada kelas supernya di kelas turunan yang baru. Masalahnya akan lebih rumit jika kita tidak mengetahui sama sekali apa yang dilakukan kelas supernya, misalnya apabila tidak ada kode sumbernya.
Cara yang paling mudah adalah menggunakan
Misalnya kelas
Variabel spesial
this
dan super
Anggota statik suatu kelas bisa digunakan langsung di dalam kelas tersebut. Untuk digunakan di kelas lain, maka ia harus dipanggil dengan nama lengkapnya dalam bentuk "
namaKelas.namaAnggota
", misalnya "System.out
" adalah variabel anggota statik dengan nama "out
" di dalam kelas "System
".
Kita bisa menggunakan nama lengkap kelas tersebut di manapun, bahkan
dari dalam kelas yang sama, misalnya karena nama anggota tersebut
disembunyikan oleh variabel lokal yang namanya sama.Variabel dan metode instansi juga bisa digunakan langsung di dalam kelas tersebut, misalnya suatu variabel instansi bisa digunakan langsung oleh metode instansi di kelas yang sama. Anggota instansi juga memiliki nama lengkap akan tetapi ingat bahwa anggota instansi dimiliki oleh objek, bukan kelas. Sehingga untuk memanggil suatu anggota instansi, kita harus menggunakan nama objek yang diciptakan dari kelas tersebut, dalam bentuk
namaObjek.namaAnggota
.Akan tetapi, misalnya kita sedang menulis metode instansi di suatu kelas. Bagaimana caranya kita memanggil anggota instansi kelas yang sama jika kita belum tahu nama objek apa yang diciptakan dari kelas ini?
Java memiliki variabel spesial yang dinamakan "
this
"
yang bisa digunakan untuk kasus di atas. Variabel ini digunakan pada
suatu objek untuk memanggil metode atau variabel instansi pada objek
yang sama. Maksudnya, this
,
merujuk pada "objek ini" yaitu objek di mana metode sedang dijalankan.
Jika x adalah variabel instansi dalam suatu objek, maka this.x
adalah nama lengkap variabel tersebut jika dipanggil dari dalam objek yang sama. Jika metode suatuMetode()
adalah metode instansi pada suatu objek, maka this.suatuMetode()
bisa digunakan untuk memanggil metode tersebut dari objek yang sama.
Ketika komputer menjalankan perintah tersebut, komputer akan mengganti
variabel this
dengan objek yang berjalan pada saat itu.Salah satu kegunaaan
this
adalah pada konstruktor, misalnya :public class Murid { private String nama; // Nama murid public Murid(String nama) { // Konstruktor, membuat murid dengan nama yang diberikan this.nama = nama; } . . // Variabel dan metode lain. . }
nama
disembunyikan oleh parameter formal yang bernama sama. Akan tetapi,
variabel instansi masih tetap bisa dipanggil dengan nama lengkapnya, this.nama
.
Cara ini merupakan cara yang lazim, artinya kita tidak perlu mengganti
nama parameter formal dengan nama lain agar namanya tidak bentrok dengan
nama salah satu variabel instansinya. Kita bisa menggunakan nama
parameter formal yang sama persis dengan variabel instansinya.Ada lagi kegunaan lain dari
this
.
Ketika kita sedang menulis metode instansi, kita ingin memberikan objek
sebagai parameter aktual. Dalam hal ini, kita bisa menggunakan this
sebagai parameter aktualnya. Misalnya, kita ingin mencetak suatu objek sebagai string, kita bisa menggunakan perintah "System.out.println(this);
". Atau kita ingin mengisi nilai this
ke dalam variabel lain. Pokoknya, kita bisa melakukan segala hal seperti layaknya variabel kecuali mengganti isinya.Java juga memiliki variabel spesial yang dinamakan "
super
" untuk digunakan dalam metode instansi. Variabel super
digunakan dalam kelas turunan. super
mengacu pada objek di mana metode tersebut berada, akan tetapi ia merupakan bagian dari kelas super dari objek tersebut. Suatu kelas bisa ditambah atau dimodifikasi dari kelas turunannya. Variabel
super
hanya mengacu pada bagian objek sebelum ia ditambah atau dimodifikasi,
atau dengan kata lain bentuk aslinya sebelum dia diturunkan, yang dalam
hal ini sama dengan kelas supernya.Misalnya kita akan menulis suatu kelas, dan kelas tersebut memiliki metode instansi bernama
suatuMetode()
. Pernyataan super.suatuMetode()
berarti menjalankan suatuMetode()
pada kelas supernya. Jika tidak ada metode sutuMetode()
pada kelas supernya, Java akan menampilkan pesan kesalahan sintaks.Alasan mengapa Java memiliki variabel
super
adalah karena banyak hal yang mungkin tersembunyi pada kelas turunan.
Misalnya karena kita mengimplementasikan fungsi lain pada kelas turunan
dengan nama yang sama (dalam kaitannya dengan polimorfisme, misalkan).Ketika kita membuat metode baru pada kelas turunan yang memiliki nama dan jenis parameter yang sama dengan metode pada kelas supernya, metode dari kelas super akan disembunyukan. Dalam bahasa pemrograman, metode ini menimpa (override) metode dari kelas supernya. Variabel
super
bisa digunakan untuk mengakses metode aslinya yang didefinisikan di kelas supernya.Kegunaan utama dari
super
biasanya untuk memperluas kegunaan metode yang sudah ada, bukan menggantinya secara keseluuruhan. Metode baru bisa menggunakan super
untuk menjalankan instruksi pada kelas supernya, kemudian menambahkan instruksi lain pada kelas turunannya.Misalnya, kita memiliki kelas
PasanganDadu
yang memiliki metode kocok
. Kemudian kita akan membuat kelas turunan yaitu DaduGrafis
yang berfungsi untuk menggambar dadu pada layar. Metode kocok()
dalam DaduGrafis
harus melakukan apa yang dilakukan oleh PasanganDadu
, dengan tambahan perintah untuk menggambar dadu tersebut di layar. Kita bisa tulis definisi kelas DaduGrafis
dalam bentuk :public class DaduGrafis extends PasanganDadu { public void kocok() { // Mengocok dadu, kemudian menggambarnya di layar super.kocok(); // Panggil metode kocok() di kelas PasanganDadu gambar(); // Gambar ulang dadu } . . // Metode dan variabel lain, termasuk metode gambar() . }
kocok()
pada kelas supernya tanpa mengetahui dengan detail apa yang dilakukan langkah per langkah di kelas supernya.Konstuktor pada Kelas Turunan
Konstruktor tidak bisa diturunkan, artinya jika kita membuat kelas turunan dari suatu kelas, konstruktor pada kelas supernya tidak termasuk bagian yang diturunkan. Jika kita ingin konstruktor tersebut pada kelas turunannya, maka kita harus membuat kembali konstruktor tersebut di kelas yang baru. Jika tidak, maka Java akan membuat konstruktor standar tanpa parameter apa-apa.
Hal ini mungkin menjadi masalah jika konstruktor pada kelas supernya melakukan banyak tugas. Artinya kita harus mengulang kembali menuliskan semua instruksi pada kelas supernya di kelas turunan yang baru. Masalahnya akan lebih rumit jika kita tidak mengetahui sama sekali apa yang dilakukan kelas supernya, misalnya apabila tidak ada kode sumbernya.
Cara yang paling mudah adalah menggunakan
super
. Di baris pertama konstruktor baru kita di kelas turunannya, kita bisa menggunakan super
untuk memanggil konstruktor kelas supernya. Sintaksnya sedikit aneh dan
membingungkan, dan hanya bisa digunakan untuk satu situasi saja :
Sintaksnya mirip seperti memanggil subrutin super
(meskipun sebenarnya super
bukan subrutin dan kita tidak bisa memanggil konstruktor seperti kita memanggil subrutin biasa).Misalnya kelas
PasanganDadu
memiliki konstruktor yang memiliki dua parameter bertipe int. Maka kita bisa membuat konstruktor pada kelas DaduGrafis
seperti :public class DaduGrafis extends PasanganDadu { public DaduGrafis() { // Konstruktor kelas ini super(3,4); // Panggil konstruktor dari kelas PasanganDadu // dengan parameter 3 dan 4 inisialisasiGrafis(); // Lakukan inisialisasi grafis // untuk digunakan pada kelas DaduGrafis } . . // Konstruktor, variabel dan metode instansi lain . }
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/dan-super
Pewarisan, Polimorfisme, dan Kelas Abstrak
Kelas melambangkan cetak biru objek yang memiliki kesamaan struktuk
dan perilaku. Kelas menentukan struktur suatu objek melalui variabel
yang terkandung dalam setiap objek, dan menentukan perilaku melalui
metode instansi yang merupakan perilaku suatu objek.
Ide utama dari pemrograman berorientasi objek -- yang membedakannya dari pemrograman tradisional -- adalah menciptakan kelas yang memiliki hanya beberapa (tidak semua) struktur dan perilaku. Kemiripan ini diekspresikan dalam bentuk pewarisan dan polimorfisme (perubahan bentuk).
Istilah pewarisan berarti suatu kelas bisa mewariskan sebagian atau keseluruhan struktur dan perilaku kelas lain. Jika kelas B adalah kelas turunan dari kelas A, maka kita bisa juga menyebut kelas A adalah kelas super dari kelas B. Kelas turunan bisa memiliki struktur atau perilaku tambahan dari kelas supernya. Atau bahkan kelas turunan bisa mengubah atau mengganti perilaku kelas supernya. Hubungan antara kelas turunan dan kelas super sering dilukiskan dalam bentuk diagram di mana kelas turunan digambarkan di bawah kelas supernya, dan dihubungkan dengan garis penghubung dengan tanda segitiga yang diletakkan di dekat kelas supernya.
Dalam bahasa Java, ketika kita membuat suatu kelas, kita bisa menyatakan bahwa kelas tersebut merupakan kelas turunan dari kelas lain. Jika kita buat kelas yang bernama "B" dan kita ingin kelas ini menjadi kelas turunan dari kelas "A", kita akan tulis dalam bentuk :
Beberapa kelas dapat menurunkan kelas yang sama. Kelas-kelas turunan
ini masing-masing disebut kelas saudara, yaitu diwariskan dari satu
kelas super yang sama. Struktur dan perilaku kelas super ini akan
dimiliki oleh masing-masing turunannya. Pada diagram berikut, kelas B,
C, dan D adalah kelas saudara. Pewarisan juga bisa dilakukan beberapa
kali, atau suatu kelas bisa memiliki cucu, buyut, dan seterusnya. Pada
diagram, kelas E merupakan kelas turunan kelas D, sehingga kelas E
adalah "cucu" dari kelas A. Kelas E masih bisa disebut turunan dari
kelas A, walaupun bukan merupakan turunan langsungnya.
Mari kita buat sebuah contoh. Kita akan membuat program yang berhubungan dengan kendaraan bermotor, yang meliputi mobil, truk, dan motor. Program tersebut memiliki kelas yang dinamakan
Ada 3 kelas turunannya yaitu
Anggap
Dengan deklarasi seperti ini, maka program akan bisa mengakses
Dalam dunia nyata mobil, truk dan motor memang kendaraan (bukan hanya pada program). Dalam arti objek yang memiliki tipe Mobil atau Truk atau Motor juga secara otomatis objek bertipe Kendaraan. Fakta penting berikutnya :
Variabel yang dapat diisi referensi ke objek suatu kelas A juga dapat diisi referensi ke objek kelas turunan dari kelas A.
Efek praktis dari penyataan ini adalah, objek dengan tipe Mobil dapat diisi ke dalam variabel bertipe Kendaraan, atau dengan kata lain perintah berikut adalah valid
atau bahkan juga perintah berikut
Setelah pernyataan di atas, variabel
menguji apakah objek yang dirujuk pada variabel kendaraanku merupakan objek bertipe Mobil.
Kebalikannya, pernyataan berikut tidak bisa dilakukan
karena
Atau kita juga bisa mengakses
Lihat bahwa untuk setiap jenis objek, komputer akan menguji satu per satu tipe objek yang disimpan dalam
Contoh lain, mari kita buat program untuk menggambar suatu bentuk geometri pada layar. Misalnya bentuk geometri tersebut terdiri dari persegi panjang, oval, dan kotak bersudut lingkar dengan berbagai warna.
Kelas yang akan kita buat adalah PersegiPanjang, Oval, dan KotakLingkar. Ketiga kelas tersebut memiliki kelas super yang sama yang disebut BentukGeometris. Kelas BentukGeometris memiliki variabel instansi warna, lokasi, dan ukuran. Untuk mengganti warna kita bisa mengganti variabel instansi warna pada kelas ini, kemudian menjalankan metode instansi gambar() untuk menggambar bentuk tersebut dengan warna baru:
Sekarang metode
Dalam prakteknya, ini berarti setiap kelas turunan dari kelas BentukGeometris memiliki metode
Jika
Kita tidak akan bisa menebak metode apa yang akan dipanggil pada suatu saat hanya dengan membaca program tersebut, karena kita tidak pernah tahu isi variabel
Kita sebut metode
Mungkin akan lebih mudah dimengerti jika kita ganti bahasanya : Dalam PBO, memanggil metode sering disebut juga dengan mengirim pesan kepada suatu objek. Objek tersebut merespon pesan tersebut dengan melaksanakan metode yang sesuai. Pernyataan "
Dengan kata lain, objek merupakan sesuatu yang memiliki perilaku aktif, yaitu sesuatu yang bisa mengirim dan menerima pesan. Polimorfisme dianggap sebagai sifat yang natural jika dilihat dari sudut pandang ini. Polimorfisme juga berarti bahwa beberapa objek dapat merespon suatu pesan dengan cara yang berbeda-beda.
Salah satu keindahan dari poliformisme adalah kita bisa membuat kode program tanpa harus mengetahui persis apa yang akan dilakukan program saat kita menulis program tersebut. Jika kita ingin menambah objek lain, misalnya segitiga, maka kita cukup menulis kelas turunan baru dan membuat metode
Ketika suatu objek, misalnya
Jawabannya: kosongkan saja. Intinya kelas
Lalu kenapa kita harus mendeklarasikan metode
Kita bisa menyebut kelas
Demikian juga, kita bisa menyebut metode
Perhatikan contoh berikut.
Setelah kita buat seperti ini, kita tidak bisa lagi membuat objek langsung dari kelas
Dalam Java, setiap kelas yang kita buat akan memiliki kelas super, atau dengan kata lain setiap kelas merupakan turunan dari kelas lain. Jika kita tidak memberi kelas supernya (melalui operator
Jadi dengan demikian, perintah
sama artinya dengan
Semua kelas akan merupakan turunan langsung atau tidak langsung dari kelas
Kelas
Kita dapat juga membuat program untuk menampung semua BentukGeometri yang telah digambar di layar dalam kontainer
Katakan misalnya kita ingin menggambar semua objek dengan berbagai
tipe di dalam kumpulan tersebut, kita bisa gunakan perulangan for
sederhana (sekaligus memberi contoh betapa indagnya PBO dan
polimorfisme), yaitu dengan :
Penutup
Dalam pemrograman sehari-hari, terutama bagi programmer yang baru belajar dan bekerja dengan objek, penurunan kelas akan sering digunakan. Salah satunya adalah untuk memperluas kegunaan suatu kelas, yang disesuaikan dengan situasi dan kondisi permasalahan yang kita hadapi. Kita bisa membuat kelas baru yang merupakan turunan kelas yang sudah ada, menambah beberapa variabel dan metode instansi baru, yaitu dengan operator
Secara umum, sintaksnya adalah dalam bentuk
Kita akan lihat nanti bahwa banyak kelas-kelas standar pada Java yang
digunakan hanya sebagai kelas dasar yang untuk dikembangkan lebih jauh
oleh kita sebagai programmer
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/pewarisan-polimorfisme-dan-kelas-abstrak
Ide utama dari pemrograman berorientasi objek -- yang membedakannya dari pemrograman tradisional -- adalah menciptakan kelas yang memiliki hanya beberapa (tidak semua) struktur dan perilaku. Kemiripan ini diekspresikan dalam bentuk pewarisan dan polimorfisme (perubahan bentuk).
Istilah pewarisan berarti suatu kelas bisa mewariskan sebagian atau keseluruhan struktur dan perilaku kelas lain. Jika kelas B adalah kelas turunan dari kelas A, maka kita bisa juga menyebut kelas A adalah kelas super dari kelas B. Kelas turunan bisa memiliki struktur atau perilaku tambahan dari kelas supernya. Atau bahkan kelas turunan bisa mengubah atau mengganti perilaku kelas supernya. Hubungan antara kelas turunan dan kelas super sering dilukiskan dalam bentuk diagram di mana kelas turunan digambarkan di bawah kelas supernya, dan dihubungkan dengan garis penghubung dengan tanda segitiga yang diletakkan di dekat kelas supernya.
Dalam bahasa Java, ketika kita membuat suatu kelas, kita bisa menyatakan bahwa kelas tersebut merupakan kelas turunan dari kelas lain. Jika kita buat kelas yang bernama "B" dan kita ingin kelas ini menjadi kelas turunan dari kelas "A", kita akan tulis dalam bentuk :
class B extends A { . . // tambahan atau perubahan . // struktur dan perilaku dari kelas A . }
Mari kita buat sebuah contoh. Kita akan membuat program yang berhubungan dengan kendaraan bermotor, yang meliputi mobil, truk, dan motor. Program tersebut memiliki kelas yang dinamakan
Kendaraan
yang melambangkan semua jenis kendaraan bermotor. Kelas Kendaraan
memiliki variabel instansi seperti nomorPolisi
dan pemilik
dan metode instansi yang bernama gantiPemilik
. Variabel dan metode instansi ini bisa digunakan oleh segala jenis kendaraan bermotor.Ada 3 kelas turunannya yaitu
Mobil
, Truk
dan Motor
yang akan menyimpan variabel dan metode khusus untuk setiap jenis kendaraan. Kelas Mobil
misalnya memiliki variabel jumlahPintu
, kelas Truk
memiliki variabel jumlahRoda
, dan kelas Motor
memiliki variabel jumlahTak
. Kelas-kelas ini bisa dideklarasikan dalam Java dalam bentukclass Kendaraan { int nomorPolisi; Orang pemilik; // (anggap kelas Orang telah dibuat sebelumnya) void gantiPemilik(Orang pemilikBaru) { . . . } . . . } class Mobil extends Kendaraan { int jumlahPintu; . . . } class Truk extends Kendaraan { int jumlahRoda; . . . } class Motor extends Kendaraan { int jumlahTak; // 2-tak atau 4-tak . . . }
Anggap
mobilku
adalah variabel dengan tipe Mobil
akan dideklarasikan dan diinisialisasi dengan pernyataan berikutMobil mobilku = new Mobil();
mobilku.jumlahPintu
, karena jumlahPintu
adalah variabel instansi dari kelas Mobil
. Akan tetapi karena kelas Mobil
merupakan turunan dari kelas Kendaraan
, maka mobil ini juga memiliki stuktur dan perilaku dari kendaraan. Artinya program juga bisa mengakses mobilku.nomorPolisi
, mobilku.pemilik
, dan menjalankan metode mobilku.gantiPemilik()
Dalam dunia nyata mobil, truk dan motor memang kendaraan (bukan hanya pada program). Dalam arti objek yang memiliki tipe Mobil atau Truk atau Motor juga secara otomatis objek bertipe Kendaraan. Fakta penting berikutnya :
Variabel yang dapat diisi referensi ke objek suatu kelas A juga dapat diisi referensi ke objek kelas turunan dari kelas A.
Efek praktis dari penyataan ini adalah, objek dengan tipe Mobil dapat diisi ke dalam variabel bertipe Kendaraan, atau dengan kata lain perintah berikut adalah valid
Kendaraan kendaraanku = mobilku;
Kendaraan kendaraanku = new Mobil();
kendaraanku
berisi referensi ke objek Kendaraan
, yang kebetulan merupakan instansi dari kelas turunannya, yaitu kelas Mobil
. Objek akan "mengingat" bahwa yang disimpan dalam variabel tersebut adalah objek bertipe Mobil
, bukan Kendaraan
.
Informasi tentang objek apa yang disimpan pada memori ikut disertakan
bersama objek tersebut, sehingga variabel yang bertipe Kendaraan akan
tahu dengan pasti tipe objek yang dirujuknya. Kita juga dapat menguji
jenis objek yang disimpan suatu variabel dengan menggunakan operator instanceof
. Misalnyaif (kendaraanku instanceof Mobil) { ... }
Kebalikannya, pernyataan berikut tidak bisa dilakukan
mobilku = kendaraanku;
kendaraanku
bisa bertipe objek lain seperti Truk
atau Motor
. Apabila kita tahu persis bahwa kendaraanku
bertipe Mobil
, kita bisa menggunakan casting, untuk memberi tahu komputer untuk memperlakukan variabel kendaraanku
memiliki tipe Mobil
. Jadi kita bisa gunakan perintahmobilku = (Mobil)kendaraanku;
((Mobil)kendaraanku).jumlahPintu
. Mari kita gunakan kelas ini dalam program, dan kita ingin mencetak informasi yang sesuai dengan suatu kendaraan. Misalnya:
System.out.println("Data Kendaraan:"); System.out.println("Nomor polisi: " + kendaraanku.nomorPolisi); if (kendaraanku instanceof Mobil) System.out.println("Jenis kendaraan: Mobil"); Mobil m = (Mobil)kendaraanku; System.out.println("Jumlah pintu: " + m.jumlahPintu); } else if (kendaraanku instanceof Truk) { System.out.println("Jenis kendaraan: Truk"); Truk t = (Truk)kendaraanku ; System.out.println("Jumlah roda: " + t.jumlahRoda); } else if (kendaraanku instanceof Motor) { System.out.println("Jenis kendaraan: Motor"); Motor sm = (Motor)kendaraanku ; System.out.println("Jumlah tak: " + sm.jumlahTak); }
kendaraanku
. Jika kendaraanku[code] merujuk pada objek bertipe Truk maka casting [code](Mobil)kendaraanku
akan menampilkan pesan kesalahan.Contoh lain, mari kita buat program untuk menggambar suatu bentuk geometri pada layar. Misalnya bentuk geometri tersebut terdiri dari persegi panjang, oval, dan kotak bersudut lingkar dengan berbagai warna.
Kelas yang akan kita buat adalah PersegiPanjang, Oval, dan KotakLingkar. Ketiga kelas tersebut memiliki kelas super yang sama yang disebut BentukGeometris. Kelas BentukGeometris memiliki variabel instansi warna, lokasi, dan ukuran. Untuk mengganti warna kita bisa mengganti variabel instansi warna pada kelas ini, kemudian menjalankan metode instansi gambar() untuk menggambar bentuk tersebut dengan warna baru:
class BentukGeometris { Color warna; // Warna suatu bentuk geometri // (Kelas Color diimport dari paket java.awt) void setWarna(Color warnaBaru) { // Metode untuk mengganti warna warna = warnaBaru; // ganti nilai variabel instansi gambar(); // gambar ulang bentuk geometris ini, dengan warna baru } void gambar() { // metode untuk menggambar ? ? ? // perintaha apa yang harus diletakkan di sini? } . . . // variabel dan metode instansi lain } // akhir kelas BentukGeometris
gambar()
mungkin menjadi serba salah. Masalahnya, setiap bentuk digambar dengan cara berbeda. Metode setWarna()
dapat digunakan oleh semua bentuk. Lalu bagaimana komputer tahu bagaimana menggambar bentuk tersebut jika metode gambar()
dipanggil? Mudahnya, kita bisa jawab dengan : Komputer akan menjalankan perintah gambar()
dengan meminta bentuk tersebut untuk menggambar sendiri. Setiap objek
bentuk tahu apa yang harus dilakukan untuk menggambar dirinya.Dalam prakteknya, ini berarti setiap kelas turunan dari kelas BentukGeometris memiliki metode
gambar()
sendiri-sendiri, yaitu :class PersegiPanjang extends BentukGeometris { void gambar() { . . . // perintah untuk menggambar persegi panjang } . . . // metode atau variabel lain } class Oval extends BentukGeometris { void gambar() { . . . // perintah untuk menggambar oval } . . . // metode atau variabel lain } class KotakLingkar extends BentukGeometris { void gambar() { . . . // perintah untuk menggambar kotak bersudut lingkar } . . . // metode atau variabel lain }
gambarku
adalah variabel bertipe BentukGeometri, variabel ini bisa merujuk pada objek dengan bertipe PersegiPanjang
, Oval
, atau KotakLingkar
.
Ketika program dijalankan, isi variabel gambarku akan berubah-ubah,
tergantung pada objek yang dirujuknya. Suatu saat di tengah program,
jika perintah gambarku.gambar()
dijalankan, maka metode gambar() akan dijalankan tergantung pada isi variabel gambarku
saat itu.Kita tidak akan bisa menebak metode apa yang akan dipanggil pada suatu saat hanya dengan membaca program tersebut, karena kita tidak pernah tahu isi variabel
gambarku
pada suatu saat tertentu. Misalnya perintah gambar()
berada dalam suatu perulangan yang dijalankan berkali-kali. Maka akan sangat mungkin perintah gambarku.gambar()
dipanggil berulang-ulang tetapi dengan objek yang berbeda-beda.Kita sebut metode
gambar()
bersifat polimorfis.
Suatu metode disebut polimorfis jika aksi yang dilakukan oleh suatu
metode berbeda-beda tergantung pada objek aktual pada saat metode itu
dijalankan. Polimorfisme adalah fitur utama dalam pemrograman
berorientasi objek.Mungkin akan lebih mudah dimengerti jika kita ganti bahasanya : Dalam PBO, memanggil metode sering disebut juga dengan mengirim pesan kepada suatu objek. Objek tersebut merespon pesan tersebut dengan melaksanakan metode yang sesuai. Pernyataan "
gambarku.gambar();
" adalah pesan yang dikirim ke objek gambarku
.
Karena objek tersebut tahu jenis objeknya sendiri, dia akan tahu
bagaimana merespon pesan tersebut. Dari sudut pandang ini, komputer akan
selalu mengeksekusi perintah "gambarku.gambar();
" dengan cara yang sama, yaitu dengan mengirim pesan. Pesan tersebut bergantung pada siapa yang menerima pesan tersebut. Dengan kata lain, objek merupakan sesuatu yang memiliki perilaku aktif, yaitu sesuatu yang bisa mengirim dan menerima pesan. Polimorfisme dianggap sebagai sifat yang natural jika dilihat dari sudut pandang ini. Polimorfisme juga berarti bahwa beberapa objek dapat merespon suatu pesan dengan cara yang berbeda-beda.
Salah satu keindahan dari poliformisme adalah kita bisa membuat kode program tanpa harus mengetahui persis apa yang akan dilakukan program saat kita menulis program tersebut. Jika kita ingin menambah objek lain, misalnya segitiga, maka kita cukup menulis kelas turunan baru dan membuat metode
gambar()
sendiri. Secara otomatis, program akan tahu jika kita beri perintah "gambarku.gambar()
" maka metode gambar()
pada kelas segitiga akan dijalankan apabila gambarku menunjuk pada objek yang memiliki kelas segitiga.Ketika suatu objek, misalnya
PersegiPanjang
, Oval
, atau KotakLingkar
, harus menggambar dirinya sendiri, metode gambar()
yang sesuai dengan objek yang menerima pesan akan dilaksanakan. Pertanyaannya, apa yang harus kita isi pada metode gambar()
di kelas BentukGeometri?Jawabannya: kosongkan saja. Intinya kelas
BentukGeometri
adalah kelas abstrak, karena tidak ada cara untuk menggambar BentukGeometri
. Apabila kelas tersebut telah direalisasikan dalam suatu bentuk, misalnya PersegiPanjang
, barulah objek tersebut bisa menggambar sesuatu.Lalu kenapa kita harus mendeklarasikan metode
gambar()
di kelas BentukGeometri
? Jawabannya, itu harus ada karena metode ini dibutuhkan untuk memanggil metode setWarna()
pada kelas BentukGeometri
. Program kita akan menampilkan pesan kesalahan jika kita berikan perintah gambarku.gambar()
, karena gambarku bertipe BentukGeometri, apabila di dalam kelas ini tidak ada metode yang bernama gambar()
.Kita bisa menyebut kelas
BentukGeometri
merupakan kelas abstrak.
Kelas abstrak adalah kelas yang tidak bisa digunakan untuk membuat
suatu objek, dan hanya digunakan untuk membuat kelas turunan. Kelas
abstrak hanya ada untuk mengekspresikan sifat umum yang dimiliki oleh kelas-kelas turunannya.Demikian juga, kita bisa menyebut metode
gambar()
pada kelas BentukGeometri
merupakan metode abstrak, karena metode ini bukan untuk dipanggil. Akan tetapi metode ini ada untuk memberi tahu komputer bahwa semua kelas turunannya mengerti dan bisa menjalankan metode gambar()
.BentukGeometri
dan metode gambar()
secara sematik merupakan kelas dan metode abstrak. Kita juga bisa memberi tahu komputer secara langsung dengan memberi sifat "abstract
"
pada definisinya. Untuk metode abstrak, blok perintahnya diganti dengan
titik koma (;). Metode ini harus diimplementasikan secara detail pada
kelas turunannya.Perhatikan contoh berikut.
abstract class BentukGeometri { Color warna; void setWarna(Color warnaBaru) { // metode untuk mengganti warna suatu bentuk warna = warnaBaru; // ganti isi variabel instansi warna gambar(); // menggambar kembali suatu bentuk dengan warna baru } abstract void gambar(); // metode abstrak yang harus diimplementasikan // pada kelas turunannya . . . // variabel dan metode instansi lainnya } // akhir kelas BentukGeometri
BentukGeometri
.Dalam Java, setiap kelas yang kita buat akan memiliki kelas super, atau dengan kata lain setiap kelas merupakan turunan dari kelas lain. Jika kita tidak memberi kelas supernya (melalui operator
extends
), maka kelas tersebut otomatis memiliki kelas super Object
, yaitu kelas bawaan yang sudah didefinisikan dalam paket java.lang
. Kelas Object
adalah satu-satunya kelas yang tidak memiliki kelas super.Jadi dengan demikian, perintah
class Kelasku { ... }
class Kelasku extends Object { . . . }
Object
. Artinya suatu obek yang merupakan kelas apapun dapat direferensikan oleh variabel bertipe Object
. Kelas Objek
memiliki sifat-sifat umum yang dapat digunakan oleh semua objek. Kelas Object
adalah kelas yang paling abstrak dari kelas-kelas lainnya.Kelas
Object
digunakan dalam beberapa kasus di mana kumpulan objek yang sangat umum ingin diolah. Misalnya, Java memiliki kelas standar java.util.ArrayList
yang merupakan kumpulan Objects
. ArrayList
akan dibahas kemudian dalam topik tentang struktur data dan algoritma.
Kelas ini digunakan untuk menampung kumpulan objek, tak ditentukan
jumlahnya, dan bisa diperbanyak ketika objek baru ditambahkan. Objek
yang dapat ditampung pada dasarnya adalah semua objek dari beragam
kelas.Kita dapat juga membuat program untuk menampung semua BentukGeometri yang telah digambar di layar dalam kontainer
ArrayList
. Milsanya ArrayList
kita bernama kumpulanGambar
. Suatu objek dengan tipe BentukGeometri
misalnya gambarku
dapat ditambahkan ke dalam kumpulan ini dengan menggunakan perintah "kumpulanGambar.add(gambarku);
". Gambar tersebut dapat dibuang dari dalam kumpulan dengan perintah "kumpulanGambar.remove(gambarku);
". Jumlah obejk dalam kumpulanGambar
dapat diubah dengan perintah "kumpulanGambar.size()
". Juga kita bisa mengambil gambar ke-n dari dalam kumpulanGambar
dengan perintah "kumpulanGambar.get(n);
". Perlu diingat bahwa metode tersebut akan mengembalikan objek bertipe Object
bukan BentukGeometri
, dan sebetulnya kontainer ini bisa menampung objek apa saja, bukan hanya BentukGeometri
, sehingga untuk mengambil objek ke-n yang kemudian kita letakkan dalam variabel bertipe BentukGeometri
, kita bisa gunakan perintahgambarku = (BentukGeometri)kumpulanGambar.get(n);
for (int n = 0; n < kumpulanGambar.size(); n++) { BentukGeometri bg = (BentukGeometri)kumpulanGambar.get(n); bg.gambar(); }
Dalam pemrograman sehari-hari, terutama bagi programmer yang baru belajar dan bekerja dengan objek, penurunan kelas akan sering digunakan. Salah satunya adalah untuk memperluas kegunaan suatu kelas, yang disesuaikan dengan situasi dan kondisi permasalahan yang kita hadapi. Kita bisa membuat kelas baru yang merupakan turunan kelas yang sudah ada, menambah beberapa variabel dan metode instansi baru, yaitu dengan operator
extends
seperti dijelaskan sebelumnya pada bagian ini.Secara umum, sintaksnya adalah dalam bentuk
class kelas_turunan extends kelas_yang_sudah_ada { ... // tambahan atau perubahan variabel dan metode instansi }
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/pewarisan-polimorfisme-dan-kelas-abstrak
Langganan:
Postingan (Atom)