PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program...
Transcript of PEMROGRAMAN LANJUT - · PDF fileLatihan • Buat Diagram Class dan implementasi Program...
PEMROGRAMAN LANJUT
FakultasIlmuKomputer,UniversitasBrawijaya
ENKAPSULASIData Hiding
Dr.Eng.HermanTolle,ST.,MT
Sistem Informasi FILKOM UBSemester Genap 2016/2017
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)
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
Info Pertemuan
Tanggal : 7 Maret 2017Ruang & Waktu : A2.20, Jam 07.00 – 8.40Materi : Pengenalan Konsep Enkapsulasi
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
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
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
private2. mendeklarasikan method yang sifatnya public
untuk mengakses variable tersebut
Encapsulation dan Access Modifier
Modifier Dalam ClassyangSama
Dalam PackageyangSama
DalamSubClass
DalamPackageLain
private ü
tanpatanda ü ü
protected ü ü ü
public ü ü ü ü
Encapsulation
• Enkapsulasi data juga dapat dilakukan dengan cara:1. mendeklarasikan instance variable sebagai private2. mendeklarasikan method yang sifatnya public untuk
mengakses variable tersebut
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)
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());
}
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);
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();
}
Studi Kasus
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;
}
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