ENKAPSULASI - · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu...

25
PEMROGRAMAN LANJUT Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya ENKAPSULASI Dr. Eng. Herman Tolle Teknik Informatika PTIIK UB Semester Genap 2015/2016

Transcript of ENKAPSULASI - · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu...

Page 1: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

PEMROGRAMAN LANJUT

Program Teknologi Informasi & Ilmu Komputer, Universitas Brawijaya

ENKAPSULASI

Dr. Eng. Herman Tolle

Teknik Informatika PTIIK UBSemester Genap 2015/2016

Page 2: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

MATERI

• Abstraksi

• Variabel Class (Instance Variabel, Local Variabel)

• Methods (set Method dan get Method)

• Encapsulation

• Access Modifier (Public dan Private) Fields

• Visibility Modifier (Public dan Private) Methods

• Tipe Data (Primitive dan Reference)

• Immutable Object dan Class

Page 3: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,
Page 4: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,
Page 5: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Konstruktor, Overloading, Abstraksi, Enkapsulasi

2. Konsep Dasar Pemrograman Berorientasi Objek

Page 6: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

KONSTRUKTOR

Page 7: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

ABSTRAKSI & ENKAPSULASI

Page 8: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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 adalahclass

Object bersifat modularity. Object dapat ditulis dan dimaintain terpisah (independen) dari object lain

Page 9: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,
Page 10: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,
Page 11: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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

Page 12: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Encapsulation dan Access Modifier

ModifierDalam Class yang Sama

Dalam Package yang Sama

Dalam SubClass

Dalam Package Lain

private

tanpa tanda

protected

public

Page 13: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Encapsulation

Enkapsulasi data dapat dilakukan dengan cara:

1. mendeklarasikan instance variable sebagai private

2. mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut

Page 14: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Method Set dan Get

Semua atribut dibuat private

Membuat method SET untuk menginput nilai padaatribut tersebut

Membuat method GET untuk menampilkan nilaidari atribut tersebut

Method Set dan Get bukan method bawaan Java tetapi method yang didefiniskan sendiri olehprogrammer (User defined function)

Tujuannya agar setiap atribut menjadi imunterhadap akses secara langsung (immutable class)

Page 15: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Contoh Method SET & GET

public Cubes{

private int Panjang;private int Lebar;...

public void setPanjang(int P){Panjang = P;

}

public int getPanjang(){return Panjang;

}...

}

public KubusBeraksi{

Cubes myBox1 = new Cubes();

myBox1.setPanjang(10);

int H = myBox1.getPanjang();

// akses lewat variabelS.o.p(“Panjang = “ + H);

// akses lsg dari fungsi getS.o.p(“Panjang = “ +

myBox1.getPanjang());

}

Page 16: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Diagram Class

BANK

private Saldo: double;

Bank (double S);

public AmbilUang(double S);

public SimpanUang(double S);

public cekSaldo(double S);

Page 17: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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

}elseSystem.out.println(“Saldo tidak mencukupi”);this.cekSaldo();

}

void SimpanUang(double S) {this.saldo += S;System.out.println(“Simpan Uang Rp “+S);this.cekSaldo();

}

Page 18: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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)

Jumlah Total Pegawai dan Gaji Total Semua Pegawai

Page 19: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

Diagram Class

PEGAWAI

-Nama: string;

-NIP: string;

-gajiPokok, lembur, uangMakan,

transport, totalGaji: double;

-jumlahJamKerja: integer;

+pegawai(Nama, NIP);

+pegawai(Nama, NIP, jamKerja);

+void setJamKerja();

+void hitungGajiHarian();

+void cetakPenghasilan();

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. Ditampilkan dalam bentuksemacam tabel

Page 20: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

public class Pegawai {

private String Nama, NIP;

private double gajiPokok, uangLembur, uangMakan, uangTransport, totalGaji;

private jamKerja;

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;

}

public hitungGaji() {

if (jamKerja <= 7) gajiPokok = jamKerja*5000;

else { gajiPokok = 7*5000; uangLembur = (jamKerja-7)*7500; }

… totalGaji = gajiPokok + uangLembur + uangMakan + uangTransport;

totalGajiPegawai += totalGaji;

Page 21: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

QUIZ

Apa yang dimaksud dengan KONSTRUKTOR?

Apa yang dimaksud dengan OVERLOADING

KONSTRUKTOR?

Apa yang dimaksud dengan ABSTRAKSI?

Apa yang dimaksud dengan ENKAPSULASI

Page 22: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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, Narasi Jawaban, Diagram Class, Source Code, Screenshot)

Buat implementasi kelas Pegawai untuk kasus minimal 2 orang pegawai dengan jam kerja berbeda, masing-masing menggunakan konstruktor yang berbeda

Deadline Tugas: Senin 7 Maret 2016

Page 23: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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

Slide presentasi ini dimodifikasi dari slide yang diperoleh dari website: romisatriowahono.net karya Bapak Romi Satrio Wahono

Page 24: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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. Ditampilkan dalam bentuksemacam tabel

Page 25: ENKAPSULASI -  · PDF filekemudi, sistem pengereman Alat untuk meng-abstraksikan sesuatu adalah class Object bersifat modularity. ... (Soal, Narasi Jawaban, Diagram Class,

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;