PEMROGRAMAN LANJUT Sistem Informasi FILKOM UB Semester Genap 2016/2017 ENKAPSULASI Data Hiding Dr. Eng. Herman Tolle, ST., MT Fakultas Ilmu Komputer, Universitas Brawijaya
Pemrograman Lanjut 1. Nama Matakuliah : PemrogramanLanjut 2. Kode/SKS : CSD60022 / 5 (4-1) SKS 3. Semester : Genap 4. Kelas : A 5. Program Studi : Teknologi Informasi Universitas Brawijaya 6. 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)
Materi Pemrograman Lanjut 1. Review Pemrograman Dasar 2. Konsep OOP, 3. Class dan object, 4. Diagram UML Class, 5. Fungsi Overloading dan Konstruktor, 6. Enkapsulasi, 7. Inheritance/pewarisan, 8. Polymorphism 9. Interface & Abstract Class Pemrograman Berorientasi Objek
Info Pertemuan Tanggal : 7 Maret 2017 Ruang & Waktu : A2.20, Jam 07.00 8.40 Materi : Pengenalan Konsep Enkapsulasi
Tujuan Pembelajaran Setelahmengikuti materi ini, diharapkan Mahasiswa dapat memahami konsep Abstraksi dan Enkapsulasi pada pemrograman berorientasi obyek (OOP) Mahasiswa mampu membuat class dan instansiasi objek yang menerapkan konsep enkapsulasi
Kata Kunci / Keyword 1. Encapsulation Enkapsulasi 2. Abstraction Abstraksi 3. FungsiGET danfungsiset 4. Instance Variable 5. Access Modifier (Public dan Private) à Fields/Atribut 6. Visibility Modifier (Public dan Private) à Methods 7. Tipe Data (Primitive dan Reference) 8. Immutable Object danclass
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 Tombol Ganti channel atau Volume pada Remote TV 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
Method Set dan Get Semua atribut dibuat private Membuat method SET untuk menginput nilai padaatribut 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 imunterhadap akses secara langsung (immutable class)
Contoh Method SET & GET public Cubes { private int Panjang; private int Lebar;... public void setpanjang(int P) { Panjang = P; public KubusBeraksi { Cubes mybox1 = new Cubes(); mybox1.setpanjang(10); int H = mybox1.getpanjang(); // akses lewat variabel S.o.p( Panjang = + H); public int getpanjang() { return Panjang;... // akses lsg dari fungsi get S.o.p( Panjang = + mybox1.getpanjang());
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);
public class Bank { private double saldo; Contoh 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); else S.o.p( Saldo tidak mencukupi ); this.ceksaldo(); void SimpanUang(double S) { this.saldo += S; S.o.p( Simpan Uang Rp +S); this.ceksaldo();
Studi Kasus
public class Circle { private double radius; private String color; Circle.java 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;
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;
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(); 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
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
Referensi
Terima Kasih