IKG2I4 / Software Project I Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi
LECTURE NOTE WEEK 3
1
02/02/2016 8:59:08
WEEK 3 Inheritance – Pewarisan class (atribut dan method) – Kata kunci extends – Superclass dan subclass – Access protected – Overriding – Kata kunci super – Final class dan final method
Overloading 2
02/02/2016 8:59:08
IKG2I4 – Software Project I
INHERITANCE Dengan menggunakan konsep inheritance, kita dapat membuat class turunan dari class lainnya. Class turunan mewarisi semua atribut dan method dari class induk. – Misalkan kita membuat class Balok sebagai turunan dari class Segiempat. Di dalam class Segiempat ada atribut panjang & lebar serta method hitungLuas() dan hitungKeliling(). Maka di dalam class Balok akan otomatis ada atribut dan method tersebut, tanpa perlu secara eksplisit kita menuliskan atribut/method itu. Artinya, Balok menerima seluruh “warisan” dari Segiempat meliputi attribute dan method. 3
02/02/2016 8:59:08
IKG2I4 – Software Project I
INHERITANCE Segiempat – Balok – Prisma
4
02/02/2016 8:59:08
IKG2I4 – Software Project I
INHERITANCE Class induk disebut superclass. Class turunan disebut subclass. Contoh lain: MahasiswaD3, MahasiswaS1, MahasiswaS2, MahasiswaS3 semuanya adalah turunan dari class Mahasiswa. Inheritance dapat dibuat bertingkat-tingkat, misalkan class Kucing adalah turunan dari class Mammalia yang diturunkan dari class Vertebrata yang diturunkan dari class Animal, yang merupakan turunan dari class MakhlukHidup. 5
02/02/2016 8:59:08
IKG2I4 – Software Project I
CLASS INDUK (SUPER CLASS) class Segiempat{ int panjang; int lebar; …. int hitungLuas(){…} int hitungKeliling() {…} } 6
02/02/2016 8:59:08
IKG2I4 – Software Project I
CLASS ANAK (SUBCLASS) class Balok extends Segiempat{ int tinggi;
int hitungVolume(){ return (hitungLuas() * tinggi); } } 7
02/02/2016 8:59:08
IKG2I4 – Software Project I
CLASS ANAK (SUBCLASS) class Prisma extends Segiempat{ int tinggi;
int hitungVolume(){ return (1/3 * hitungLuas() * tinggi); } } 8
02/02/2016 8:59:08
IKG2I4 – Software Project I
WHY WE NEED INHERITANCE? Untuk reusability: – Misalkan kita sudah punya kelas Titik2D (x,y), untuk membuat kelas Titik3D cukup extends dari Titik2D, lalu menambahkan atribut z.
Mengurangi redundancy coding. Memudahkan maintenance sourcecode – Misal ada perubahan format NIM di class Mahasiswa (dari integer diubah menjadi string), maka kita hanya perlu repot melakukan perubahan di class Mahasiswa saja. Adapun di class MahasiswaD3, MahasiswaS1, MahasiswaS2 tidak perlu dilakukan perubahan apa-apa. 9
02/02/2016 8:59:08
IKG2I4 – Software Project I
SINGLE VS MULTIPLE INHERITANCE Di Java hanya ada single-inheritance. Jadi suatu class hanya boleh punya 1 induk saja. – Bila Anda ingin menerapkan multiple-inheritance, gunakanlah Interface-Implement (akan dijelaskan di Minggu ke-6). Pada bahasa lain seperti C++ ada multiple inheritance. Mengapa Java tidak menyediakan fitur multiple-inheritance? Jawab: karena bikin pusing programmer. Java dibuat dengan tujuan agar mudah dipelajari dan simple bagi programmer.
10
02/02/2016 8:59:08
IKG2I4 – Software Project I
ACCESS PROTECTED Pada slide sebelumnya telah dibahas access public vs access private. Access protected sifatnya pertengahan (di antara public dan private), bila diterapkan pada atribut/ method maka akses protected ini berarti: – Dapat diakses oleh semua class turunannya – Tidak dapat diakses oleh yang bukan class turunannya
11
02/02/2016 8:59:08
IKG2I4 – Software Project I
OVERRIDING Overriding adalah pendefinisian ulang sebuah method di class induk, misalnya karena kita membutuhkan rumus/algoritma berbeda yang spesifik untuk class anak. Misalkan pada class Balok turunan Segiempat. – Secara otomatis (by default), Balok mewarisi method hitungLuas() dari Segiempat, dengan rumus panjang kali lebar. Kita ingin meng-override method tsb dengan rumus baru misalnya rumus luas permukaan. class Balok extends Segiempat{ Public int hitungLuas(){ return ((2*pjg*lb)+(2*pjg*tgg)+(2*lbr*tgg)); }} 12
02/02/2016 8:59:08
IKG2I4 – Software Project I
OVERRIDING Perhatikan bedanya ketika kita memanggil method hitungLuas untuk sebuah object Balok: public static void main(String args[]){ Balok ba = new Balok(7,3,5); ba.hitungLuas(); // menghitung luas permukaan }
13
02/02/2016 8:59:08
IKG2I4 – Software Project I
ATURAN OVERRIDING Ketika kita membuat method override di class anak, aturannya adalah sbb: – Nama method harus sama dengan method di class induk: contoh hitungLuas() – Daftar parameter harus sama: hitungLuas(/*kosong*/) – Return type harus sama: void hitungLuas()
14
02/02/2016 8:59:08
IKG2I4 – Software Project I
SUPER Syntax super dapat digunakan untuk mengacu ke kelas induk. Misalnya method printAtribut pada Balok ingin memanggil method printAtribut di Segiempat. Class Balok extends Segiempat { public void printAtribut(){ super.printAtribut(); //menampilkan panjang & lebar System.out.println(tinggi); } } 15
02/02/2016 8:59:08
IKG2I4 – Software Project I
THIS Syntax this digunakan untuk mengacu pada kelas dirinya sendiri, misalnya untuk membedakan atribut dengan variabel lokal. Contohnya: class Segiempat{ private int panjang; public void setPanjang(int panjang){ this.panjang = panjang; } }
16
02/02/2016 8:59:08
IKG2I4 – Software Project I
FINAL CLASS Final class artinya suatu class tidak dapat diturunkan lagi (tidak boleh punya anak). – Pada contoh sebelumnya, class Kucing adalah turunan class Mamalia. Bila class Mamalia dijadikan final, maka class Kucing tidak boleh mengextends ke class Mamalia.
Contoh untuk class Segiempat: final class Segiempat{ } Maka class Segiempat tidak bisa diextends oleh class Balok dan Prisma. 17
02/02/2016 8:59:08
IKG2I4 – Software Project I
FINAL ATTRIBUTE Final atribut digunakan untuk mendefinisikan konstanta. Contoh: class Lingkaran { double radius; final double pi=3.14; } 18
02/02/2016 8:59:08
IKG2I4 – Software Project I
FINAL METHOD Method yang dibuat final artinya tidak dapat diturunkan/dioverride. Contoh: bila method hitungLuas() pada Segiempat dibuat final maka class turunannya yaitu class Balok dan class Prisma tidak bisa meng-override method hitungLuas().
19
02/02/2016 8:59:08
IKG2I4 – Software Project I
OVERLOADING Overloading yaitu mendefinisikan beberapa method yang namanya sama, tapi memiliki parameter yang berbeda. Misalnya pada class Titik kita bisa membuat tiga method yang sama: – Public void translasi(int dx) – Public void translasi(int dx,int dy) – Public void translasi(int dx,int dy,int dz)
Overloading tidak berhubungan dengan inheritance.
20
02/02/2016 8:59:08
IKG2I4 – Software Project I
OVERLOADING
21
02/02/2016 8:59:08
IKG2I4 – Software Project I
OVERLOADING Aturan overloading: – Nama method harus sama: void translasi(/*bebas*/) – Daftar parameter/argumen method harus berbeda: Berbeda jumlah parameter Atau kalau jumlahnya sama, harus beda tipe datanya
– Return type boleh sama, juga boleh berbeda
Contoh lain, yaitu overloading constructor: – public Segiempat() – public Segiempat(int p, int l)
22
02/02/2016 8:59:08
REVIEW Pelajari kembali keyword berikut ini: – Inheritance – extends – overriding – super, this – final class, final atribut, final method – overloading
23
02/02/2016 8:59:08
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU)
24
02/02/2016 8:59:08
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU)
25
02/02/2016 8:59:08
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU)
26
02/02/2016 8:59:08
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU)
27
02/02/2016 8:59:08
IKG2I4 – Software Project I
THANK YOU