POKOK BAHASAN
• Deklarasi array
• Membuat array
• Mengakses array
• Mendeklarasikan dan membuat array • Inisialisasi array
• Array multi dimensi
o Deklarasi array multi dimensi
o Membuat array multi dimensi
• Mengetahui total elemen array
• Merubah total elemen array
• Mengkopi elemen array
• Referensi array
TUJUAN BELAJAR
Dengan praktikum
ini mahasiswa diharapkan dapat:
• Membuat dan menggunakan array
• Berinteraksi dengan array multi dimensi • Mengkopi
elemen array
• Memahami konsep referensi array
Dasar Teori
Array adalah suatu kumpulan data pada suatu variabel.
Cara mendeklarasikan suatu array adalah sebagai berikut:
tipe_array
nama_array[]; tipe_array[] nama_array;
Contoh : int
nilai[];
char[] huruf; |
ar kita dapat memesan
tempat di memori untuk menampung elemen-elemen array,
kita perlu membuat array. Adapun caranya adalah dengan
memakai new karena di dalam Java suatu array adalah
dianggap suatu obyek. Format penulisannya adalah sebagai
berikut:
nama_array
= new tipe_array[total_elemen_array];
Contoh : int
nilai[];
nilai = new int[5]; |
Untuk dapat mengakses
elemen array dapat dilakukan dengan menyebutkan elemen
ke berapa dari array yang akan diakses, seperti berikut
ini:
Kita juga dapat
melakukan deklarasi dan pembuatan array hanya pada satu
baris statement. Adapun format penulisannya adalah sebagai
berikut:
tipe_array
nama_array[] = new tipe_array[total_elemen_array];
Contoh : int
nilai[] = new int[5]; |
inisialisasi array
dapat dilakukan dengan format penulisan sebagai berikut:
tipe_array
nama_array[] = {nilai_indeks_0, nilai_indeks_1,
… , nilai_indeks_n};
|
Contoh : int nilai[]
= {70, 65, 85};
Kita dapat membuat array multi dimensi dengan cara menambahkan
tanda []
sebanyak dimensi yang ingin dibuat. Sebagai contoh adalah
sebagai berikut:
int
x[][] = new int[3][4]; |
Baris statement
diatas berarti kita ingin membuat array berdimensi 2,
dengan 3 elemen di dimensi ke-1 dan 4 elemen di dimensi
ke-2.
Untuk mengetahui panjang dari suatu array yang telah
kita buat, kita dapat memakai properti length. Adapun
format untuk menggunakan length adalah sebagai berikut:
var_array.length
total elemen array pada dimensi 1
var_array[i].length total elemen array pada dimensi
2 untuk indeks ke-i pada dimensi 1
var_array[i][j].length total elemen array pada
dimensi 3 untuk indeks ke-i
pada dimensi 1 dan indeks ke-j pada dimensi 2
dan seterusnya. |
Isi dari suatu array
dapat kita kopi pada array yang lain dengan memanfaatkan
method arraycopy() pada class System. Format penulisannya
sebagai berikut :
System.arraycopy(array1,
p1, array2, p2, n);
dimana : array1 = array asal/sumber pengkopian
array2 = array tujuan pengkopian
p1 = posisi indeks awal pengkopian pada array asal
p2 = posisi indeks awal pengkopian pada array tujuan
n = banyaknya elemen array yang akan dikopi
|
Suatu array juga
dapat me-refer (merujuk) ke array yang lain, dengan
kata lain merujuk pada alamat memori yang sama. Sebagai
contoh adalah program berikut ini:
int nilai[]
= {10, 20, 30}; int result[];
result = nilai;
Di baris ketiga, kita meng-assign array nilai ke
array result. Akibatnya, array
result akan me-refer (merujuk) pada array nilai,
sehingga kedua array
tersebut merujuk alamat memori yang sama. |
Percobaan
Percobaan
1 : Mengakses elemen array
public class
Array1 {
public static void main(String args[]) {
int nilai[]=new int[3];
nilai[0]=70;
nilai[1]=80;
nilai[2]=65;
double ratarata=0.0;
for(int i=0; i<nilai.length; i++) ratarata+=nilai[i];
ratarata/=nilai.length;
System.out.println("Nilai
rata-rata = " + ratarata);
}
} |
Percobaan
2 : Mengakses elemen array berdimensi 2
import java.text.NumberFormat;
public class
Array2 {
public static void main(String args[]) {
NumberFormat nf=NumberFormat.getInstance(); nf.setMaximumFractionDigits(3);
int nilai[][]=new int[2][3]; nilai[0][0]=85;
nilai[0][1]=81;
nilai[0][2]=78;
nilai[1][0]=65;
nilai[1][1]=73;
nilai[1][2]=71;
String MK[]={"RPL", "PBO"};
double ratarataMK[]=new double[nilai.length];
for (int i=0;
i<nilai.length; i++) {
for (int j=0; j<nilai[0].length; j++) {
ratarataMK[i]+=nilai[i][j];
}
ratarataMK[i]/=nilai[0].length;
}
System.out.println("Nilai Mata Kuliah\n");
System.out.println("MK\tMinggu1\tMinggu2\tMinggu3\t
Rata-Rata");
for (int i=0; i<nilai.length; i++) {
System.out.print(MK[i] + "\t");
for (int j=0; j<nilai[0].length; j++) {
System.out.print(nilai[i][j] + "\t");
}
System.out.print(nf.format(ratarataMK[i])+"\n");
}
}
} |
Percobaan
3 : Mendapatkan informasi panjang elemen array
multi dimensi
public class
CariPanjangElemen {
public static void main(String args[]) {
int x[][][][]=new int[2][][][];
x[0]=new int[1][][];
x[0][0]=new int[2][];
x[0][0][0]=new int[3];
x[0][0][1]=new int[2];
x[1]=new int[2][][];
x[1][0]=new int[1][];
x[1][0][0]=new int[2];
x[1][1]=new int[2][];
x[1][1][0]=new int[1];
x[1][1][1]=new int[3];
System.out.println(x.length);
System.out.println(x[0].length);
System.out.println(x[0][0].length);
System.out.println(x[0][0][0].length);
System.out.println(x[0][0][1].length);
System.out.println();
System.out.println(x[1].length);
System.out.println(x[1][0].length);
System.out.println(x[1][0][0].length);
System.out.println(x[1][1].length);
System.out.println(x[1][1][0].length);
System.out.println(x[1][1][1].length);
}
} |
Percobaan
4 : Menangkap daftar argumen
public class
GetArguments {
public static void main(String args[]) {
System.out.println("Tanggal : " + args[0]);
System.out.println("Bulan : " + args[1]);
System.out.println("Tahun : " + args[2]);
}
}
Percobaan
5 : Melakukan pengkopian array
public class
CopyArray {
public static void main(String args[]) {
int[] array1 = { 7, 4, 8, 1, 4, 1, 4 }; int[]
array2 = new int[3];
System.arraycopy(array1,0,array2,0,3);
System.out.print("Array1 : ");
for (int i=0; i<array1.length; i++)
System.out.print(array1[i] + " "); System.out.println();
System.out.print("Array2 : ");
for (int i=0; i<array2.length; i++)
System.out.print(array2[i] + " ");
}
} |
Latihan
Latihan 1 : Mencari nilai rata-rata mata
kuliah dari daftar nilai siswa
Diketahui daftar nilai siswa sebagai berikut:
NRP |
NAMA |
RPL |
BD |
PBO |
1 |
AHMAD |
81 |
90 |
62 |
2 |
ADANG |
50 |
83 |
87 |
3 |
DANI |
89 |
55 |
65 |
4 |
EDI |
77 |
70 |
92 |
Buatlah program untuk menampilkan laporan sebagai berikut:
NRP |
RATA-RATA |
1 |
77.67 |
2 |
73.33 |
3 |
69.67 |
4 |
79.67 |
Latihan 2 : Menampilkan deret Fibonacci dengan array
Deret fibonanci adalah deret dimana dimulai dengan dua
angka, dimana bernilai 1
dan 1, kemudian deret ketiga ditentukan dari penjumlahan
kedua angka tersebut,
sedangkan deret keempat ditentukan dari dua angka sebelumnya
begitu seterusnya.
Sehingga didapatkan deret fibonanci sebagai berikut:
1 1 2 3 5 8 13 21 dan
seterusnya. Buatlah program untuk menampilkan bilangan
Fibonacci yang banyaknya sesuai dengan input dan harus
menggunakan array.
Contoh tampilan:
Masukkan jumlah deretan Fibonacci? 8
1 1 2 3 5 8 13 21
Masukkan jumlah deretan Fibonacci? 10
1 1 2 3 5 8 13 21 34 55
Tugas
Mendeteksi bilangan prima
Buatlah suatu program untuk mendeteksi
suatu bilangan itu termasuk bilangan prima
atau bukan.
Contoh tampilan:
Masukkan bilangan? 8
8 bukan termasuk bilangan prima
Masukkan bilangan? 11
11 adalah bilangan prima
Bab 7 Pengenalan
Pemrograman Berbasis Obyek |
POKOK BAHASAN
• Deklarasi class
• Deklarasi atribut
• Deklarasi metode
• Pengaksesan anggota obyek
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan dapat:
• Mendeklarasikan suatu class
• Mendeklarasikan suatu atribut
• Mendeklarasikan suatu metode
• Mengakses anggota suatu obyek
Dasar Teori
Deklarasi class dapat dilakukan dengan sintaks sebagai
berikut:
<modifier>
class <nama_class> {
[deklarasi_atribut]
[deklarasi_konstruktor]
[deklarasi_metode]
} |
Contoh:
Deklarasi atribut
dapat dilakukan dengan sintaks sebagai berikut:
<modifier>
<tipe> <nama_atribut> ;
Contoh:
public class Siswa {
public int nrp;
public String nama;
} |
Deklarasi
metode dapat dilakukan dengan sintaks sebagai berikut:
<modifier>
<return_type> <nama_metode> ([daftar_argumen])
{
[<statement>]
} |
Contoh:
public
class Siswa {
public int nrp;
public String nama;
public void info() {
System.out.println(“Ini siswa PENS”);
}
} |
Untuk dapat mengakses
anggota-anggota dari suatu obyek, maka harus dibuat
instance dari class tersebut terlebih dahulu. Berikut
ini adalah contoh pengaksesan anggota-anggota dari class
Siswa:
public
class Siswa {
public static void main(String args[]) {
Siswa it=new Siswa();
it.nrp=5;
it.nama=”Andi”; it.info();
}
} |
Percobaan
Percobaan
1 : Mengakses anggota suatu class
Amati program
dibawah ini:
public class
Siswa {
int nrp;
public void setNrp(int i) {
nrp=i;
}
}
public class
Test {
public static void main(String args[]) {
Siswa anak=new Siswa();
anak.setNrp(5);
System.out.println(anak.nrp);
}
} |
Percobaan 2 : Mengakses anggota suatu
class
Amati program dibawah ini:
public
class Siswa {
int nrp;
String nama;
public void setNrp(int i) {
nrp=i;
}
public void setNama(String i) {
nama=i;
}
} |
Percobaan 3 : Mengimplementasikan UML
class diagram dalam program
Berikut adalah sebuah UML class diagram
dari suatu kasus:
Siswa |
+nrp
: int |
+
Siswa(i : int)
+ setNrp(i : int)
+ getNrp() : int |
Dari class diagram tersebut, dapat diimplementasikan
ke dalam program sebagai berikut:
public
class Siswa {
public int nrp;
public Siswa(int i) {
nrp=i;
}
public void setNrp(int i) {
nrp=i;
}
public int getNrp() {
return nrp;
}
} |
Latihan
Latihan 1 : Mengimplementasikan UML class
diagram dalam program untuk
class Tabungan
Tabungan
|
+
saldo : int |
+
Tabungan(initsaldo : int) |
Transformasikan class diagram diatas ke
dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
public
class TesLatihan1 {
public static void main(String args[]) {
Tabungan tabungan=new Tabungan(5000); System.out.println("Saldo
awal : "+tabungan.saldo); tabungan.ambilUang(2300);
System.out.println("Jumlah uang yang diambil
: 2300");
System.out.println("Saldo sekarang : "
+ tabungan.saldo);
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Saldo
awal : 5000
Jumlah uang yang diambil : 2300 Saldo sekarang :
2700 |
Latihan 2 : Mengimplementasikan UML class
diagram dalam program untuk
class Mahasiswa
Mahasiswa
|
-
nrp : int
- nama : String |
+ Mahasiswa(i
: int, String n) + getNrp() : int
+ getNama(): String |
Transformasikan class diagram diatas
ke dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
public
class TesLatihan2 {
public static void main(String args[]) {
Mahasiswa mhs=new Mahasiswa(12345, "Jono");
System.out.println("NRP : " + mhs.getNrp());
System.out.println("Nama : " + mhs.getNama());
}
} |
Lakukan kompilasi pada program diatas
dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar.
Jika tidak sama, benahi
Latihan 3 : Mengimplementasikan UML class
diagram dalam program untuk
class Truk
Truk |
-
muatan : double
- muatanmaks : double |
+ Truk(beratmaks
: double)
+ getMuatan() : double
+ getMuatanMaks() : double
+ tambahMuatan(berat : double) |
Transformasikan class diagram diatas ke dalam bentuk
program?. Tulislah listing program berikut ini sebagai
pengetesan.
public
class TesLatihan3 {
public static void main(String args[]) {
Truk truk=new Truk(1000);
System.out.println("Muatan maksimal : "
+ truk.getMuatanMaks()); truk.tambahMuatan(500.0);
System.out.println("Tambah muatan : 500");
truk.tambahMuatan(350.0);
System.out.println("Tambah muatan : 350");
truk.tambahMuatan(100.0);
System.out.println("Tambah muatan : 100");
truk.tambahMuatan(150.0);
System.out.println("Tambah muatan : 150");
System.out.println("Muatan sekarang = "
+ truk.getMuatan());
}
} |
Lakukan kompilasi pada program diatas
dan jalankan. Jika tampilan di layar tampak seperti
dibawah ini, maka program anda sudah benar. Jika tidak
sama, benahi kembali program anda dan lakukan hal yang
sama seperti diatas.
Muatan
maksimal : 1000.0
Tambah muatan : 500
Tambah muatan : 350
Tambah muatan : 100
Tambah muatan : 150
Muatan sekarang = 950.0 |
Tugas
Tugas 1 : Mengimplementasikan
UML class diagram dalam program untuk
class Tabungan
Tabungan |
- saldo
: int |
+ Tabungan(initsaldo
: int) + getSaldo() : int
+ simpanUang(jumlah : int)
+ ambilUang(jumlah : int) : boolean |
Transformasikan class diagram diatas ke
dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
public
class TesTugas1 {
public static void main(String args[]) {
boolean status;
Tabungan tabungan=new Tabungan(5000);
System.out.println("Saldo awal : "+tabungan.getSaldo());
tabungan.simpanUang(3000);
System.out.println("Jumlah uang yang disimpan
: 3000"); status=tabungan.ambilUang(6000);
System.out.print("Jumlah uang yang diambil
: 6000"); if (status)
System.out.println(" ok");
else
System.out.println(" gagal"); tabungan.simpanUang(3500);
System.out.println("Jumlah uang yang disimpan
: 3500"); status=tabungan.ambilUang(4000);
System.out.print("Jumlah uang yang diambil
: 4000");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
status=tabungan.ambilUang(1600);
System.out.print("Jumlah
uang yang diambil : 1600"); if (status)
System.out.println(" ok");
else
System.out.println(" gagal"); tabungan.simpanUang(2000);
System.out.println("Jumlah uang yang disimpan
: 2000");
System.out.println("Saldo sekarang = "
+ tabungan.getSaldo());
}
} |
Lakukan kompilasi pada program diatas
dan jalankan. Jika tampilan di layar tampak seperti
dibawah ini, maka program anda sudah benar. Jika tidak
sama, benahi kembali program anda dan lakukan hal yang
sama seperti diatas.
Saldo
awal : 5000
Jumlah uang yang disimpan : 3000
Jumlah uang yang diambil : 6000 ok
Jumlah uang yang disimpan : 3500
Jumlah uang yang diambil : 4000 ok
Jumlah uang yang diambil : 1600 gagal Jumlah uang
yang disimpan : 2000
Saldo sekarang = 3500 |
Tugas 2 : Mengimplementasikan UML class
diagram dalam program untuk
class Truk
Truk
|
-
muatan : double
- muatanmaks : double |
muatan
dalam newtons |
+ Truk(beratmaks
: double)
+ getMuatan() : double muatan
+ getMuatanMaks() : double dalam
+ tambahMuatan(berat : double): boolean kilogram
+ newtsToKilo(berat : double) : double
+ kiloToNewts(berat : double) : double |
muatan
dalam kilogram |
Keterangan : 1 kilogram = 9,8 newtons
Transformasikan class diagram diatas ke
dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
public
class TesTugas2 {
public static void main(String args[]) {
Truk truk=new Truk(900);
boolean status;
System.out.println("Muatan maksimal : "
+ truk.getMuatanMaks()); status=truk.tambahMuatan(500.0);
System.out.print("Tambah muatan : 500");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
status=truk.tambahMuatan(300.0);
System.out.print("Tambah muatan : 300");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
status=truk.tambahMuatan(150.0);
System.out.print("Tambah muatan : 150");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
status=truk.tambahMuatan(50.0);
System.out.print("Tambah muatan : 50");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
System.out.println("Muatan sekarang = "
+ truk.getMuatan());
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Muatan
maksimal : 900.0
Tambah muatan : 500 ok
Tambah muatan : 300 ok
Tambah muatan : 150 gagal Tambah muatan : 50 ok
Muatan sekarang = 849.9999999999999
|
Bab
8 Dasar-dasar Pemrograman Berbasis Obyek |
POKOK BAHASAN
• Information hiding
• Enkapsulasi
• Constructor
• Overloading construktor
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan dapat:
• Menerapkan konsep enkapsulasi pada class
• Mendeklarasikan suatu constructor
Dasar Teori
Kita dapat menyembunyikan information dari suatu class
sehingga anggota-anggota class tersebut tidak dapat
diakses dari luar. Adapun caranya adalah cukup dengan
memberikan akses kontrol private ketika mendeklarasikan
suatu atribut atau method. Contoh:
Encapsulation (Enkapsulasi) adalah suatu
cara untuk menyembunyikan
implementasi detail dari suatu class. Enkapsulasi mempunyai
dua hal
mendasar, yaitu:
o information hiding
o menyediakan suatu perantara (method) untuk pengaksesan
data
Contoh:
public class Siswa {
private int nrp;
public void setNrp(int n) {
nrp=n;
}
}
|
Contructor (konstruktor) adalah suatu method yang pertama
kali dijalankan pada saat pembuatan suatu obyek. Konstruktor
mempunyai ciri yaitu:
o mempunyai nama yang sama dengan nama class
o tidak mempunyai return type (seperti void, int, double,
dan lain-lain)
Contoh:
public class Siswa {
private int nrp;
private String nama;
public Siswa(int n, String m) {
nrp=n;
nama=m;
}
} |
Suatu class dapat mempunyai lebih dari 1 konstruktor
dengan syarat daftar parameternya tidak boleh ada yang
sama. Contoh:
public
class Siswa {
private int nrp;
private String nama;
public Siswa(String m) {
nrp=0;
nama=””;
}
public Siswa(int n, String
m) {
nrp=n;
nama=m;
}
} |
Percobaan
Percobaan 1 : Melakukan enkapsulasi pada
suatu class
Mahasiswa |
+ nrp
: int
+ nama : String |
+ Mahasiswa(nrp
: int, nama : String) |
Jika enkapsulasi dilakukan pada class
diagram diatas, maka akan berubah menjadi:
Mahasiswa |
- nrp
: int
- nama : String |
+
Mahasiswa(nrp : int, nama : String) + getNrp()
: int
+ getNama(): String
+ setNrp(nrp : int)
+ setNama(nama : String) |
Percobaan 2 : Melakukan overloading constructor
Mahasiswa |
- nrp
: int
- nama : String |
+ Mahasiswa()
+ Mahasiswa(nama : String)
+ Mahasiswa(nrp : int, nama : String) |
Dari class diagram tersebut, dapat diimplementasikan
ke dalam program sebagai berikut:
public
class Mahasiswa {
private int nrp;
private String nama;
public Mahasiswa() {
nrp=0;
nama=””;
}
public Mahasiswa(String nama) {
nrp=0;
this.nama=nama;
}
public Mahasiswa(int nrp, String nama) {
this.nrp=nrp;
this.nama=nama;
}
} |
Latihan
Mengimplementasikan UML class diagram
dalam program untuk class
Kalender
Kalender
|
+ tanggal
: int
+ bulan : int
+ tahun : int |
+ Kalender(tanggal
: int)
+ Kalender(bulan : int, tahun : int)
+ Kalender(tanggal : int, bulan : int, tahun : int)
|
Dari class diagram diatas, desainlah
suatu class yang memenuhi konsep enkapsulasi. Untuk
nilai inisialisasi, dipakai 1-1-2000. Pakailah kata
kunci this untuk mempersingkat pengkodean. Tulislah
listing program berikut ini sebagai pengetesan.
public
class TesLatihan {
public static String getTime(Kalender kal) {
String tmp;
tmp=kal.getTanggal() + "-" +
kal.getBulan() + "-" +
kal.getTahun();
return tmp;
}
public static
void main(String args[]) {
Kalender kal=new Kalender(8);
System.out.println("Waktu awal : " +
getTime(kal)); kal.setTanggal(9);
System.out.println("1 hari setelah waktu
awal : " + getTime(kal)); kal=new Kalender(6,2003);
System.out.println("Waktu berubah : "
+ getTime(kal)); kal.setBulan(7);
System.out.println("1 bulan setelah itu :
" + getTime(kal)); kal=new Kalender(20,10,2004);
System.out.println("Waktu berubah : "
+ getTime(kal)); kal.setTahun(2005);
System.out.println("1 tahun setelah itu :
" + getTime(kal));
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda.
Waktu
awal : 8-1-2000
1 hari setelah waktu awal : 9-1-2000 Waktu berubah
: 1-6-2003
1 bulan setelah itu : 1-7-2003
Waktu berubah : 20-10-2004
1 tahun setelah itu : 20-10-2005 |
POKOK BAHASAN
• Package
• Import class
• Kata kunci this
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan
dapat:
• Memahami konsep package dan import
• Menggunakan kata kunci this
Dasar Teori
Package adalah suatu cara untuk memenej
class-class yang kita buat. Package akan sangat bermanfaat
jika class-class yang kita buat sangat banyak sehingga
perlu dikelompokkan berdasarkan kategori tertentu. Contoh:
package
it;
public class Siswa {
…
} |
package
telkom;
public class Siswa {
.....
}
|
Yang perlu kita perhatikan pada saat
deklarasikan package, bahwa class tersebut harus disimpan
pada suatu direktori yang sama dengan nama package-nya.
Suatu class dapat meng-import class lainnya sesuai dengan
nama package yang dipunyainya. Contoh:
import
it.Siswa;
public class IsiData {
…
} |
Satu hal yang perlu kita ketahui, pada saat kita ingin
meng-import suatu class dalam suatu package, pastikan
letak package tersebut satu direktori dengan class yang
ingin meng-import.
Kata kunci this sangat berguna untuk menunjukkan suatu
member dalam class-nya sendiri. This dapat digunakan
baik untuk data member maupun untuk function member,
serta dapat juga digunakan untuk konstruktor. Adapun
format penulisannya adalah:
this.data_member
this.function_member()
this()
Contoh:
class Parent {
merujuk pada data member
merujuk pada function member merujuk pada konstruktor
public int x = 5;
}
class Child extends Parent {
public int x = 10;
public void Info() {
System.out.println(super.x);
}
} |
Percobaan
Percobaan 1 : Menggunakan kata kunci this
Mahasiswa |
+ nrp
: int
+ nama : String |
+ Mahasiswa(nrp
: int, nama : String) |
Dari class diagram tersebut, dapat diimplementasikan
ke dalam program sebagai berikut:
public
class Mahasiswa {
public int nrp;
public String nama;
public Mahasiswa(int
nrp, String nama) {
this.nrp=nrp;
this.nama=nama;
}
} |
Percobaan 2 : Memakai kata kunci this
pada overloading constructor
Mahasiswa
|
- nrp
: int
- nama : String |
+ Mahasiswa()
+ Mahasiswa(nama : String)
+ Mahasiswa(nrp : int, nama : String) |
Dari class diagram tersebut, dapat diimplementasikan
ke dalam program sebagai berikut:
public
class Mahasiswa {
private int nrp;
private String nama;
public Mahasiswa() {
this(0,””);
}
public Mahasiswa(String nama) {
this(0,nama);
}
public Mahasiswa(int
nrp, String nama) {
this.nrp=nrp;
this.nama=nama;
}
} |
Percobaan 3 : Menggunakan package dan
import
Sekolah |
|
Kelas |
<has> |
Mahasiswa |
-
kodekelas : int
- namakelas : String
- mahasiswa : Mahasiswa
|
-
nrp : int
- nama : String |
+
Kelas(kode : int, nama : String) +setMhs(mhs:Mahasiswa)
|
+
Mahasiswa(nrp : int, nama : String) |
Dari class diagram tersebut, dapat diimplementasikan
ke dalam program dibawah ini.
Sebelum melakukan kompilasi, daftarkan direktori tempat
package diatas disimpan.
package
sekolah;
public class Kelas {
private int kodekelas;
private String namakelas;
private Mahasiswa mahasiswa;
public Kelas(int kode, {
String nama) {
this.kodekelas=kode; this.nama=nama;
}
public void setMhs
(Mahasiswa mhs) {
this.mahasiswa=mhs;
}
} |
|
pPackage
sekolah;
public class Mahasiswa {
private int nrp;
private String nama;
{ this.nrp=nrp;
this.namakelas=nama;
}
}
|
Latihan
Mengimplementasikan UML class diagram dalam program
untuk package perbankan
Perbankan |
|
Nasabah |
<has> |
Tabungan |
-
namaAwal : String
- namaAkhir : String
- tabungan : Tabungan |
-
saldo : int |
+
Nasabah(namaAwal : String,
namaAkhir : String)
+ getNamaAwal() : String
+ getNamaAkhir() : String
+ getTabungan() : Tabungan
+ setTabungan(tabungan : tabungan)
program berikut ini sebagai pengetesan. |
+
Tabungan(saldo : int)
+ getSaldo() : int
+ simpanUang(jumlah : int)
+ ambilUang(jumlah : int)
: boolean |
import
perbankan.*;
public class TesLatihan {
public static void main(String args[]) {
int tmp;
boolean status;
Nasabah nasabah=new Nasabah("Agus","Daryanto");
System.out.println("Nasabah atas nama : "
+
nasabah.getNamaAwal() + " " +
nasabah.getNamaAkhir());
nasabah.setTabungan(new Tabungan(5000));
tmp=nasabah.getTabungan().getSaldo();
System.out.println("Saldo awal : " +
tmp);
nasabah.getTabungan().simpanUang(3000);
System.out.println("Jumlah uang yang disimpan
: 3000");
status=nasabah.getTabungan().ambilUang(6000);
System.out.print("Jumlah uang yang diambil
: 6000");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
nasabah.getTabungan().simpanUang(3500);
System.out.println("Jumlah uang yang disimpan
: 3500");
status=nasabah.getTabungan().ambilUang(4000);
System.out.print("Jumlah uang yang diambil
: 4000");
if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
status=nasabah.getTabungan().ambilUang(1600);
System.out.print("Jumlah uang yang diambil
: 1600"); if (status)
System.out.println(" ok");
else
System.out.println(" gagal");
nasabah.getTabungan().simpanUang(2000);
System.out.println("Jumlah uang yang disimpan
: 2000"); tmp=nasabah.getTabungan().getSaldo();
System.out.println("Saldo sekarang = "
+ tmp);
}
}
|
Lakukan
kompilasi pada program diatas dan jalankan. Jika
tampilan di layar tampak seperti dibawah ini,
maka program anda sudah benar. Jika tidak sama,
benahi kembali program anda dan lakukan hal yang
sama seperti diatas.
Nasabah atas
nama : Agus Daryanto
Saldo awal : 5000
Jumlah uang yang disimpan : 3000
Jumlah uang yang diambil : 6000 ok
Jumlah uang yang disimpan : 3500
Jumlah uang yang diambil : 4000 ok
Jumlah uang yang diambil : 1600 gagal Jumlah uang
yang disimpan : 2000
Saldo sekarang = 3500 |
Tugas
Mengembangkan package perbankan dengan
tambahan class Bank
perbankan
Perbankan |
|
Bank |
|
-
nasabah : Nasabah[]
- jumlahNasabah : int |
+
Bank()
+ tambahNasabah(namaAwal : String,
namaAkhir : String)
+ getJumlahNasabah() : int
+ getNasabah(indeks : int) : Nasabah
|
----melayani- Nasabah ----has------
tabungan |
Transformasikan class diagram diatas ke
dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
import
perbankan.*;
public class TesTugas {
public static void main(String args[]) {
Bank bank=new Bank();
bank.tambahNasabah("Agus", "Daryanto");
bank.getNasabah(0).setTabungan(new Tabungan(5000));
bank.tambahNasabah("Tuti", "Irawan");
bank.getNasabah(1).setTabungan(new Tabungan(7000));
bank.tambahNasabah("Ani", "Ratna");
bank.getNasabah(2).setTabungan(new Tabungan(4000));
bank.tambahNasabah("Bambang", "Darwaman");
bank.getNasabah(3).setTabungan(new Tabungan(6500));
System.out.println("Jumlah nasabah = "
+
bank.getJumlahNasabah());
for (int i=0; i<bank.getJumlahNasabah(); i++
) {
System.out.println("Nasabah ke-"+(i+1)+"
: " +
bank.getNasabah(i).getNamaAwal() + " "+
bank.getNasabah(i).getNamaAkhir() + " ; Saldo
= " +
bank.getNasabah(i).getTabungan().getSaldo());
}
}
} |
Lakukan kompilasi pada program diatas
dan jalankan. Jika tampilan di layar tampak seperti
dibawah ini, maka program anda sudah benar. Jika tidak
sama, benahi kembali program anda dan lakukan hal yang
sama seperti diatas.
Jumlah
nasabah = 4
Nasabah ke-1 : Agus Daryanto ; Saldo = 5000
Nasabah ke-2 : Tuti Irawan ; Saldo = 7000
Nasabah ke-3 : Ani Ratna ; Saldo = 4000
Nasabah ke-4 : Bambang Darwaman ; Saldo = 6500
|
Bab
10 Konsep Inheritance |
POKOK BAHASAN
• Pengertian dasar inheritance
• Deklarasi inheritance
• Single inheritance
• Kapan menerapkan inheritance?
• Pengaksesan member dari parent class • Kontrol pengaksesan
• Kata kunci super
• Konstruktor tidak diwariskan
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan dapat:
• Memahami dan menerapkan konsep inheritance dalam pemrograman
• Melakukan pengontrolan akses pada pengkodean
• Memahami pengaksesan member pada parent class • Memahami
konsep package dan import
• Menggunakan kata kunci super
• Menghindari kesalahan pada pewarisan konstruktor
Dasar Teori
Konsep inheritance ini mengadopsi dunia
riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek
turunan. Dengan konsep inheritance, sebuah class dapat
mempunyai class turunan. Suatu class yang mempunyai
class
turunan dinamakan parent class atau base class. Sedangkan
class turunan itu sendiri seringkali disebut subclass
atau child class. Suatu subclass dapat mewarisi apa-apa
yang dipunyai oleh parent class-nya, sehingga member
dari
suatu subclass adalah terdiri dari apa-apa yang ia punyai
dan juga apa-apa yang ia warisi dari class parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass
adalah tidak lain hanya memperluas (extend) parent class-nya.
Di dalam Java 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. Berikut adalah contoh deklarasi
inheritance:
Contoh:
public
class B extends A {
} |
Contoh diatas memberitahukan kompiler
Java bahwa kita ingin meng-extend class A ke class B.
Dengan kata lain, class B adalah subclass (class turunan)
dari class A, sedangkan class A adalah parent class
dari class B.
Java hanya memperkenankan adanya single inheritance.
Konsep single inheritance hanya memperbolehkan suatu
sublass mempunyai satu parent class. Dengan konsep single
inheritance ini, masalah pewarisan akan dapat diamati
dengan mudah.
Dalam konsep dasar inheritance dikatakan bahwa suatu
subclass adalah tidak lain hanya memperluas (extend)
parent class-nya. Contoh :
public
class Pegawai {
public String nama;
public double gaji;
} |
public
class Manajer extends Pegawai {
public String departemen;
} |
Pada saat class Manajer menurunkan atau
memperluas (extend) class Pegawai, maka ia mewarisi
data member yang dipunyai oleh class Pegawai. Dengan
demikian, class Manajer mempunyai data member yang diwarisi
oleh Pegawai (nama, gaji), ditambah dengan data member
yang ia punyai (departemen). Pengaksesan member yang
ada di parent class dari subclass-nya tidak jauh berbeda
dengan pengaksesan member subclass itu sendiri. Contoh:
Suatu parent class dapat tidak mewariskan
sebagian member-nya kepada subclass-nya. Sejauh mana
suatu member dapat diwariskan ke class lain, ataupun
suatu member dapat diakses dari class lain, sangat berhubungan
dengan access control (kontrol pengaksesan). Di dalam
java, kontrol pengaksesan dapat digambarkan dalam tabel
berikut ini:
Modifier |
class
yang sama |
package
yang sama |
subclass |
class
manapun |
private |
v |
|
|
|
default |
v |
v |
|
|
protected |
v |
v |
v |
|
public |
v |
v |
v |
v |
Kata kunci super dipakai untuk merujuk
pada member dari parent class, sebagaimana kata kunci
this yang dipakai untuk merujuk pada member dari class
itu sendiri. Adapun format penulisannya adalah sebagai
berikut:
super.data_member merujuk pada data member pada parent
class
super.function_member() merujuk pada function member
pada parent class
super() merujuk pada konstruktor pada parent class
Contoh:
public class Siswa {
private int nrp;
public setNrp(int
nrp) {
this.nrp=nrp;
}
} |
Percobaan
Percobaan
1 : Menggunakan kata kunci super
Berikut ini
listing penggunaan kata kunci super.
class Parent
{
public int x = 5;
}
class Child extends Parent {
public int x = 10;
public void Info(int x) {
System.out.println("Nilai x sebagai parameter
= " + x);
System.out.println("Data member x di class
Child = " + this.x);
System.out.println("Data member x di class
Parent = " +
super.x);
}
}
public class NilaiX {
public static void main(String args[]) {
Child tes = new Child();
tes.Info(20);
}
}
|
Ketika program tersebut dijalankan, akan tampak hasil
seperti dibawah ini :
Nilai x sebagai parameter = 20
Data member x di class Child = 10
Data member x di class Parent = 5
Percobaan
2 : Kontrol pengaksesan
Buatlah class
Pegawai seperti dibawah ini:
public class
Pegawai {
private String nama;
public double gaji;
} |
Kemudian buatlah class Manajer seperti
ini dibawah ini.
public class Manajer extends
Pegawai {
public String departemen;
public void IsiData(String n, String d) {
nama=n;
departemen=d;
}
} |
Sekarang cobalah untuk mengkompilasi class
Manajer diatas. Apa yang terjadi?.
Pesan kesalahan akan muncul seperti ini:
Manajer.java:5:
nama has private access in Pegawai
nama=n;
Ini membuktikan bahwa class Manajer tidak mewarisi
data member nama dari parent class-nya (Pegawai).
|
Percobaan 3 : Konstruktor tidak diwariskan
Buatlah class kosong bernama Parent seperti
dibawah:
Buatlah class Child yang menurunkan class
Parent seperti dibawah ini:
public
class Child extends Parent {
int x;
public Child() {
x = 5;
super();
}
} |
Lakukan kompilasi pada Child diatas. Apa yang terjadi?.
Pasti disana terjadi error. Sekarang ubahlah sedikit
class Child diatas seperti dibawah ini:
public
class Child extends Parent {
int x;
public Child() {
super();
x = 5;
}
} |
Setelah dikompilasi, anda tidak mendapatkan error sebagaimana
yang sebelumnya.
Ini yang harus kita perhatikan bahwa untuk pemanggilan
konstruktor parent class,
kita harus melakukan pemanggilan tersebut di baris pertama
pada konstruktor
subclass.
Latihan
Mengimplementasikan UML class diagram dalam program
untuk package perbankan
PenyimpananUang
|
-
tingkatBunga : double |
+ PenyimpananUang(saldo
: int,
tingkatBunga : double)
+ cekUang() : double |
|
Ubahlah mode akses atribut saldo pada
Tabungan menjadi protected. Lalu Transformasikan class
diagram diatas ke dalam bentuk program?. Tulislah listing
program berikut ini sebagai pengetesan.
import
perbankan.*;
public class
TesLatihan {
public static void main(String args[]) {
PenyimpananUang tabungan=new PenyimpananUang(5000,8.5/100);
System.out.println("Uang yang ditabung :
5000");
System.out.println("Tingkat bunga sekarang
: 8.5%");
System.out.println("Total uang anda sekarang
: " +
tabungan.cekUang());
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas
Uang yang ditabung : 5000
Tingkat bunga sekarang : 8.5%
Total uang anda sekarang : 5425.0 |
.
Tugas
Mengimplementasikan UML class diagram dalam program
untuk package perbankan
PengambilanUang |
-
proteksi : int |
+
PengambilanUang(saldo : int)
+ PengambilanUang(saldo : int,
tingkatBunga : int)
+ getSaldo() : int
+ ambilUang(jumlah : int) : boolean |
|
Transformasikan class diagram diatas ke
dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
import
perbankan.*;
public class TesTugas {
public static void main(String args[]) {
PengambilanUang tabungan=new PengambilanUang(5000,1000);
System.out.println("Uang yang ditabung : 5000");
System.out.println("Uang yang diproteksi :
1000");
System.out.println("-----------------");
System.out.println("Uang yang akan diambil
: 4500 " +
tabungan.ambilUang(4500));
System.out.println("Saldo sekarang : "
+ tabungan.getSaldo()); System.out.println("-----------------");
System.out.println("Uang yang akan diambil
: 2500 " +
tabungan.ambilUang(2500));
System.out.println("Saldo sekarang : "
+ tabungan.getSaldo());
}
} |
Lakukan kompilasi pada program diatas
dan jalankan. Jika tampilan di layar tampak seperti
dibawah ini, maka program anda sudah benar. Jika tidak
sama, benahi kembali program anda dan lakukan hal yang
sama seperti diatas.
Uang yang ditabung : 5000
Uang yang diproteksi : 1000
Uang yang akan diambil : 4500 false
Saldo sekarang : 5000
Uang yang akan diambil : 2500 true Saldo sekarang
: 2500 |
Bab
11 Overloading dan Overriding |
POKOK BAHASAN
• Overloading
• Overriding
• Aturan tentang overridden method
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan
dapat:
• Memahami tentang overloading
• Memahami tentang overriding
• Memahami aturan tentang overridden
Dasar Teori
Overloading adalah suatu keadaan dimana
beberapa method sekaligus dapat mempunyai nama yang
sama, akan tetapi mempunyai fungsionalitas yang berbeda.
Contoh penggunaan overloading dilihat dibawah ini:
Gambar(int
t1) 1 parameter titik, untuk menggambar titik
Gambar(int t1,int t2) 2 parameter titik, untuk menggambar
garis
Gambar(int t1,int t2,int t3) 3 parameter titik,
untuk menggambar
segitiga
Gambar(int t1,int t2,int t3,int t4) 4 parameter
titik, untuk menggambar persegi empat
|
Overloading ini dapat terjadi pada class yang sama atau
pada suatu parent
class dan subclass-nya. Overloading mempunyai ciri-ciri
sebagai berikut:
1. Nama method harus sama
2. Daftar parameter harus berbeda
3. Return type boleh sama, juga boleh berbeda |
Overriding adalah suatu keadaan dimana method pada subclass
menolak method pada parent class-nya. Overriding mempunyai
ciri-ciri sebagai berikut :
1. Nama
method harus sama
2. Daftar parameter harus sama
3. Return type harus sama |
Berikut ini contoh terjadinya overriding dimana method
Info() pada class Child meng-override method Info()
pada class parent:
class Parent {
public void Info() {
System.out.println(“Ini class Parent”);
}
}
class Child extends Parent {
public void Info() {
System.out.println(“Ini class Child”);
}
} |
Method yang terkena override (overridden method) diharuskan
tidak boleh mempunyai modifier yang lebih luas aksesnya
dari method yang meng-override (overriding method).
Percobaan
Melakukan overloading pada method
Tulislah listing program berikut ini dan amati yang
terjadi pada saat terjadinya overloading pada method.
import
java.awt.Point;
public class Segiempat {
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
public void buatSegiempat(int x1, int y1, int
x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public void buatSegiempat(Point topLeft, Point
bottomRight) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = bottomRight.x;
y2 = bottomRight.y;
}
public void
buatSegiempat(Point topLeft, int w, int h) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = (x1 + w);
y2 = (y1 + h);
}
void cetakSegiempat(){
System.out.print("Segiempat: <" +
x1 + ", " + y1);
System.out.println(", " + x2 + ",
" + y2 + ">");
}
public static
void main(String[] arguments) {
Segiempat rect = new Segiempat();
System.out.println("Buat segiempat dengan
koordinat (25,25)
dan (50,50)");
rect.buatSegiempat(25, 25, 50, 50); rect.cetakSegiempat();
System.out.println();
System.out.println("Buat segiempat dengan
point (10,10) dan point (20,20):");
rect.buatSegiempat(new Point(10,10), new Point(20,20));
rect.cetakSegiempat();
System.out.println();
System.out.print("Buat segiempat dengan 1
point (10,10), koodinat (50,50)");
rect.buatSegiempat(new Point(10,10), 50, 50);
rect.cetakSegiempat();
}
} |
Ketika program tersebut dijalankan, akan tampak hasil
seperti dibawah ini :
Buat
segiempat dengan koordinat (25,25) dan (50,50)
Segiempat: <25, 25, 50, 50>
Buat segiempat dengan point (10,10)
dan point (20,20): Segiempat: <10, 10, 20,
20>
Buat segiempat dengan 1 point (10,10),
koodinat (50,50)Segiempat: <10, 10, 60, 60>
|
Latihan
Mengimplementasikan UML class diagram
dalam program
Orang
|
#
nama : String
# umur : int |
+
Orang(nama : String)
+ Orang(nama : String, umur : int) |
^
|
|
Dosen |
-
nip : int |
+
Dosen(nama : String)
+ Dosen(nama : String, nip : int) + Dosen(nama
: String, nip : int, umur : int)
+ Info() |
|
Transformasikan class diagram diatas
ke dalam bentuk program?. Tulislah listing program berikut
ini sebagai pengetesan.
public
class TesLatihan {
public static void main(String args[]) {
System.out.println("Masukkan identitas dosen
1 : Agus"); Dosen dosen1=new Dosen("Agus");
System.out.println("Masukkan identitas dosen
2 : Budi,
NIP. 1458");
Dosen dosen2=new Dosen("Budi", 1458);
System.out.println("Masukkan identitas dosen
3 : Iwan,
NIP. 1215, umur 47");
Dosen dosen3=new Dosen("Iwan", 1215, 47);
System.out.println();
dosen1.Info();
System.out.println();
dosen2.Info();
System.out.println();
dosen3.Info();
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Masukkan identitas
dosen 1 : Agus
Masukkan identitas dosen 2 : Budi, NIP. 1458
Masukkan identitas dosen 3 : Iwan, NIP. 1215,
umur 47
Nama : Agus
NIP : -
Umur : -
Nama : Budi
NIP : 1458
Umur : -
Nama : Iwan
NIP : 1215
Umur : 47 |
POKOK BAHASAN
• Konsep dasar polimorfisme
• Virtual Method Invocation
• Polymorphic arguments
• Pernyataan instanceof
• Casting object
TUJUAN BELAJAR
Dengan praktikum ini mahasiswa diharapkan dapat:
• Memahami dan menerapkan konsep polimorfisme dalam
pemrograman
• Memahami proses terjadinya Virtual Method Invocation
• Memahami dan menerapkan polymorphic arguments dalam
pemrograman
• Memahami penggunaan instanceof dan cara melakukan
casting object
Dasar Teori
Polymorphism (polimorfisme) adalah kemampuan
untuk mempunyai
beberapa bentuk class yang berbeda. Polimorfisme ini
terjadi pada saat suatu
obyek bertipe parent class, akan tetapi pemanggilan
constructornya melalui subclass. Misalnya deklarasi
pernyataan berikut ini:
Employee employee=new Manager();
dimana Manager() adalah kontruktor pada class Manager
yang merupakan subclass dari class Employee.
Virtual Method Invocation (VMI) bisa terjadi jika terjadi
polimorfisme dan
overriding. Pada saat obyek yang sudah dibuat tersebut
memanggil
overridden method pada parent class, kompiler Java akan
melakukan
invocation (pemanggilan) terhadap overriding method
pada subclass, dimana
yang seharusnya dipanggil adalah overridden method.
Berikut contoh
terjadinya VMI:
class Parent {
int x = 5;
public void Info() {
System.out.println(“Ini class Parent”);
}
}
class Child extends Parent {
int x = 10;
public void Info() {
System.out.println(“Ini class Child”);
}
}
public class Tes {
public static void main(String args[]) {
Parent tes=new Child();
System.out.println(“Nilai x = “ + tes.x); tes.Info();
}
} |
Hasil dari running program diatas adalah
sebagai berikut:
Nilai
x = 5
Ini class Child |
Polymorphic arguments adalah tipe suatu
parameter yang menerima suatu
nilai yang bertipe subclass-nya. Berikut contoh dari
polymorphics arguments:
class Pegawai
{
…
}
class Manajer extends Pegawai {
…
}
public class Tes {
public static void Proses(Pegawai peg) {
…
}
public static void main(String args[]) {
Manajer man = new Manajer();
Proses(man);
}
} |
Pernyataan instanceof sangat berguna untuk mengetahui
tipe asal dari suatu polymorphic arguments. Untuk lebih
jelasnya, misalnya dari contoh program sebelumnya, kita
sedikit membuat modifikasi pada class Tes dan ditambah
sebuah class baru Kurir, seperti yang tampak dibawah
ini:
…
class Kurir extends Pegawai {
…
}
public class Tes {
public static void Proses(Pegawai peg) {
if (peg instanceof Manajer) {
…lakukan tugas-tugas manajer…
} else if (peg instanceof Kurir) {
…lakukan tugas-tugas kurir…
} else {
…lakukan tugas-tugas lainnya…
}
}
public static
void main(String args[]) {
Manajer man = new Manajer();
Kurir kur = new Kurir(); Proses(man);
Proses(kur);
}
} |
Seringkali pemakaian instanceof diikuti dengan casting
object dari tipe
parameter ke tipe asal. Misalkan saja program kita sebelumnya.
Pada saat kita
sudah melakukan instanceof dari tipe Manajer, kita dapat
melakukan casting
object ke tipe asalnya, yaitu Manajer. Caranya adalah
seperti berikut:
…
if (peg instanceof Manajer) {
Manajer man = (Manajer) peg;
…lakukan tugas-tugas manajer…
}
… |
Percobaan
Memahami proses terjadinya Virtual Method
Invocation
Tulislah listing program berikut ini dan amati yang
terjadi pada saat terjadinya Virtual Method Invocation.
class Parent
{
int x = 5;
public void Info() {
System.out.println(“Ini class Parent”);
}
}
class Child extends Parent {
int x = 10;
public void Info() { System.out.println(“Ini class
Child”);
}
}
public class Tes {
public static void main(String args[]) {
Parent tes=new Child();
System.out.println(“Nilai x = “ + tes.x); tes.Info();
}
} |
Ketika program tersebut dijalankan, akan tampak hasil
seperti dibawah ini :
Nilai
x = 5
Ini class Child |
Latihan
Mengimplementasikan UML class diagram
dalam program
Suatu program terdiri dari class Pegawai sebagai parent
class, dan class Manajer dan class Kurir sebagai subclass.
Buatlah suatu program yang menerapkan konsep polymorphic
argument sebagaimana yang telah disinggung dalam pembahasan
sebelumnya.
Tugas
Mengimplementasikan UML class diagram
dalam program
Pegawai
|
# nama : String
# gaji : int |
+ Pegawai(nama : String,
gaji : int) + infoGaji() : int |
Manajer
|
- tunjangan
: int |
+ Manajer(nama
: String, gaji : int,
tunjangan : int)
+ infoGaji() : int
+ infoTunjangan() : int |
Programmer |
-
bonus : int |
+ Programmer(nama
: String, gaji : int, bonus : int)
+ infoGaji() : int
+ infoBonus()
: int |
|
Transformasikan
class diagram diatas ke dalam bentuk program?. Tulislah
listing program berikut ini sebagai pengetesan.
public
static void main(String args[]) {
Manajer man=new Manajer("Agus",800,50);
Programmer prog=new Programmer("Budi",600,30);
Bayaran hr=new Bayaran();
System.out.println("Bayaran untuk Manajer :
" +
hr.hitungBayaran(man));
System.out.println("Bayaran untuk Programmer
: " +
hr.hitungBayaran(prog));
}
} |
Lakukan kompilasi pada program diatas dan jalankan.
Jika tampilan di layar tampak seperti dibawah ini, maka
program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Bayaran untuk Manajer : 850
Bayaran untuk Programmer : 630 |