Java Fundamentals
Herman Tolle
http://hermantolle.com/class
Program Teknologi Informasi & Ilmu Komputer
UNIVERSITAS BRAWIJAYA
Class , Object, Method, Attribute
1.3 Konsep Dasar Pemrograman
Berorientasi Objek
Berorientasi Objek?
Attribute:
Topi, Baju, Jaket,
Tas Punggung,
Tangan, Kaki, Mata
Behavior:
Cara
Jalan ke Depan
Cara
Jalan Mundur
Cara
Belok ke Kiri
Berorientasi Objek?
Attribute (State):
Ban, Stir, Pedal Rem, Pedal Gas,
Warna, Tahun Produksi
Behavior:
Cara Menghidupkan Mesin
Cara Manjalankan Mobil
Cara Memundurkan Mobil
Attribute Variable(Member)
Behavior Method(Fungsi)
Perbedaan Class dan Object
Class:
konsep
dan
deskripsi
dari sesuatu
•
Class mendeklarasikan
method
yang dapat digunakan
(dipanggil) oleh object
Object:
instance dari class
, bentuk (contoh)
nyata dari class
•
Object memiliki sifat
independen
dan dapat digunakan untuk
memanggil method
Contoh Class dan Object:
•
Class:
mobil
Perbedaan Class dan Object
Class seperti
cetakan kue
, dimana kue yg
dihasilkan dari cetakan kue itu adalah
object
Warna kue bisa bermacam-macam meskipun
berasal dari cetakan yang sama (
object
Class = Method + Variable
variable
kecepatan
gir
tampilkan kecepatan
ubah gir
method
Object = Method + Variable yg Memiliki Nilai
instance
variable
kecepatan = 10km/jam
gir = 3
tampilkan kecepatan ()
kecepatan = 10 km/jam
ubah gir (2)
gir = 5
instance
method
Object
Sepedaku
Attribute
Variable
yang mengitari class, dengan
nilai datanya
bisa ditentukan di object
Variable digunakan untuk
menyimpan nilai
yang
nantinya akan digunakan pada program
Variable memiliki
jenis (tipe)
,
nama
dan
nilai
Name, age, dan weight adalah atribute (variabel) dari
class Person
Membuat Class, Object dan Memanggil Atribut
public class Mobil {
String warna;
int tahunProduksi;
}
public class MobilBeraksi{
public static void main(String[] args){
// Membuat object
Mobil mobilku = new Mobil();
/* memanggil atribut dan memberi nilai */
mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
System.out.println("Warna: " +
mobilku.warna
);
System.out.println("Tahun: " +
mobilku.tahunProduksi)
;
}
}
Mobil.java
MobilBeraksi.java
Latihan: Membuat Program dg Netbeans
1.
Buka Netbeans IDE
Method
Method adalah
urutan instruksi
yang
mengakses data dari object
Method melakukan:
1.
Manipulasi data
2.
Perhitungan
matematika
Membuat dan Memanggil Method
public class Mobil2{ String warna; int tahunProduksi; void printMobil(){ System.out.println("Warna: " + warna); System.out.println("Tahun: " + tahunProduksi); } }
public class Mobil2Beraksi{
public static void main(String[] args){ Mobil2 mobilku = new Mobil2();
mobilku.warna = "Hitam"; mobilku.tahunProduksi = 2006; mobilku.printMobil(); } }
Mobil2.java
Mobil2Beraksi.java
Latihan
Buat class
Handphone
, masukkan dalam
package
hp
•
Class Handphone berisi
empat method
di bawah:
1.
hidupkan()
2.
lakukanPanggilan()
3.
kirimSMS()
4.
matikan()
•
Isi masing-masing method dengan tampilan status
menggunakan
System.out.println()
Buat class
HandphoneBeraksi
, dan panggil
method-method diatas dalam class tersebut
Latihan: Hasil Tampilan
Handphone hidup …
Kring, kring, kring … panggilan dilakukan
Dung, dung … sms berhasil terkirim
public class Handphone{
void hidupkan(){
System.out.println(" Handphone hidup"); }
void lakukanPanggilan(){
System.out.println(“Kring.. Kring.. Kring.. Panggilan dilakukan!"); }
// lanjutkan method yang lainnya
}
public class HandphoneBeraksi{
public static void main(String[] args){
Handphone telponKu = new Handphone();
telponKu.hidupkan(); telponKu.lakukanPanggilan(); telponKu.kirimSMS(); telponKu.matikan(); } }
Handphone.java
handphoneBeraksi.java
Latihan
Kelas Handphone pada contoh sebelumnya
dikembangkan dengan menambahkan:
•
Atribut:
hidup [tipe: boolean]
dan
jumlahPulsa [double]
•
Method:
isiPulsa(jumlah: double), cekPulsa()
Update method
lakukanPanggilan()
dan
kirimSMS()
dengan menambahkan statemen seleksi untuk
mengecek bahwa handphone dalam status hidup
dan jumlah pulsa > 0
Update method hidupkan() dan matikan() untuk
merubah status
hidup
.
PEMODELAN CLASS
Diagram Class
Digunakan untuk mendefiniskan sebuah kelas /
memodelkan kelas
NAMA CLASS Daftar Atribut Daftar Method Handphone -hidup: boolean; -jumlahPulsa: double +hidupkan(); +lakukanPanggilan(); +kirimSMS(); +matikan(); +isiPulsa(jumlah:double); +cekPulsa();
Visibility
•
Attributes normally should be private, methods invoked by
clients should be public
•
Visibility markers in UML
A plus sign (+) indicates public visibility
A minus sign (-) indicates private visibility
Contoh: Class Segitiga
Buat class Segitiga yang menyimpan informasi alas
dan tinggi, dan menyimpan hasil perhitungan luas dan
keliling
•
Atribut: tinggi, alas, keliling, luas
•
Method: hitungLuas(), hitungKeliling(), cetakLuas(), cetak
Keliling()
Dalam kasus-kasus di OOP,
nilai
(variable) yang
diketahui
akan
di-set
sebagai atribut yang
public
,
sementara
nilai
yang diperoleh dari
hasil
perhitungan
diset
private
(hanya bisa diakses dari
dalam fungsi tersebut)
TUGAS
Buat Diagram Class dan implementasi Program
dalam bentuk Class dan Program penggunaan Class
tersebut
Pilihan Topik
•
Handphone untuk browsing
•
Handphone untuk chatting
•
TV (pilih channel tv, set volume)
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); } 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(); }
Public class BankBeraksi {
Bank rekeningKu = new Bank(100000);
cekSaldo();
SimpanUang(50000);
AmbilUang(150000);
cekSaldo();
Overloading terhadap konstruktor merupakan
suatu mekanisme pembuatan konstruktor yang
memiliki bentuk lebih dari satu.
Pembeda antara satu konstruktor dengan
konstruktor yang lain berupa jumlah parameter
atau tipe parameter.
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 {
}
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();
} }
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 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); public cekSaldo(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. 2000/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. 3500
•
Karyawan yang bekerja 9 jam/hari atau lebih akan mendapat uang
transport lembur sebesar Rp. 4000
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: double;
jumlahJamKerja: integer; pegawai(Nama, NIP);
pegawai(Nama, NIP, jamKerja); void setJamKerja();
void hitungGajiHarian(); void cetakPenghasilan();