• Tidak ada hasil yang ditemukan

OOP Java. 05 Encapsulation & Inheritance

N/A
N/A
Protected

Academic year: 2021

Membagikan "OOP Java. 05 Encapsulation & Inheritance"

Copied!
24
0
0

Teks penuh

(1)

OOP Java

OOP Java

05 Encapsulation &

05 Encapsulation &

Inheritance

Inheritance

(2)

Materi yg akan dibahas :

Materi yg akan dibahas :

Encapsulation

Encapsulation

Access control modifier

Access control modifier

Get & set methods

Get & set methods

Constructor

Constructor

Inheritance

Inheritance

„ „

Inheritance

Inheritance

„

„

Keyword this & super

Keyword this & super

Overloading

Overloading

„

„

Overloading Constructors

Overloading Constructors

„

(3)

Encapsulation (pembungkusan)

Encapsulation (pembungkusan)

Atribut & method digabung menjadi satu

Atribut & method digabung menjadi satu

Æ

Æ

kelas / objek

kelas / objek

Akses terhadap atribut & method dapat diatur

Akses terhadap atribut & method dapat diatur

Æ

(4)

Access control modifier

Access control modifier

Modifier =class

Modifier =class

=package

=package

subclass

subclass

universe

universe

private

private

ya

ya

tdk

tdk

tdk

tdk

tdk

tdk

default

default

ya

ya

ya

ya

tdk tdk

tdk tdk

protected

protected

ya

ya

ya

ya

ya

ya

tdk

tdk

public

public

ya

ya

ya

ya

ya

ya

ya

ya

Modifier default berlaku jika tidak ditulis modifier

Modifier default berlaku jika tidak ditulis modifier

lain (tanpa ditulis secara eksplisit).

lain (tanpa ditulis secara eksplisit).

Access control subclass tidak boleh lebih

Access control subclass tidak boleh lebih

sempit / tertutup dari kelas induknya

(5)

Get / set method (1)

Get / set method (1)

public class Mobil1 {

public class Mobil1 {

private String tipe;

private String tipe;

private int jumlahRoda;

private int jumlahRoda;

public void setTipe(String ptipe) {

public void setTipe(String ptipe) {

tipe = ptipe;

tipe = ptipe;

}

}

public void setJumlahRoda(int pjumlah_roda) {

public void setJumlahRoda(int pjumlah_roda) {

jumlahRoda = pjumlah_roda;

jumlahRoda = pjumlah_roda;

}

}

public String getTipe() {

public String getTipe() {

return tipe;

return tipe;

}

}

public int getJumlahRoda() {

public int getJumlahRoda() {

return jumlahRoda;

return jumlahRoda;

}

}

}

}

(6)

Get / set method (2)

Get / set method (2)

Latihan :

Latihan :

„

„

Buatlah kelas TestMobil1 dan coba mengakses

Buatlah kelas TestMobil1 dan coba mengakses

atribut kelas Mobil1 secara langsung &

atribut kelas Mobil1 secara langsung &

menggunakan get & set method.

menggunakan get & set method.

Good practice : Biasakan membuat &

Good practice : Biasakan membuat &

menggunakan get / set method.

(7)

Get / set method (3)

Get / set method (3)

public class TestMobil1 {

public class TestMobil1 {

public static void main(String[] args) {

public static void main(String[] args) {

Mobil1 mbl = new Mobil1();

Mobil1 mbl = new Mobil1();

mbl.tipe =

mbl.tipe =

Jeep

Jeep

”;

;

mbl.jumlahRoda = 4;

mbl.jumlahRoda = 4;

System.out.println(

System.out.println(

“Tipe :

Tipe :

+ mbl.tipe);

+ mbl.tipe);

System.out.println(

System.out.println(

Jml Roda :

Jml Roda :

+ mbl.jumlahRoda);

+ mbl.jumlahRoda);

mbl.setTipe(

mbl.setTipe(

“Bus

Bus”

”);

);

mbl.setJumlahRoda(6);

mbl.setJumlahRoda(6);

System.out.println(

System.out.println(

“Tipe :

Tipe :

+ mbl.getTipe());

+ mbl.getTipe());

System.out.println(

System.out.println(

Jml Roda :

Jml Roda :

+ mbl.getJumlahRoda());

+ mbl.getJumlahRoda());

}

}

}

}

