Anda di halaman 1dari 56

Java Fundamentals

Herman Tolle
http://hermantolle.com/class
Program Teknologi Informasi & Ilmu Komputer
UNIVERSITAS BRAWIJAYA
1.3 Konsep Dasar Pemrograman
Berorientasi Objek

Class , Object, Method, Attribute


Berorientasi Objek?
Attribute:
Topi, Baju, Jaket,
Tas Punggung,
Tangan, Kaki, Mata

Behavior:
Cara Jalan ke Depan
Cara Jalan Mundur
Cara Belok ke Kiri
Cara Memanjat
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
Object: mobilnya pak Joko, mobilku, mobil berwarna merah
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
memiliki sifat independen)
Class = Method + Variable
Class Sepeda gir

kecepatan variable

tampilkan kecepatan

ubah gir method


Object = Method + Variable yg Memiliki Nilai

Object Sepedaku gir = 3

instance
kecepatan = 10km/jam
variable

tampilkan kecepatan ()
kecepatan = 10 km/jam
instance
method
ubah gir (2)
gir = 5
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 { Mobil.java
String warna;
int tahunProduksi;
}

public class MobilBeraksi{ MobilBeraksi.java


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);
}
}
Latihan: Membuat Program dg Netbeans
1. Buka Netbeans IDE
2. Ikuti langkah berikut
Method
Method adalah urutan instruksi yang
mengakses data dari object
Method melakukan:
1. Manipulasi data
2. Perhitungan matematika
3. Memonitor kejadian dari suatu event
Method
Membuat dan Memanggil Method
public class Mobil2{
String warna; Mobil2.java
int tahunProduksi;

void printMobil(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
public class Mobil2Beraksi{
public static void main(String[] args){
Mobil2Beraksi.java
Mobil2 mobilku = new Mobil2();

mobilku.warna = "Hitam";
mobilku.tahunProduksi = 2006;
mobilku.printMobil();
}
}
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
Handphone mati
public class Handphone{
void hidupkan(){ Handphone.java
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){
handphoneBeraksi.java
Handphone telponKu = new Handphone();
telponKu.hidupkan();
telponKu.lakukanPanggilan();
telponKu.kirimSMS();
telponKu.matikan();
}
}
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.
DIAGRAM CLASS
PEMODELAN CLASS
Diagram Class
Digunakan untuk mendefiniskan sebuah kelas /
memodelkan kelas

Handphone
NAMA CLASS
-hidup: boolean;
-jumlahPulsa: double
Daftar Atribut
+hidupkan();
+lakukanPanggilan();
Daftar Method +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
A sharp sign (#) indicates protected 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)
Radio (pilih stasiun radio, set volume)
KONSTRUKTOR
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 { Mobil.java
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{
MobilKonstruktor.java
public static void main(String[] args){
Mobil mobilku = new Mobil(Merah, 2003);
mobilku.info();
}
}
Kata Kunci this
Digunakan pada pembuatan class dan digunakan
untuk menyatakan object sekarang
public class Mobil{ public class Mobil{
String warna; String warna;
int tahunProduksi; int tahunProduksi;

void isiData(String aWarna, void isiData(String warna,


int aTahunProduksi){ int tahunProduksi){

warna = aWarna; this.warna = warna;


tahunProduksi = aTahunProduksi; 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 void AmbilUang(double S) {
{ if (this.saldo-S>=0)
double saldo; {
this.saldo -= S;
Bank(double S) {
this.saldo = S; System.out.println(Ambil Uang Rp +S);
System.out.println(Selamat Datang di }
Bank ABC); else
this.cekSaldo(); System.out.println(Saldo tidak mencukupi);
} this.cekSaldo();
}
void cekSaldo() {
System.out.println(Saldo saat ini Rp
void SimpanUang(double S) {
+saldo);
} 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 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; public class konstruktor1
private int tahun; {

public mobil(String warna, int tahun) public static void main (String[] args)
// konstruktor-1
{ this.warna = warna; {
this.tahun = tahun; mobil mobilku = new mobil("Silver",2008);
}
mobilku.info();
public mobil() // konstruktor-2
{
} mobil mobilmu = new mobil();
mobilmu.info();
public void info()
{ mobil mobilnya = new mobil(White",2005);
System.out.println("Warna mobil saya : "+ mobilnya.info();
this.warna); }
System.out.println("Dibuat tahun : "+
this.tahun);
} }
}
ABSTRAKSI & ENKAPSULASI
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
Dalam
Dalam Class Dalam Dalam
Modifier Package yang
yang Sama SubClass Package Lain
Sama

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);


public AmbilUang(double S);
public SimpanUang(double S);
public cekSaldo(double S);
Contoh
public class Bank void AmbilUang(double S) {
{ if (this.saldo-S>=0)
private double saldo; {
this.saldo -= S;
Bank(double S) {
this.saldo = S; System.out.println(Ambil Uang Rp +S);
System.out.println(Selamat Datang di }
Bank ABC); else
this.cekSaldo(); System.out.println(Saldo tidak mencukupi);
} this.cekSaldo();
}
public void cekSaldo() {
System.out.println(Saldo saat ini Rp
void SimpanUang(double S) {
+saldo);
} 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 fungsi setJamKerja() untuk
Nama: string; mengakses (memberi nilai) atribut
NIP: string; jumlahJamKerja;
gajiPokok, lembur, uangMakan,
transport: double;
Business process perhitungan gaji
jumlahJamKerja: integer;
dilakukan dalam fungsi
pegawai(Nama, NIP); hitungGajiHarian(), sekaligus untuk
pegawai(Nama, NIP, jamKerja);
mengakses atribut lain.
void setJamKerja();
void hitungGajiHarian();
void cetakPenghasilan(); Fungsi cetakPenghasilan() untuk
menampilkan isi dari atribut-atribut
yang ada
TUGAS
Set Setiap Atribut dari kelas tersebut adalah private
Set setiap method dari kelas tersebut adalah public

Selesaikan latihan sebelumnya, rampungkan sebagai


sebuah tugas (Soal, Jawaban, Diagram Class, Source
Code, Screenshot)
Buat implementasi class Pegawai untuk kasus minimal
2 orang pegawai dengan jam kerja berbeda
Referensi
1. Sharon Zakhour et al, The Java Tutorial Fourth Edition,
http://java.sun.com/docs/books/tutorial
2. Cay Horstmann, Big Java: Earl Objects 5th Edition, John Wiley & Sons,
2013
3. Deitel & Deitel, Java Howto Program 9th Edition, Prentice Hall, 2012
4. Richard M. Reese, Oracle Certified Associate Java SE 7 Programmer
Study Guide, Packt Publishing, 2012
5. Walter Savitch, Absolute Java 5th Edition, Pearson Education, 2013
6. Mark Allen Weiss, Data Structures and Algorithm Analysis in Java 3rd
Edition, Pearson Education, 2012
7. Anany Levitin, Introduction to the Design and Analysis of Algorithms
3rd Edition, Pearson Education, 2012
8. Ying Bai, Practical Database Programming with Java, John Wiley &
Sons, 2011
Referensi
Slide presentasi ini dimodifikasi dari slide yang
diperoleh dari website: romisatriowahono.net
karya Bapak Romi Satrio Wahono

Anda mungkin juga menyukai