Class & Object 2 ~Praktikum~
Imam Fahrur Rozi
Materi
* Package * Kata kunci “import” * Access Modifier * Konstruktor * Kata kunci “static”
Package
Package
namapaket
* Package dalam Java digunakan untuk mengorganisir klas dengan kategori yang sama atau yang menyediakan fungsionalitas yang sama * Mirip seperti folder yang digunakan untuk mengorganisir file
package
* Deklarasi package package namapaket; * Deklarasi subpackage yang ada dalam package lain package namapaket.namasubpaket;
Deklarasi Package
paket1
A a1: String
* Gambar di samping menunjukkan klas A ada dalam package paket1 * Maka klas A dideklarasikan sbb: package paket1; class A{ String a1; …… }
Deklarasi Package paket1
paket2 A a1: String
* Di dalam suatu package boleh ada package yang lain * Gambar di samping menunjukkan klas A ada dalam package paket2 dan paket2 ada dalam paket1 * Maka klas A dideklarasikan sbb: package paket1.paket2; class A{ String a1; …… }
Kata Kunci “import”
Kata Kunci “import”
* Import dipakai ketika dalam suatu klas, dipakai klas lain atau mengacu ke klas yang lain, dimana klas lain tersebut berada pada paket yang berbeda * Deklarasi import diletakkan di bawah deklarasi package (kalau ada)
Contoh package entiti1; public class Matakuliah{ public String kode; public Matakuliah(){ kode = “-‐-‐-‐-‐”; } public Matakuliah(String n){ kode= n; } public void tampilData(){ System.out.println(“Kode = ”+kode); } }
Contoh
package entiti2; import entiti1.Matakuliah; public class MkTester{ public static void main(String[] argv){ Matakuliah mk=new Matakuliah(); mk.tampilData(); } }
* Pada klas MkTester, dibuat objek mk dari klas Matakuliah yang ada di paket entiti1. Oleh karena itu perlu import klas Matakuliah dari paket entiti1.
Import All Classes
import paket1.*; * Untuk meng-‐import semua klas yang ada dalam suatu paket, digunakan tanda *
Access Modifier
Access Modifier bangundatar Balok + panjang: int ~ lebar: int -‐ tinggi: int
BalokTester1 + main(String[] argv): void
+ hitungVolume(): int ~ hitungLuasPermukaan(): int + main(String[] argv): void bangundatartester BalokTester2 + main(String[] argv): void
Access Modifier
* Mekanisme Percobaan: * Dalam method main di klas BalokTester1 dan BalokTester2, lakukan instansiasi objek dari klas Balok * Coba akses masing-‐masing atribut dan masing-‐masing method-‐nya
Access Modifier
* Pertanyaan: * Atribut dan method apa saja dari klas Balok yang tidak bisa diakses dari klas BalokTester1? Mengapa demikian? * Atribut dan method apa saja dari klas Balok yang tidak bisa diakses dari klas BalokTester2? Mengapa demikian? * Bagaimana caranya agar atribut tinggi bisa diakses dari klas BalokTester1 dan BalokTester2, selain dengan mengubah access modifier-‐nya?
Accessor/Getter & Mutator/Setter Method * Atribut dengan access modifier private bisa diakses dengan menggunakan accessor & mutator method * Accessor/Getter method: method yang digunakan untuk mengakses atau mengambil nilai dari suatu atribut dengan acccess modifier private * Mutator/Setter method: method yang digunakan untuk memberikan/mengatur/men-‐set nilai kepada atribut dengan acccess modifier private
Getter Method * Diawali dengan get, diikuti dengan nama atributnya * Tipe data getter sama dengan tipe data atributnya class Mahasiswa{ private String nim; private float ipk; public String getNim(){ return nim; } public float getIpk(){ return ipk; } }
Setter Method * Diawali dengan set, diikuti dengan nama atributnya * Tipe data setter pasti void * Method setter memiliki parameter sesuai dengan atributnya class Mahasiswa{ private String nim; private float ipk; public void setNim(String n){ nim = n; } public void setIpk(float f){ ipk = f; } }
class Mahasiswa{ private String nim; private float ipk; public String getNim(){ return nim; } public float getIpk(){ return ipk; } public void setNim(String n){ nim = n; } public void setIpk(float f){ ipk = f; } }
Tugas
* Lengkapi klas Balok di atas dengan setter dan getter untuk atribut tinggi dan lebar (atribut panjang tidak perlu dibuatkan setter dan getter krn sudah public) * Kemudian sesuaikan klas BalokTester1 dan BalokTester2 agar tidak error
Konstruktor
Konstruktor Rekening -‐ noRek: String -‐ saldo: int + setNoRek(String n): void + setSaldo(int s): void + getNoRek(): String + getSaldo(): int RekeningTester + main(String[] argv): void
* Di dalam method main() lakukan instansiasi objek dari klas Rekening * Apakah bisa? Padahal di dalam klas Rekening tidak dituliskan konstruktor! Mengapa demikian?
Konstruktor Rekening -‐ noRek: String -‐ saldo: int + Rekening() + setNoRek(String n): void + setSaldo(int s): void + getNoRek(): String + getSaldo(): int
RekeningTester + main(String[] argv): void
* Ubah klas Rekening, dengan menambahkan konstruktor default di dalamnya! * Apa bedanya dengan klas Rekening di slide sebelumnya?
Konstruktor Rekening -‐ noRek: String -‐ saldo: int + Rekening(String no, int s) + setNoRek(String n): void + setSaldo(int s): void + getNoRek(): String + getSaldo(): int
RekeningTester + main(String[] argv): void
* Ubah klas Rekening di slide sebelumnya, dengan mengubah konstruktor default menjadi konstruktor berparameter (2 parameter)! * Di method main coba instansiasi dengan menggunakan konstuktor berparameter! Apakah bisa? * Kemudian coba instansiasi objek lagi dengan menggunakan konstruktor default! Apakah bisa? Mengapa demikian?
Konstruktor Rekening -‐ noRek: String -‐ saldo: int + Rekening() + Rekening(String no) + Rekening(int s) + Rekening(String no, int s) + setNoRek(String n): void + setSaldo(int s): void + getNoRek(): String + getSaldo(): int RekeningTester + main(String[] argv): void
* Ubah klas Rekening di slide sebelumnya, dengan menambahkan konstruktor default dan beberapa konstruktor berparameter (konsep konstruktor overloading)! * Di method main coba instansiasi dengan menggunakan masing-‐ masing konstuktor!
Kata Kunci “static”
Kata Kunci “static” Rekening -‐ noRek: String -‐ saldo: int + bunga: double + Rekening() + Rekening(String no) + Rekening(int s) + Rekening(String no, int s) + setNoRek(String n): void + setSaldo(int s): void + getNoRek(): String + getSaldo(): int RekeningTester + main(String[] argv): void
* Tambahkan atribut bunga, yang merupakan atribut klas (menggunakan kata kunci static). Hal ini karena diasumsikan bahwa nilai bunga untuk semua objek rekening sama (sehingga bunga dibuat static) * Di method main coba akses atribut bunga