Konsep Lanjut
Pemrograman Objek
Restyandito
e-mail : dito@ukdw.ac.id website : http://lecturer.ukdw.ac.id/~dito
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 2
Constructor
Constructor merupakan metode khusus yang
memiliki nama sama dengan kelasnya. Jika kita
tidak mengkodekan sebuah constructor, JAVA
akan membuat sebuah constructor default untuk
kita. Constructor default tidak melakukan
apa-apa, namun memungkinkan semua variabel yang
tidak diinisialisasi dalam deklarasi diberi suatu
nilai default.
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 3
class Mahasiswa { private String nama = ""; private int nim = 0; private static int NIM = 0; private double ipk = 0.0;
public Mahasiswa() { this.nim = ++NIM; } public Mahasiswa(String na, double i) {
this.nama = na; this.ipk = i; this.nim = ++NIM; } public void LihatData() {
System.out.println("Nama : " + nama + "\tNIM : " + nim + "\tIPK : " + ipk ); }
}
Constructor
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 4
public class MahasiswaInfo { public static void main(String args[]) {
Mahasiswa mhs1 = new Mahasiswa( "Dinda“ , 3.4 ); Mahasiswa mhs2 = new Mahasiswa( "Ninda“ , 3.25 ); Mahasiswa mhs3 = new Mahasiswa();
mhs1.LihatData(); mhs2.LihatData(); mhs3.LihatData(); } }
Constructor
1. Buatlah suatu class Mobil dengan atribut berupa pabrik,
tipe, mesin dan kapasitas penumpang.
2. Buatlah suatu constructor dengan 4 parameter untuk
menset nilai dari pabrik, tipe, mesin dan kapasitas
penumpang.
3. Buatlah suatu method untuk menampilkan atribut Mobil.
4. Buatlah 2 buah instance object, sedan dengan atribut
Honda, JAZZ, 2000CC, 5 penumpang dan MPV dengan
atribut VW,Caravelle,3000CC, 7 penumpang.
5. Tampilkan atribut kedua buah instance tersebut (sedan
dan MPV)
Class Activity
Pemrograman berorientasi obyek adalah
sekumpulan class-clas yang saling berintarksi.
Ada banyak cara suatu class dapat berinteraksi
dengan class lainnya, seperti pewarisan
(GenSpec), agregasi (WholePart) dan asosiasi
(instance/ message connection)
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 7
Pewarisan merupakan hubungan antar class
dimana ciri-ciri dan sifat dari class induknya
diturunkan ke class anaknya.
Pewarisan
- nama : String = “” - alamat : String = “” - jumAnak : int = 0 - noInduk : int = 0 Pegawai+ Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData()
+ lihatNama()
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 8
Pewarisan
- gajiHarian : int = 0 - hariKerja : int = 0
Pegawai Harian
+ PegawaiHarian(nama:String, alamat:String, jumAnak:int, gajiHarian:int, hariKerja:int) + lihatData() - nama : String = “” - alamat : String = “” - jumAnak : int = 0 - noInduk : int = 0 Pegawai
+ Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData()
+ lihatNama()
Catatan: + (plus) = public, – (dash) = private, # (compound) = protected
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 9
Pewarisan
class Pegawai { private String nama; private String alamat; private int jumAnak; private int noInduk; private static int no = 0;
public Pegawai(String n, String a, int x) { this.nama = n; this.alamat = a; this.jumAnak = x; this.noInduk = ++no; }
Contoh:
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 10
Pewarisan
public void lihatData() {
System.out.print("nomor: " + this.noInduk); System.out.print("\tnama: " + this.nama); System.out.print("\t\talamat: " + this.alamat); System.out.print("\t\tanak: " + this.jumAnak + "\n\n"); }
public void lihatNama() {
System.out.println("\t\tnama: " + this.nama + "\n\n"); }
}
Pewarisan
class PegawaiHarian extends Pegawai { int gajiHarian;
int hariKerja;
public PegawaiHarian(String n, String a, int x, int gaji, int hari) { super(n, a, x);
this.gajiHarian = gaji; this.hariKerja = hari; }
public void lihatData() { super.lihatData(); System.out.print("gaji: " + this.gajiHarian); System.out.print("\thari: " + this.hariKerja + "\n\n"); } }
Pewarisan
public class DataPegawai {
public static void main(String[] args) { Pegawai emp1 =
new Pegawai("Dini", "Jl.Markisa 26", 2); Pegawai emp2 =
new Pegawai("Dono", "Jl.Solo 345",6); PegawaiHarian emp3 =
new PegawaiHarian ("Dana", "Jl.Bulan 44", 8, 50000, 40); emp1.lihatData(); emp2.lihatData(); emp3.lihatData(); emp3.lihatNama(); } }
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 13
Polymorphism
( revisited )
Hewan
Anjing
Anjing coki = new Anjing() ; Hewan coki = new Anjing() ;
Hewan lumping = new Kuda() ;
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 14
Polymorphism
( revisited )
Hewan[ ] binatang = new Hewan[5]; binatang[0] = new Serigala(); binatang[1] = new Anjing(); binatang[2] = new Kucing(); binatang[3] = new KudaNil(); binatang[4] = new Singa();
for ( int i = 0; i < binatang.length; i++ ) { binatang[i].makan();
binatang[i].bersuara(); }
Dengan polymorphism, reference type dapat
merupakan superclass dari object type yang
digunakan
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 15
Polymorphism
( revisited )
class DokterHewan {
public void menyuntik ( Hewan a) { // mengobati hewan
a.bersuara() ; }
}
class PemilikHewan {
public void memeriksakanHewan() { DokterHewan d = new DokterHewan(); Anjing a = new Anjing(); d.menyuntik(a); Kucing k = new Kucing(); d.menyuntik(k); }
}
Polymorphism memungkinkan pembuatan subclass
baru, tanpa harus merubah program utama.
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 16
Suatu class dikatakan memiliki hubungan
agregasi (aggregation) apabila kelas tersebut
berisi sebuah obyek dari kelas lain. Agregasi
secara umum menunjukkan suatu hubungan
one-to-many atau dikenal dengan istilah
Whole-Part.
Agregasi
Agregasi
Roda Mobil 1..* Modul KursusAgregasi
Suatu bentuk khusus dari agregasi adalah
komposisi (composition), dimana suatu bagian
dari class tidak dapat berdiri sendiri.
1..*
Halaman Buku
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 19 -nama : String = “” -alamat : String = “” -noInduk : int = 0 Pegawai + Pegawai(nama:String, alamat:String, jumAnak:int) + lihatData() + lihatNama() - namaOrganisasi : String = “” - alamatSekretariat : String = “” - noAktaPendirian : String = “” SerikatPegawai + lihatData()
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 20
Agregasi
import java.util.*; import java.util.Date; public class SerikatPegawai {
private String NamaOrganisasi; private String AlamatSkretariat; public Pegawai pegawai; …
}
public class Pegawai { private String nama; private String alamat; private int noInduk; …
}
Contoh:
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 21
Hubungan ketergantungan (dependency)
menunjukkan bahwa suatu class membutuhkan
class yang lain dalam melaksanakan
operasinya. Jika dipahami secara logika
hubungan ketergantungan memang sedikit
berbeda dengan hubungan agregasi.
Ketergantungan
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 22
Untuk menerapkan multiplicity n atau 1..* atau
0..* atau 1..n atau 0..n pada JAVA dapat
digunakan beberapa pilihan, antara lain: array,
class Vector dan class Collection.
Multiplicity
ARRAY
Salah satu kelemahan dari array adalah
pendefinisian jumlah elemen yang dapat
ditampung pada suatu array bersifat terbatas
pada saat runtime.
VECTOR
Vector adalah obyek seperti array dengan
jumlah elemen yang dinamis. Perbedaan
antara vector dengan array:
Multiplicity
Array pada JAVA dapat menyimpan tipe apapun,
termasuk numerik atau class
Vector pada JAVA harus menyimpan obyek.
Misalnya untuk menyimpan nilai int, maka harus
dilakukan casting ke obyek Integer.
Untuk mendefinisikan sebuah vector digunakan
perintah:
Multiplicity
Vector namaObyek = new Vector(jumlahElemenAwal);
Setelah itu berikut beberapa method yang dapat
digunakan untuk operasinya:
size mengetahui jumlah elemen dalam vector addElement menambah elemen baru clear menghapus semua elemen vector
elementAt(posisi) mengambil nilai elemen vector ke posisi
setElementAt(posisi) menempatkan sebuah elemen obyek pada posisi tertentu removeElementAt(posisi) menghapus elemen dan menggeser ke bawah semua
elemen di atasnya
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 25
Untuk menampilkan semua elemen dalam vektor
dapat digunakan perulangan:
Multiplicity
for (int i= 0; i < ovector.size(); i++) { System.out.println(ovector.elementAt(i)); }
Contoh:
-kode: String -harga: int=100 Produk + getTotal(): int Pesanan 1 1..* 1 1..*TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 26
import java.util.*; class Produk {
private String kode; private int harga = 100; public Pesanan pesanan; public String getKode() { return kode; } public void setKode(String _kode) { kode = _kode; } public int getHarga() { return harga; }
public void setHarga(int _harga) { harga = _harga; } public Pesanan getPesanan() { return pesanan; } public void setPesanan(Pesanan pesanan) {
if (this.pesanan != pesanan) {
if (this.pesanan != null) this.pesanan.removeProduk(this); this.pesanan = pesanan;
if (pesanan != null) pesanan.addProduk(this); }
} }
Contoh: Produk.java
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 27
import java.util.*; class Pesanan {
private Vector produk = new Vector(); public Vector getProduk() { return produk; } public void addProduk(Produk produk) {
boolean ada = false;
for(int i=0; i<this.produk.size(); i++) {
if(((Produk)this.produk.elementAt(i)) == produk) ada=true; } if (!ada) { this.produk.addElement(produk); produk.setPesanan(this); } }
Contoh: Pesanan.java
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 28
public void removeProduk(Produk produk) { for(int i=0; i<this.produk.size(); i++) {
if(((Produk)this.produk.elementAt(i)) == produk) { this.produk.removeElementAt(i); produk.setPesanan((Pesanan)null); } } }
public int getTotal() { int n = 0;
for(int i=0; i<this.produk.size(); i++) {
n += ((Produk)this.produk.elementAt(i)).getHarga(); } return n; } }
Contoh: Pesanan.java
import java.util.*;public class PesananProduk { public static void main(String[] args) { Pesanan order = new Pesanan(); Produk p1 = new Produk(); p1.setKode("AA1234"); p1.setHarga(1200); Produk p2 = new Produk(); p2.setKode("AB5678"); p2.setHarga(5000); order.addProduk(p1); order.addProduk(p2); System.out.println(order.getTotal()); }
Contoh: PesananProduk.java
Pertama kali suatu class dibuat, tidak mungkin
sempurna tanpa kesalahan. Jika terjadi kesalahan
pemrogram dapat melakukan hal-hal berikut:
1. Tidak mengindahkan permasalahan
2. Cek hal-hal yang berpotensi menjadi masalah, dan
membatalkan program saat menemukan masalah.
3. Cek hal-hal yang berpotensi menjadi masalah,
ambil (catch) kesalahan dan mencoba memperbaiki
persoalan
4. Membuat suatu pengecualian (throw exception)
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 31
Exception adalah adalah hal-hal tak terduga yang
terjadi pada sistem.
Error Handling
try {
// kemungkinan kode program yang salah } catch (Exception e) {
// program untuk menangani kesalahan }
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 32
Exception adalah adalah hal-hal tak terduga yang
terjadi pada sistem.
Error Handling
try {
// kemungkinan kode program yang salah } catch (Exception e) {
// program untuk menangani kesalahan }
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 33
Contoh:
Error Handling
try { count = 0; count = 5 / count; } catch (Exception e) { System.out.println(e.getMessage()); count = 1; }System.out.println(“Exception telah dapat diatasi”);
TI1163 – Konsep Lanjut Pemrograman Objek © Restyandito - 34