karakteristik pbo - dinus.ac.iddinus.ac.id/repository/docs/ajar/karakteristik_pbo.pdf · 18...
TRANSCRIPT
1
Abstraction, encapsulation, inheritance, polymorphism
Karakteristik PBO
2
Abstraction
▪ Cara kita melihat suatu sistem dalam bentuk yanglebih sederhana, yaitu sebagai suatu kumpulansubsistem (object) yang saling berinteraksi.
• Mobil adalah kumpulan sistem pengapian, sistemkemudi, sistem pengereman
▪ Alat meng-abstraksikan sesuatu adalah class
▪ Object bersifat modularity. Object dapat ditulis dandimaintain terpisah (independen) dari object lain
3
4
5
Encapsulation
▪ Mekanisme menyembunyikan suatu proses dan datadalam sistem untuk menghindari interferensi, danmenyederhanakan penggunaan proses itu sendiri
• Tongkat transmisi (gigi) pada mobil
• Tombol on/off/pengaturan suhu pada AC
▪ Class access level (public, protected, privat) adalahimplementasi dari konsep encapsulation
▪ Enkapsulasi data dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private
2. mendeklarasikan method yang sifatnya public untukmengakses variable tersebut
6
Class Lingkaran{
void buatLingkaran(){
for(){
Garis.buatGaris()
}
}
class Garis{
private void buatTitik(x, y){
}
public void buatGaris(tA, tB){
}
}
8
Encapsulation dan Access Modifier
ModifierDalam Class yang Sama
DalamPackage yang Sama
DalamSubClass
DalamPackage Lain
private ✓
tanpatanda
✓ ✓
protected ✓ ✓ ✓
public ✓ ✓ ✓ ✓
9
Encapsulation
▪ Enkapsulasi data juga dapat dilakukan dengan cara:
1. mendeklarasikan instance variable sebagai private
2. mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut
10
Sepeda.java
public class Sepeda{
int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
11
SepedaBeraksi.java
public class SepedaBeraksi{
public static void main(String[] args) {
Sepeda sepedaku = new Sepeda();
sepedaku.setGir(1);
/* Variabel bisa diubah atau tidak sengaja diubah.
Hal ini berbahaya dan sering menimbulkan bug.
Berikan access modifier private pada instancevariable */
sepedaku.gir = 3;
System.out.println(“Gir saat ini: “ + sepedaku.getGir());
}
}
12
Sepeda.java
public class Sepeda{
private int gir; // access modifier private pada instance variable
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
13
Inheritance (Pewarisan)
▪ Suatu class dapat mewariskan atribut dan method kepada class lain (subclass), serta membentuk class hierarchy
▪ Penting untukReusability
▪ Java Keyword:extends
14
Sepeda.java
public class Sepeda{
private int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
15
Class SepedaGunung Mewarisi Class Sepeda
public class SepedaGunungextends Sepeda{
private int sadel;
void setSadel (int jumlah) {
sadel = getGir() -jumlah;
}
int getSadel(){
return sadel;
}
}
public class SepedaGunungBeraksi {
public static void main(String[] args) {
SepedaGunung sg=newSepedaGunung();
sg.setGir(3);
System.out.println(sg.getGir());
sg.setSadel(1);
System.out.println(sg.getSadel());
}
}
SepedaGunung.java SepedaGunungBeraksi.java
16
Latihan: Inheritance Matematika
1. Buat class MatematikaCanggih yang merupakan inherit dari class Matematika
1. Tambahkan method modulus(int a, int b) yang menghitungmodulus dari a dan b
1. Operator modulus adalah %
2. Buat class MatematikaCanggihBeraksi yang memanggil method pertambahan, perkalian danmodulus
18
Polymorphism
▪ Kemampuan untuk memperlakukan object yangmemiliki perilaku (bentuk) yang berbeda
▪ Implementasi konsep polymorphism:
1. Overloading: Kemampuan untuk menggunakan nama yangsama untuk beberapa method yang berbeda parameter(tipe dan atau jumlah)
2. Overriding: Kemampuan subclass untuk menimpa methoddari superclass, yaitu dengan cara menggunakan nama danparameter yang sama pada method
19
Polymorphism – Overloadingclass Mobil {
String warna;
int tahunProduksi;
public Mobil(String warna, int tahunProduksi){
this.warna = warna;
this.tahunProduksi = tahunProduksi;
}
public Mobil(){
}
void info(){
System.out.println("Warna: " + warna);
System.out.println("Tahun: " + tahunProduksi);
}
}
public class MobilKonstruktor{
public static void main(String[] args){
Mobil mobilku = new Mobil(“Merah”, 2003);
mobilku.info();
Mobil mobilmu = new Mobil();
mobilmu.info();
}
}
20
Polymorphism – Overloading
class Lingkaran{
void gambarLingkaran(){
}
void gambarLingkaran(int diameter){
...
}
void gambarLingkaran(double diameter){
...
}
void gambarLingkaran(int diameter, int x, int y){...
}
void gambarLingkaran(int diameter, int x, int y, int warna, String namaLingkaran){...
}
}
21
Polymorphism - Overriding
public class Sepeda{
private int gir;
void setGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
}
int getGir() {
return gir;
}
}
22
Polymorphism - Overriding
public class SepedaGunung extendsSepeda{
void setGir(int pertambahanGir) {
super.setGir(pertambahanGir);
gir = 2*getGir();
}
}
public class SepedaGunungBeraksi {
public static void main(String[] args) {
SepedaGunung sg=newSepedaGunung();
sg.setGir(2);
System.out.println(sg.getGir());
sg.setGir(3);
System.out.println(sg.getGir());
}
}
SepedaGunung.java SepedaGunungBeraksi.java
23
Latihan: Overloading pada Matematika
1. Kembangkan class Matematika, MatematikaCanggih dan MatematikaBeraksi
2. Lakukan overloading pada Method yang ada (pertambahan, pengurangan, perkalian, pembagian, modulus)
3. Tambahkan method baru bertipe data double (pecahan) dan memiliki 3 parameter
4. Uji di kelas MatematikaBeraksi dengan parameter pecahan: 12.5, 28.7, 14.2
5. Misalnya: pertambahan(12.5, 28.7, 14.2) pertambahan(12, 28, 14)pertambahan(23, 34) pertambahan(3.4, 4.9)
24
Matematika.java
public class Matematika{
void pertambahan (int a, int b){
int hasil= a + b;
System.out.println(“hasil:” + hasil);
}
void pertambahan (double a, double b, double c){
double hasil= a + b + c;
System.out.println(“hasil:” + hasil);
}
...
}
25
Skill Check
1. Class: HaloSemarang
2. Variable: Mobil
3. Method: Bank
4. Parameter: Matematika
5. Encapsulation: Sepeda
6. Inheritance: MatematikaCanggih
7. Polimorphism: Matematika
26
Referensi
▪ http://romisatriawahono.net/lectures/
▪ Object First With Java, Fifth edition, David J. Barnes & Michael Kölling, Prentice Hall / Pearson Education, 2012.
▪ The JavaTM Tutorial, http://docs.oracle.com/javase/tutorial/java/nutsandbolts/, Oracle, 1995-2014.
▪ Java SE Tutorial, http://www.oracle.com/technetwork/java/javase/downloads/java-se-7-tutorial-2012-02-28-1536013.html, Oracle, 2014.
▪ SCJP Sun Certified Programmer for JavaTM 6 Study Guide Exam (310-065), Kathy Sierra & Bert Bates, Mc Graw Hill, 2008.