Java Fundamentals
Herman Tolle
http://hermantolle.com/class
Program Teknologi Informasi & Ilmu Komputer
UNIVERSITAS BRAWIJAYA
Konstruktor, Overloading, Abstraksi,
Enkapsulasi
2. Konsep Dasar Pemrograman
Berorientasi Objek
Konstruktor
-1-
Method yang digunakan untuk memberi nilai
awal
pada saat object diciptakan
Dipanggil secara otomatis ketika
new
digunakan
untuk membuat instan class
Sifat konstruktor:
•
Nama konstruktor
sama dengan nama class
•
Tidak memiliki nilai balik
dan tidak boleh ada kata
kunci void
Konstruktor
-2-public class Mobil { String warna;
int tahunProduksi;
public Mobil(String warna, int tahunProduksi){ this.warna = warna;
this.tahunProduksi = tahunProduksi; }
public void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi); }
}
public class MobilKonstruktor{
public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, 2003);
mobilku.info(); }
}
Mobil.java
Kata Kunci this
Digunakan pada pembuatan class dan digunakan
untuk
menyatakan object sekarang
public class Mobil{
String warna;
int tahunProduksi;
void isiData(String
aWarna
,
int
aTahunProduksi
)
{
warna = aWarna;
tahunProduksi = aTahunProduksi;
}
}
public class Mobil{
String warna;
int tahunProduksi;
void isiData(String
warna
,
int
tahunProduksi
)
{
this.warna = warna;
this.tahunProduksi = tahunProduksi;}
}
Latihan
1.
Buat class
Bank
•
Buat konstruktor class Bank dengan parameter:
saldo
•
Buat method:
simpanUang
,
ambilUang
, dan
getSaldo
2.
Buat class
BankBeraksi
, tetapkan saldo awal lewat
konstruktur Rp. 100000, jalankan 3 method di
atas, dan tampilkan proses sebagai berikut:
Selamat Datang di Bank ABC
Saldo saat ini: Rp. 100000
Simpan uang: Rp. 500000
Saldo saat ini: Rp. 600000
Ambil uang: Rp. 150000
Saldo saat ini: Rp. 450000
public class Bank
{
double saldo;
Bank(double S) {
this.saldo = S;
System.out.println(“Selamat Datang
di Bank ABC“);
this.cekSaldo();
}
void cekSaldo() {
System.out.println(“Saldo saat ini
Rp “+saldo);
}
void AmbilUang(double S) { if (this.saldo-S>=0) { this.saldo -= S; System.out.println(“Ambil Uang Rp “+S); } elseSystem.out.println(“Saldo tidak mencukupi”); this.cekSaldo(); } void SimpanUang(double S) { this.saldo += S; System.out.println(“Simpan Uang Rp “+S); this.cekSaldo(); }
public class BankBeraksi {
Bank rekeningKu = new Bank(100000);
cekSaldo();
SimpanUang(50000);
AmbilUang(150000);
cekSaldo();
OVERLOADING
KONSTRUKTOR
Overloading Konstruktor
Overloading terhadap konstruktor merupakan
suatu mekanisme pembuatan konstruktor yang
memiliki bentuk lebih dari satu.
Ada lebih dari 1 konstruktor dalam sebuah Kelas
Pembeda antara satu konstruktor dengan
konstruktor yang lain berupa jumlah parameter
atau tipe parameter.
Konsep overloading konstruktor mirip dengan
konsep overloading method
class mobil {
private String warna; private int tahun;
public mobil(String warna, int tahun) // konstruktor-1
{ this.warna = warna; this.tahun = tahun; }
public mobil() // konstruktor-2 {
this.warna = “Putih”; this.tahun = 2000; }
public void info() {
System.out.println("Warna mobil saya : "+ this.warna);
System.out.println("Dibuat tahun : "+ this.tahun);
} }
public class konstruktor1 {
public static void main (String[] args) {
mobil mobilku = new mobil("Silver",2008); mobilku.info();
mobil mobilmu = new mobil(); mobilmu.info();
mobil mobilnya = new mobil(“White",2005); mobilnya.info();
} }
Latihan
Modifikasi kelas Segitiga dengan menambahkan
konstruktor
Buat lebih dari 1 konstruktor dengan fungsi
masing-masing sbb:
•
Konstruktor Kosong
•
Konstruktor dengan 2 input integer (alas & tinggi)
•
Konstruktor dengan 1 input integer (alas = tinggi)
Buatlah sebuah program yang mengimplementasi kelas
segitiga untuk menghitung luas segitiga (2 segitiga yg
berbeda)
QUIZ
Apa yang dimaksud dengan
KONSTRUKTOR?
Apa yang dimaksud
dengan OVERLOADING
KONSTRUKTOR?
Tugas 01: Buat Kelas
HP/TV/Radio dan
Contoh Programnya.
Gunakan Konstruktor
Deadline: 1 Maret 2015
TUGAS
Tugas 01: Buat Kelas
HP/TV/Radio dan
Contoh Programnya.
Seperti informasi
sebelumnya, tetapi
tambahkan Konstruktor
Send to email,
Deadline: 1 Maret 2015
Abstraction
Cara kita melihat suatu sistem dalam
bentuk yang
lebih sederhana
, yaitu sebagai suatu kumpulan
subsistem (object) yang saling berinteraksi.
•
Mobil adalah kumpulan sistem pengapian, sistem
kemudi, sistem pengereman
Alat untuk meng-abstraksikan sesuatu adalah
class
Object bersifat
modularity
. Object dapat ditulis
dan
dimaintain terpisah (independen)
dari object
lain
Encapsulation
Mekanisme
menyembunyikan suatu proses dan data
dalam sistem
untuk menghindari interferensi, dan
menyederhanakan penggunaan proses itu sendiri
•
Tongkat transmisi (gigi) pada mobil
•
Tombol on/off/pengaturan suhu pada AC
Class access level (
public
,
protected
,
private
) adalah
implementasi dari konsep encapsulation
Enkapsulasi data dapat dilakukan dengan cara:
1.
mendeklarasikan
instance variable
sebagai
private
2.
mendeklarasikan
method
yang sifatnya
public
untuk
mengakses variable tersebut
Encapsulation dan Access Modifier
Modifier
Dalam Class
yang Sama
Dalam
Package yang
Sama
Dalam
SubClass
Dalam
Package Lain
private
tanpa
tanda
protected
public
Encapsulation
Enkapsulasi data juga dapat dilakukan dengan cara:
1.
mendeklarasikan
instance variable
sebagai
private
2.
mendeklarasikan
method
yang sifatnya
public
untuk
mengakses variable tersebut
Diagram Class
BANK
private Saldo: double; Bank (double S);
publicAmbilUang(double S);
public SimpanUang(double S);
Contoh
public class Bank
{
private double saldo;
Bank(double S) { this.saldo = S; System.out.println(“Selamat Datang di Bank ABC“); this.cekSaldo(); }
public void cekSaldo() {
System.out.println(“Saldo saat ini Rp “+saldo); } void AmbilUang(double S) { if (this.saldo-S>=0) { this.saldo -= S; System.out.println(“Ambil Uang Rp “+S); } else
System.out.println(“Saldo tidak mencukupi”); this.cekSaldo(); } void SimpanUang(double S) { this.saldo += S; System.out.println(“Simpan Uang Rp “+S); this.cekSaldo(); }
Latihan
Buat Diagram Class dan implementasi Program dalam bentuk
Class dan penggunaan Kelas tersebut.
Studi Kasus: Menghitung gaji harian PT. XYZ dengan ketentuan :
•
Gaji pokok karyawan Rp. 5000/jam
•
Bila karyawan bekerja lebih dari 7 jam/hari maka kelebihannya dihitung
lembur yang besarnya 1.5 dari gaji pokok
•
Untuk karyawan yang bekerja 8 jam/hari atau lebih akan mendapat
tambahan uang makan sebesar Rp. 7500
•
Karyawan yang bekerja 9 jam/hari atau lebih akan mendapat uang
transport lembur sebesar Rp. 10000
Input : NIP, Nama, Jumlah jam kerja
Output : NIP, Nama, Gaji pokok, Lembur, Uang makan, Transport
lembur , Take Home Pay (total gaji diterima)
Diagram Class
PEGAWAI
-Nama: string; -NIP: string;
-gajiPokok, lembur, uangMakan, transport, totalGaji: double;
-jumlahJamKerja: integer;
-jumlahPegawai: integer static; -totalGajiPegawai: double static; +pegawai(Nama, NIP);
+pegawai(Nama, NIP, jamKerja); +void setJamKerja(); +void hitungGajiHarian(); +void cetakPenghasilan(); +getJumlahPegawai(); +getGajiTotalPegawai();
KELAS PEGAWAI
• fungsi
setJamKerja()
untuk
mengakses (memberi nilai) atribut
jumlahJamKerja;
•
Business process perhitungan gaji
dilakukan dalam fungsi
hitungGajiHarian()
, sekaligus untuk
mengakses atribut lain.
• Fungsi
cetakPenghasilan()
untuk
menampilkan isi dari atribut-atribut
yang ada
public class Pegawai {
private String Nama, NIP;
private double gajiPokok, uangLembur, uangMakan, uangTransport, totalGaji;
private jamKerja;
private static int JumlahPegawai = 0;
private static double totalGajiPegawai = 0; public Pegawai(String No, String Nm, int J) {
this.Nama = Nm; this.NIP = No; this.jamKerja = J; gajiPokok = uangLembur = … = totalGaji = 0;
JumlahPegawai++;
}
public hitungGaji() {
if (jamKerja <= 7) gajiPokok = jamKerja*5000;
else { gajiPokok = 7*5000; uangLembur = (jamKerja-7)*7500; }
… totalGaji = gajiPokok + uangLembur + uangMakan + uangTransport; totalGajiPegawai += totalGaji;