(8)

Get / set method (4)

Get / set method (4)

Bagaimana caranya mengakses atribut yg

Bagaimana caranya mengakses atribut yg

aksesnya terbatas ?

aksesnya terbatas ?

jawab : menggunakan get (ambil) & set (ubah)

jawab : menggunakan get (ambil) & set (ubah)

method.

method.

Get & set method dibuat didalam kelas supaya

Get & set method dibuat didalam kelas supaya

pihak luar tidak mengakses atribut secara

pihak luar tidak mengakses atribut secara

langsung, sehingga kontrol & konsistensi dapat

langsung, sehingga kontrol & konsistensi dapat

dijaga.

dijaga.

Get & set method biasanya memiliki akses

Get & set method biasanya memiliki akses

kontrol public.

(9)

Constructor (1)

Constructor (1)

public class Mobil2 {

public class Mobil2 {

private String tipe;

private String tipe;

private int jumlahRoda;

private int jumlahRoda;

public Mobil2() {

public Mobil2() {

//default constructor

//default constructor

tipe =

tipe =

tidak diketahui

tidak diketahui

;

;

jumlahRoda = 4;

jumlahRoda = 4;

System.out.println(

System.out.println(

Mobil2() dijalankan

Mobil2() dijalankan

);

);

}

}

public Mobil2(String ptipe, int pjroda) {

public Mobil2(String ptipe, int pjroda) {

//user

//user

-

-

defined constructor

defined constructor

tipe = ptipe;

tipe = ptipe;

jumlahRoda = pjroda;

jumlahRoda = pjroda;

System.out.println(

System.out.println(

Mobil2(String ptipe, int pjroda) dijalankan

Mobil2(String ptipe, int pjroda) dijalankan

);

);

}

}

// get & set methods letakkan disini

// get & set methods letakkan disini

}

(10)

Constructor (2)

Constructor (2)

public class TestMobil2 {

public class TestMobil2 {

public static void main(String[] args) {

public static void main(String[] args) {

Mobil2 mob1 = new Mobil2();

Mobil2 mob1 = new Mobil2();

// default constructor dipanggil

// default constructor dipanggil

Mobil2 mob2 = new Mobil2(

Mobil2 mob2 = new Mobil2(

SUV

SUV

, 4);

, 4);

//user

//user

-

-

defined

defined

System.out.println(

System.out.println(

Tipe mobil 1 :

Tipe mobil 1 :

+ mob1.getTipe());

+ mob1.getTipe());

System.out.println(

System.out.println(

Jml roda mobil 1 :

Jml roda mobil 1 :

+ mob1.getJumlahRoda());

+ mob1.getJumlahRoda());

mob1.setTipe(

mob1.setTipe(

Truck

Truck

);

);

mob1.setJumlahRoda(6);

mob1.setJumlahRoda(6);

System.out.println(

System.out.println(

Tipe mobil 1 :

Tipe mobil 1 :

+ mob1.getTipe());

+ mob1.getTipe());

System.out.println(

System.out.println(

Jml roda mobil 1 :

Jml roda mobil 1 :

+ mob1.getJumlahRoda());

+ mob1.getJumlahRoda());

System.out.println(

System.out.println(

Tipe mobil 2 :

Tipe mobil 2 :

+ mob2.getTipe());

+ mob2.getTipe());

System.out.println(

System.out.println(

Jml roda mobil 2 :

Jml roda mobil 2 :

+ mob2.getJumlahRoda());

+ mob2.getJumlahRoda());

}

}

}

(11)

Constructor (3)

Constructor (3)

Method khusus yg otomatis dijalankan ketika

Method khusus yg otomatis dijalankan ketika

objek dibuat dari kelasnya.

objek dibuat dari kelasnya.

Memiliki nama yg sama dengan nama kelasnya

Memiliki nama yg sama dengan nama kelasnya

Dalam satu kelas bisa terdapat beberapa

Dalam satu kelas bisa terdapat beberapa

konstruktor (dengan parameter yg berbeda2).

konstruktor (dengan parameter yg berbeda2).

Default constructor adalah constructor yg tidak

Default constructor adalah constructor yg tidak

memiliki parameter.

memiliki parameter.

Format constructor :

Format constructor :

„

„

public <nama_kelas>(<parameter>) { }

public <nama_kelas>(<parameter>) { }

Constructor dapat digunakan untuk inisialisasi

(12)

Constructor (4)

Constructor (4)

Lakukanlah hal berikut :

Lakukanlah hal berikut :

„

„

Cobalah jalankan Mobil2 & TestMobil2, amatilah constructor

Cobalah jalankan Mobil2 & TestMobil2, amatilah constructor

mana saja yg dijalankan.

mana saja yg dijalankan.

„

„

Cobalah buang (ubah menjadi komentar)

Cobalah buang (ubah menjadi komentar)

semua

semua

constructor

constructor

dan jalankan kelas Testnya. Apa yg terjadi ?

dan jalankan kelas Testnya. Apa yg terjadi ?

„

„

Cobalah buang (ubah menjadi komentar)

Cobalah buang (ubah menjadi komentar)

default

default

constructor

constructor

dan jalankan kelas Testnya. Apa yg terjadi ?

dan jalankan kelas Testnya. Apa yg terjadi ?

Jika tidak terdapat konstruktor secara eksplisit, maka

Jika tidak terdapat konstruktor secara eksplisit, maka

secara otomatis dibuatkan sebuah default constructor.

secara otomatis dibuatkan sebuah default constructor.

Sebaliknya jika terdapat constructor, maka default

Sebaliknya jika terdapat constructor, maka default

constructor tidak akan dibuatkan secara otomatis.

constructor tidak akan dibuatkan secara otomatis.

Good practice : Biasakan membuat semua constructor

Good practice : Biasakan membuat semua constructor

(default, user defined dg 1 s/d n parameter)

(default, user defined dg 1 s/d n parameter)

(13)

Inheritance (1)

Inheritance (1)

Komputer Desktop Notebook Games Multimedia Server studentNb subNb MailSrv LAN Video Audio Graphic RPG Arcade Internet WebSrv ChatSrv GameSrv MultimediaNb

(14)

Inheritance (2)

Inheritance (2)

public class Angkot extends Mobil2 { public class Angkot extends Mobil2 {

private String jurusan; private String jurusan; public Angkot() {

public Angkot() {

System.out.println(

System.out.println(““Angkot() dijalankanAngkot() dijalankan””);); }

}

//buat get & set untuk atribut jurusan //buat get & set untuk atribut jurusan }

} //

//--- ---public class TestAngkot {

public class TestAngkot {

public static void main(String[] args) { public static void main(String[] args) {

Angkot a = new Angkot(); Angkot a = new Angkot(); a.setTipe(

a.setTipe(““KijangKijang””);); a.setJumlahRoda(4); a.setJumlahRoda(4); a.setJurusan(

a.setJurusan(““Pasteur Pasteur –– Stasiun Hall”Stasiun Hall”);); System.out.println(

System.out.println(““Angkot : Angkot : ““ + a.getJurusan() + “+ a.getJurusan() + “ ““ + a.getTipe() + + a.getTipe() + “ “ ““ + a.getJumlahRoda();+ a.getJumlahRoda(); } } } }

(15)

Inheritance (3)

Inheritance (3)

public class MobilSport extends Mobil2 { public class MobilSport extends Mobil2 {

private String nama; private String nama; private int maxSpeed; private int maxSpeed; public MobilSport() {

public MobilSport() { //default constructor//default constructor nama =

nama = “nama mobil sport“nama mobil sport””;; maxSpeed = 300;

maxSpeed = 300; System.out.println(

System.out.println(““MobilSport() dijalankanMobilSport() dijalankan””);); }

}

public MobilSport(String pnama, int pmaxSpeed) {

public MobilSport(String pnama, int pmaxSpeed) { //user//user-defined constr-defined constr super(

super(““sportsport””, 4);, 4); nama = pnama; nama = pnama;

maxSpeed = pmaxSpeed; maxSpeed = pmaxSpeed; System.out.println(

System.out.println(““MobilSport(String pnama, int pmaxSpeed) dijalankanMobilSport(String pnama, int pmaxSpeed) dijalankan”);”); }

}

public MobilSport(String pnama) {

public MobilSport(String pnama) { //user//user-defined constr-defined constr this(pnama, 350);

this(pnama, 350); System.out.println(

System.out.println(““MobilSport(String pnama) dijalankanMobilSport(String pnama) dijalankan”);”); }

}

// get & set methods untuk atribut nama & maxSpeed dibuat disini // get & set methods untuk atribut nama & maxSpeed dibuat disini }

(16)

Inheritance (4)

Inheritance (4)

public class TestMobilSport { public class TestMobilSport {

public static void main(String[] args) { public static void main(String[] args) {

MobilSport mbl1 = new MobilSport(); MobilSport mbl1 = new MobilSport(); MobilSport mbl2 = new MobilSport(

MobilSport mbl2 = new MobilSport(““Toyota CelicaToyota Celica””, 250);, 250); MobilSport mbl3 = new MobilSport(

MobilSport mbl3 = new MobilSport(““Ferrari F50Ferrari F50””);); System.out.println(

System.out.println(““Tipe mbl1 : Tipe mbl1 : ”” + mbl1.getTipe());+ mbl1.getTipe()); System.out.println(

System.out.println(““Jumlah roda mbl1 : Jumlah roda mbl1 : ”” + mbl1.getJumlahRoda());+ mbl1.getJumlahRoda()); System.out.println(

System.out.println(““Nama mbl1 Nama mbl1 : ”: ” + mbl1.getNama());+ mbl1.getNama()); System.out.println(

System.out.println(““Max Speed mbl1 : ”Max Speed mbl1 : ” + mbl1.getMaxSpeed());+ mbl1.getMaxSpeed()); System.out.println(

System.out.println(““Tipe mbl2 : Tipe mbl2 : ”” + mbl2.getTipe());+ mbl2.getTipe()); System.out.println(

System.out.println(““Jumlah roda mbl2 : Jumlah roda mbl2 : ”” + mbl2.getJumlahRoda());+ mbl2.getJumlahRoda()); System.out.println(

System.out.println(““Nama mbl2 Nama mbl2 : ”: ” + mbl2.getNama());+ mbl2.getNama()); System.out.println(

System.out.println(““Max Speed mbl2 : ”Max Speed mbl2 : ” + mbl2.getMaxSpeed());+ mbl2.getMaxSpeed()); System.out.println(

System.out.println(““Tipe mbl3 : Tipe mbl3 : ”” + mbl3.getTipe());+ mbl3.getTipe()); System.out.println(

System.out.println(““Jumlah roda mbl3 : Jumlah roda mbl3 : ”” + mbl3.getJumlahRoda());+ mbl3.getJumlahRoda()); System.out.println(

System.out.println(““Nama mbl3 Nama mbl3 : ”: ” + mbl3.getNama());+ mbl3.getNama()); System.out.println(

System.out.println(““Max Speed mbl3 : ”Max Speed mbl3 : ” + mbl3.getMaxSpeed());+ mbl3.getMaxSpeed()); }

} } }

(17)

Inheritance (5)

Inheritance (5)

Inheritance (pewarisan) digunakan pada kelas2 yg

Inheritance (pewarisan) digunakan pada kelas2 yg

memiliki hubungan generalization

memiliki hubungan generalization

-

-

specification atau

specification atau

whole

whole

-

-

part.

part.

Mewarisi semua atribut & method kelas induknya.

Mewarisi semua atribut & method kelas induknya.

Menggunakan keyword

Menggunakan keyword

extends

extends

.

.

Keyword

Keyword

super(

super(

)

)

digunakan untuk memanggil

digunakan untuk memanggil

konstruktor kelas induknya (jika diperlukan). Jika

konstruktor kelas induknya (jika diperlukan). Jika

digunakan harus merupakan statement pertama dari

digunakan harus merupakan statement pertama dari

constructor.

constructor.

Keyword

Keyword

this(

this(

)

)

digunakan untuk memanggil

digunakan untuk memanggil

konstruktor lain dikelas yg sama.

konstruktor lain dikelas yg sama.

Keyword

Keyword

super.[atribut | method()]

super.[atribut | method()]

: memanggil atribut

: memanggil atribut

/ method dari kelas induknya

/ method dari kelas induknya

Keyword

Keyword

this.[atribut | method()]

this.[atribut | method()]

: memanggil atribut /

: memanggil atribut /

method dari objek / kelas yg sama

(18)

Overloading (1)

Overloading (1)

Overloading : constructor / method dalam kelas

Overloading : constructor / method dalam kelas

yg sama yg memiliki nama sama, tetapi signature

yg sama yg memiliki nama sama, tetapi signature

(tipe / jumlah / urutan parameter) berbeda.

(tipe / jumlah / urutan parameter) berbeda.

Ketika dipergunakan, method mana yg akan

Ketika dipergunakan, method mana yg akan

dipanggil ditentukan secara otomatis

dipanggil ditentukan secara otomatis

berdasarkan kesesuaian tipe / jumlah / urutan

berdasarkan kesesuaian tipe / jumlah / urutan

parameternya.

parameternya.

Perhatian : jangan tertukar dengan overriding.

Perhatian : jangan tertukar dengan overriding.

Overriding : method pada kelas anak yg memiliki

Overriding : method pada kelas anak yg memiliki

nama

nama

,

,

return type

return type

&

&

parameter

parameter

yg sama dengan

yg sama dengan

method pd kelas induknya.

(19)

Overloading

Overloading

Constructors (2)

Constructors (2)

public class Kotak { public class Kotak { private String id; private String id; private int panjang; private int panjang; private int lebar; private int lebar;

public Kotak(String pid, int p, int l) { public Kotak(String pid, int p, int l) {

id = pid; id = pid; panjang = p; panjang = p; lebar = l; lebar = l; } }

public Kotak(int p, int l) { public Kotak(int p, int l) {

this("Unknown", p, l); this("Unknown", p, l); //id = "Unknown"; //id = "Unknown"; //panjang = p; //panjang = p; //lebar = l; //lebar = l; } } public Kotak() { public Kotak() { this(0, 0); this(0, 0); //id = "Unknown"; //id = "Unknown"; //panjang = 0; //panjang = 0; //lebar = 0; //lebar = 0; } } } }

this(0,0) memanggil constructor

Kotak(int p, int l)‏

this(“Unknown”, p, l) memanggil

constructor Kotak(String pid, int p,

int l)

(20)

Overloading

Overloading

Constructors (3)

Constructors (3)

Meng

Meng

-

-

Overload Constructor sering terjadi

Overload Constructor sering terjadi

karena didalam sebuah kelas biasanya

karena didalam sebuah kelas biasanya

terdapat beberapa konstruktor.

terdapat beberapa konstruktor.

Reference

Reference

this

this

dapat digunakan untuk

dapat digunakan untuk

meneruskan pemanggilan ke constructor

meneruskan pemanggilan ke constructor

yang lain dalam kelas yang sama.

yang lain dalam kelas yang sama.

Berguna supaya tidak mengulang kode

Berguna supaya tidak mengulang kode

yang sama di setiap constructor.

(21)

Overloading

Overloading

Methods (4)

Methods (4)

public class Mahasiswa {

public class Mahasiswa {

private String nrp =

private String nrp = ““04720010472001””;; private String nama =

private String nama = ““AndriAndri””;; private int nilai_akhir = 80;

private int nilai_akhir = 80;

private char nilai_huruf =

private char nilai_huruf = ‘‘AA’’;;

//constructors

//constructors …… //methods

//methods

public void Cari(String pnrp) {

public void Cari(String pnrp) {

//

//……algoritma pencarian disinialgoritma pencarian disini

System.out.println(

System.out.println(““Ketemu : Ketemu : ””+ nrp);+ nrp);

}

}

public void Cari(String pnama) { //error already defined

public void Cari(String pnama) { //error already defined

//

//……algoritma pencarian disinialgoritma pencarian disini System.out.println(

System.out.println(““Ketemu : Ketemu : ””+ nama);+ nama);

}

}

public void Cari(int pnilai_akhir) {

public void Cari(int pnilai_akhir) {

//

//……algoritma pencarian disinialgoritma pencarian disini System.out.println(

System.out.println(““Ketemu : Ketemu : ””+ nilai_akhir);+ nilai_akhir);

}

}

public void Cari(char pnilai_huruf) {

public void Cari(char pnilai_huruf) {

//

//……algoritma pencarian disinialgoritma pencarian disini System.out.println(

System.out.println(““Ketemu : Ketemu : ””+ nilai_huruf);+ nilai_huruf);

}

}

}

}

public class TestMahasiswa {

public static void main(String[] ar) {

Mahasiswa mhs = new Mahasiswa(); //terusin ya…kan udah bisa….

} }

(22)

Overloading Methods (5)

Overloading Methods (5)

Sama seperti constructor, method juga

Sama seperti constructor, method juga

dapat di overload

dapat di overload

Jika tipe, jumlah & urutan parameter sama

Jika tipe, jumlah & urutan parameter sama

Æ

Æ

error.

error.

Apa penyebabnya (tanya ken

(23)

Overloading Methods (6)

Overloading Methods (6)

Konversi tipe data

Konversi tipe data

otomatis dapat

otomatis dapat

berpengaruh

berpengaruh

terhadap

terhadap

pemanggilan

pemanggilan

method yg di

method yg di

overload

overload

public class TypeConv {

public static void main(String[] args) { Overload2 ov = new Overload2(); int i = 10;

double d = 12.5; byte b = 77; short s = 10; float f = 3.14F;

ov.f(i); //yg dipanggil f(int)‏ ov.f(d); //yg dipanggil f(double)‏

ov.f(b); //yg dipanggil f(int) - konversi tipe otomatis ov.f(s); //yg dipanggil f(int) - konversi tipe otomatis ov.f(f); //yg dipanggil f(double) - konversi tipe otomatis }

}

class Overload2 { void f(int x) {

System.out.println("Didalam fungsi f(int), x = " + x); }

void f(double x) {

System.out.println("Didalam fungsi f(double), x = " + x); }

(24)

Programming

Programming

everyday keeps

everyday keeps

The Brain

The Brain

Healthy

Healthy

Referensi

Dokumen terkait

Berbeda halnya jika kemaslahatan itu tidak dijelaskan secara eksplisit dalam kedua sumber itu, maka peranan mujtahid sangat menentukan untuk menggali dan menemukan

Jika Peserta Yudisium tidak memenuhi point 3 diatas, maka pada Pengumuman Final Yudisium (Tahap-2) tanggal 25 Februari 2022 secara otomatis TIDAK

a+ Append Mode – artinya membuka file untuk menambahkan(menulis) dan dibaca dimulai dari akhir dari isi file, jika terdapat isi. Jika file tidak ada buat

Berbeda halnya jika kemaslahatan itu tidak dijelaskan secara eksplisit dalam kedua sumber itu, maka peranan mujtahid sangat menentukan untuk menggali dan menemukan

Berbeda halnya jika kemaslahatan itu tidak dijelaskan secara eksplisit dalam kedua sumber itu, maka peranan mujtahid sangat menentukan untuk menggali dan menemukan

Dan jika kita juga tidak menulis nama aksinya, maka secara default itu berarti kita membaca aksi index.. ( akan disebut index

Jika landasan etika yang dimiliki Gayus kuat maka ia tidak akan terpengaruh, ketika etika tersebut tidak diperdulikan maka dampaknya secara otomatis etos kerja yang baik

Proses yang sudah berlangsung terdapat beberapa kekurangan yakni data reservasi kunjungan yang telah diberikan kepada bagian mahrom tidak dapat diperbaharui secara otomatis jika