PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program...

27
PEMROGRAMAN LANJUT Fakultas Ilmu Komputer, Universitas Brawijaya ENKAPSULASI Data Hiding Dr. Eng. Herman Tolle, ST., MT Sistem Informasi FILKOM UB Semester Genap 2016/2017

Transcript of PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program...

Page 1: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

PEMROGRAMAN LANJUT

FakultasIlmuKomputer,UniversitasBrawijaya

ENKAPSULASIData Hiding

Dr.Eng.HermanTolle,ST.,MT

Sistem Informasi FILKOM UBSemester Genap 2016/2017

Page 2: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Pemrograman Lanjut

1. Nama Matakuliah : Pemrograman Lanjut2. Kode/SKS : CSD60022 / 5 (4-1) SKS 3. Semester : Genap4. Kelas : A5. Program Studi : Teknologi Informasi –Universitas Brawijaya6. Dosen : Dr. Eng. Herman Tolle, ST., MT.7. Asisten :8. Jadwal Kuliah :

– Senin, 14.30 – 16.10, Ruang E1.2 (Teori)– Selasa, 07.00 – 8.40, Ruang A2.20 (Teori)– Rabu, 14.30 – 16.10, Ruang B1.8 (Praktikum)

Page 3: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Materi Pemrograman Lanjut

1. Review Pemrograman Dasar2. Konsep OOP, 3. Class dan object, 4. Diagram UML Class, 5. Fungsi Overloading dan Konstruktor,6. Enkapsulasi, 7. Inheritance/pewarisan, 8. Polymorphism9. Interface & Abstract Class

PemrogramanBerorientasi

Objek

Page 4: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Info Pertemuan

Tanggal : 7 Maret 2017Ruang & Waktu : A2.20, Jam 07.00 – 8.40Materi : Pengenalan Konsep Enkapsulasi

Page 5: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Tujuan Pembelajaran

Setelah mengikuti materi ini, diharapkan• Mahasiswa dapat memahami konsep Abstraksi

dan Enkapsulasi pada pemrograman berorientasiobyek (OOP)

• Mahasiswa mampu membuat class dan instansiasiobjek yang menerapkan konsep enkapsulasi

Page 6: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Kata Kunci / Keyword

1. Encapsulation | Enkapsulasi2. Abstraction | Abstraksi3. Fungsi GET dan Fungsi SET4. Instance Variable5. Access Modifier (Public dan Private) à Fields/Atribut6. Visibility Modifier (Public dan Private) à Methods7. Tipe Data (Primitive dan Reference)8. Immutable Object dan Class

Page 7: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

ABSTRAKSI & ENKAPSULASI

Page 8: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

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

Page 9: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT
Page 10: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT
Page 11: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

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• Tombol Ganti channel atau Volume pada Remote TV

• Class access level (public, protected, private) adalah implementasi dari konsep encapsulation

Page 12: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

• Enkapsulasi data dapat dilakukan dengan cara:1. mendeklarasikan instance variable sebagai

private2. mendeklarasikan method yang sifatnya public

untuk mengakses variable tersebut

Page 13: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT
Page 14: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Encapsulation dan Access Modifier

Modifier Dalam ClassyangSama

Dalam PackageyangSama

DalamSubClass

DalamPackageLain

private ü

tanpatanda ü ü

protected ü ü ü

public ü ü ü ü

Page 15: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Encapsulation

• Enkapsulasi data juga dapat dilakukan dengan cara:1. mendeklarasikan instance variable sebagai private2. mendeklarasikan method yang sifatnya public untuk

mengakses variable tersebut

Page 16: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Method Set dan Get

• Semua atribut dibuat private• Membuat method SET untuk menginput nilai pada atribut

tersebut• Membuat method GET untuk menampilkan nilai dari atribut

tersebut• Method Set dan Get bukan method bawaan Java tetapi

method yang didefiniskan sendiri oleh programmer (User defined function)

• Tujuannya agar setiap atribut menjadi imun terhadap aksessecara langsung (immutable class)

Page 17: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

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 18: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Diagram Class

BANK

private Saldo: double;

Bank (double S);public AmbilUang(double S);public SimpanUang(double S);public cekSaldo(double S);

BANK

- Saldo: double;

+Bank (double S);+AmbilUang(double S);+SimpanUang(double S);+cekSaldo(double S);

Page 19: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Contohpublic class Bank{

private double saldo;

Bank(double S) {this.saldo = S;S.o.println(“Selamat Datang di Bank ABC“);this.cekSaldo();}

public void cekSaldo() {S.o.p(“Saldo saat ini

Rp “+saldo);}

}

void AmbilUang(double S) {if (this.saldo-S>=0){

this.saldo -= S;S.o.p(“Ambil Uang Rp “+S);

}elseS.o.p(“Saldo tidak mencukupi”);this.cekSaldo();

}

void SimpanUang(double S) {this.saldo += S;S.o.p(“Simpan Uang Rp “+S);this.cekSaldo();

}

Page 20: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Studi Kasus

Page 21: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Circle.javapublic class Circle { private double radius; private String color;

public Circle() { // 1st Constructor radius = 10; color = “RED”;

} public Circle(double radius) { // 2nd Constructor this.radius = radius; color = “RED”;

} public Circle(double radius, String color) { // 3rd

Constructor this.radius = radius; this.color = color;

}

Page 22: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Circle.java// Public getter and setter for private variables public double getRadius() { return radius; }

public void setRadius(double radius) { this.radius = radius; }

public String getColor() { return color; }

public void setColor(String color) { this.color = color; }

// toString() to provide a short description of this instance public String toString() { return "Circle with radius = " + radius + " and color of " + color;

}

// Public methods public double getArea() { return radius*radius*Math.PI; } }

Page 23: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

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)

Page 24: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

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

• 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

Page 25: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

TUGAS LATIHAN

• 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

Page 26: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Referensi

Page 27: PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program dalam bentuk Classdan penggunaan Kelas tersebut. • Studi Kasus: Menghitung gaji harian PT

Terima Kasih