Konsep Lanjut Pemrograman Objek

advertisement
TI 1163
Pemrograman Berorientasi Objek
Constructor
Konsep Lanjut
Pemrograman Objek
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 apaapa, namun memungkinkan semua variabel yang
tidak diinisialisasi dalam deklarasi diberi suatu
nilai default.
Restyandito
e-mail
: [email protected]
website : http://lecturer.ukdw.ac.id/~dito
TI1163 – Konsep Lanjut Pemrograman Objek
Constructor
© Restyandito - 2
Constructor
class Mahasiswa {
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();
private String nama = "";
private int nim = 0;
private static int NIM = 0;
private double ipk = 0.0;
public Mahasiswa() { this.nim = ++NIM; }
mhs1.LihatData();
mhs2.LihatData();
mhs3.LihatData();
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 ); }
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 3
Class Activity
© Restyandito
© Restyandito - 4
Hubungan Antar Class
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)
TI1163 – Konsep Lanjut Pemrograman Objek
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 5
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 - 6
Konsep Lanjut Pemrograman Objek - 1
TI 1163
Pemrograman Berorientasi Objek
Pewarisan
Pewarisan
Pegawai Harian
- gajiHarian : int = 0
- hariKerja : int = 0
Pewarisan merupakan hubungan antar class
dimana ciri-ciri dan sifat dari class induknya
diturunkan ke class anaknya.
+ PegawaiHarian(nama:String, alamat:String,
jumAnak:int, gajiHarian:int, hariKerja:int)
+ lihatData()
Pegawai
Pegawai
- nama : String = “”
- alamat : String = “”
- jumAnak : int = 0
- noInduk : int = 0
- nama : String = “”
- alamat : String = “”
- jumAnak : int = 0
- noInduk : int = 0
+ Pegawai(nama:String, alamat:String, jumAnak:int)
+ lihatData()
+ lihatNama()
+ Pegawai(nama:String, alamat:String, jumAnak:int)
+ lihatData()
+ lihatNama()
Catatan: + (plus) = public, – (dash) = private, # (compound) = protected
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 7
TI1163 – Konsep Lanjut Pemrograman Objek
Pewarisan
© Restyandito - 8
Pewarisan
Contoh:
class Pegawai {
private String nama;
private String alamat;
private int jumAnak;
private int noInduk;
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");
}
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;
}
TI1163 – Konsep Lanjut Pemrograman Objek
public void lihatNama() {
System.out.println("\t\tnama: " + this.nama + "\n\n");
}
}
© Restyandito - 9
TI1163 – Konsep Lanjut Pemrograman Objek
Pewarisan
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 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);
public void lihatData() {
super.lihatData();
System.out.print("gaji: " + this.gajiHarian);
System.out.print("\thari: " + this.hariKerja + "\n\n");
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito
© Restyandito - 10
emp1.lihatData();
emp2.lihatData();
emp3.lihatData();
emp3.lihatNama();
}
}
© Restyandito - 11
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 12
Konsep Lanjut Pemrograman Objek - 2
TI 1163
Pemrograman Berorientasi Objek
Polymorphism
Polymorphism
( revisited )
( revisited )
Dengan polymorphism, reference type dapat
merupakan superclass dari object type yang
digunakan
Hewan
Hewan[ ] binatang = new Hewan[5];
Hewan lumping = new Kuda() ;
Anjing
Anjing coki = new Anjing() ;
Hewan coki = new Anjing() ;
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 13
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();
}
TI1163 – Konsep Lanjut Pemrograman Objek
Polymorphism
© Restyandito - 14
Agregasi
( revisited )
Polymorphism memungkinkan pembuatan subclass
baru, tanpa harus merubah program utama.
class DokterHewan {
public void menyuntik ( Hewan a) {
// mengobati hewan
a.bersuara() ;
}
}
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 WholePart.
class PemilikHewan {
public void memeriksakanHewan() {
DokterHewan d = new DokterHewan();
Anjing a = new Anjing(); d.menyuntik(a);
Kucing k = new Kucing(); d.menyuntik(k);
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 15
TI1163 – Konsep Lanjut Pemrograman Objek
Agregasi
Agregasi
Mobil
Roda
Kursus
Modul
Suatu bentuk khusus dari agregasi adalah
komposisi (composition), dimana suatu bagian
dari class tidak dapat berdiri sendiri.
Buku
1..*
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito
© Restyandito - 16
Halaman
1..*
© Restyandito - 17
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 18
Konsep Lanjut Pemrograman Objek - 3
TI 1163
Pemrograman Berorientasi Objek
Agregasi
SerikatPegawai
- namaOrganisasi : String = “”
- alamatSekretariat : String = “”
- noAktaPendirian : String = “”
Contoh:
import java.util.*;
import java.util.Date;
+ lihatData()
public class SerikatPegawai {
private String NamaOrganisasi;
private String AlamatSkretariat;
public Pegawai pegawai;
…
}
Pegawai
-nama : String = “”
-alamat : String = “”
-noInduk : int = 0
public class Pegawai {
private String nama;
private String alamat;
private int noInduk;
…
}
+ Pegawai(nama:String, alamat:String,
jumAnak:int)
+ lihatData()
+ lihatNama()
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 19
Ketergantungan
© Restyandito - 21
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.
© Restyandito
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.
ARRAY
Salah satu kelemahan dari array adalah
pendefinisian jumlah elemen yang dapat
ditampung pada suatu array bersifat terbatas
pada saat runtime.
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 22
Multiplicity
VECTOR
Vector adalah obyek seperti array dengan
jumlah elemen yang dinamis. Perbedaan
antara vector dengan array:
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 20
Multiplicity
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.
TI1163 – Konsep Lanjut Pemrograman Objek
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 23
Untuk mendefinisikan sebuah vector digunakan
perintah:
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
insertElementAt(obyek,posisi) menyisipkan satu elemen pada posisi
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 24
Konsep Lanjut Pemrograman Objek - 4
TI 1163
Pemrograman Berorientasi Objek
Multiplicity
Untuk menampilkan semua elemen dalam vektor
dapat digunakan perulangan:
for (int i= 0; i < ovector.size(); i++) {
System.out.println(ovector.elementAt(i));
}
Contoh:
Pesanan
+ getTotal(): int
1
1..*
Produk
-kode: String
-harga: int=100
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 25
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);
}
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 26
Contoh: Pesanan.java
Contoh: Pesanan.java
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);
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
Contoh: Produk.java
© Restyandito - 27
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;
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 28
Error Handling
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)
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());
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito
© Restyandito - 29
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 30
Konsep Lanjut Pemrograman Objek - 5
TI 1163
Pemrograman Berorientasi Objek
Error Handling
Error Handling
Exception adalah adalah hal-hal tak terduga yang
terjadi pada sistem.
Exception adalah adalah hal-hal tak terduga yang
terjadi pada sistem.
try {
try {
// kemungkinan kode program yang salah
// kemungkinan kode program yang salah
} catch (Exception e) {
} catch (Exception e) {
// program untuk menangani kesalahan
// program untuk menangani kesalahan
}
}
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 31
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 32
Error Handling
Referensi
try {
count = 0;
count = 5 / count;
} catch (Exception e) {
System.out.println(e.getMessage());
count = 1;
}
System.out.println(“Exception telah dapat diatasi”);
• Garrido, Jose M., Object Oriented Programming:
From Problem Solvint to Java, Charles iver Mdia, Inc.,
2003. hal 25-90
• Weisfeld, Matt, The Object-Oriented Thought Process,
Developer’s Library, 2004. hal 5-28, 43-53
• Deitel H.M., Java How To Program, Prentice Hall,
2003. hal 341-500
• Hortsmann, Cay S., Core Java : Volume 1Fundamentals, Sun Microsystems Press, 1999. hal
105-224
Contoh:
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 33
TI1163 – Konsep Lanjut Pemrograman Objek
© Restyandito - 34
The End
terima kasih
© Restyandito
Konsep Lanjut Pemrograman Objek - 6
Download