Constructor Konsep Lanjut Pemrograman Objek Restyandito e-mail : dito@ukdw.ac.id website : http://lecturer.ukdw.ac.id/~dito 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. TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 2 Constructor 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 ); 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 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 3 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 4 Class Activity 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) Hubungan Antar Class 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 - 5 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 6 Restyandito Konsep Lanjut Pemrograman Objek - 1
merupakan hubungan antar class dimana ciri-ciri dan sifat dari class induknya diturunkan ke class anaknya. - nama : String = - alamat : String = - jumanak : int = 0 - noinduk : int = 0 Pegawai + Pegawai(nama:String, alamat:string, jumanak:int) + lihatnama() - gajiharian : int = 0 - harikerja : int = 0 Pegawai Harian + PegawaiHarian(nama:String, alamat:string, jumanak:int, gajiharian:int, harikerja:int) - nama : String = - alamat : String = - jumanak : int = 0 - noinduk : int = 0 Pegawai + Pegawai(nama:String, alamat:string, jumanak:int) + lihatnama() Catatan: + (plus) = public, (dash) = private, # (compound) = protected TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 7 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 8 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; 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"); TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 9 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 10 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"); 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 - 11 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 12 Restyandito Konsep Lanjut Pemrograman Objek - 2
Hewan Anjing Polymorphism ( revisited ) Hewan lumping = new Kuda() ; Anjing coki = new Anjing() ; Hewan coki = new Anjing() ; Polymorphism ( revisited ) Dengan polymorphism, reference type dapat merupakan superclass dari object type yang digunakan 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(); TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 13 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 14 Polymorphism ( revisited ) Polymorphism memungkinkan pembuatan subclass baru, tanpa harus merubah program utama. 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); TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 15 Suatu class dikatakan memiliki hubungan agregasi (aggregation) apabila kelas tersebut berisi sebuah obyek dari kelas lain. secara umum menunjukkan suatu hubungan one-to-many atau dikenal dengan istilah Whole- Part. TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 16 Mobil Roda Suatu bentuk khusus dari agregasi adalah komposisi (composition), dimana suatu bagian dari class tidak dapat berdiri sendiri. Kursus Modul Buku Halaman 1..* 1..* TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 17 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 18 Restyandito Konsep Lanjut Pemrograman Objek - 3
- namaorganisasi : String = - alamatsekretariat : String = - noaktapendirian : String = -nama : String = -alamat : String = -noinduk : int = 0 SerikatPegawai Pegawai + Pegawai(nama:String, alamat:string, jumanak:int) + lihatnama() 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; TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 19 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 20 Ketergantungan 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. 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 - 21 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 22 VECTOR Vector adalah obyek seperti array dengan jumlah elemen yang dinamis. Perbedaan antara vector dengan array: 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: 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 - 23 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 24 Restyandito Konsep Lanjut Pemrograman Objek - 4
Untuk menampilkan semua elemen dalam vektor dapat digunakan perulangan: for (int i= 0; i < ovector.size(); i++) { System.out.println(ovector.elementAt(i)); Pesanan + gettotal(): int 1 1..* Produk -kode: String -harga: int=100 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 25 Produk.java 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 Pesanan.java 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); Pesanan.java 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 - 27 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 28 PesananProduk.java 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 - 29 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 - 30 Restyandito Konsep Lanjut Pemrograman Objek - 5
Exception adalah adalah hal-hal tak terduga yang terjadi pada sistem. try { // kemungkinan kode program yang salah catch (Exception e) { Exception adalah adalah hal-hal tak terduga yang terjadi pada sistem. try { // kemungkinan kode program yang salah 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 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 1- Fundamentals, Sun Microsystems Press, 1999. hal 105-224 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 33 TI1163 Konsep Lanjut Pemrograman Objek Restyandito - 34 The End terima kasih Restyandito Konsep Lanjut Pemrograman Objek - 6