Package, Abstract Class, Interface, Java Collection Framework IT209 – Pemrograman Berorientasi Obyek Package, Abstract Class, Interface, Java Collection Framework Ramos Somya
Package Packages merupakan cara untuk mengorganisir file ke dalam direktori yang berbeda berdasarkan fungsionalitas dan kegunaannya. Packaging membantu kita untuk menghindari terjadinya collision ketika kita menggunakan nama kelas yang sama dengan yang sudah ada. Packaging juga membantu programmer dalam mencari dan menggunakan nama kelas dan mengontrol akses.
...
Pewarisan Dalam pewarisan semua properti (variabel dan metode) yang dimiliki oleh super kelas otomatis akan dimiliki pula oleh sub kelas kecuali untuk properti yang akses modifiernya private atau default (Jika sub kelas tidak berada dalam paket yang sama). Membuat suatu kelas dengan memanfaatkan kelas yang sudah ada. Mewarisi semua metoda dan variabelnya.
Kelas A disebut Super Class(Parent Class). Kelas B disebut Sub Class(Child Class).
Cara Pewarisan: class KelasTurunan extends KelasDasar{ tubuh kelas }
Contoh public class Manusia { public String nama; public Manusia(String n) { this.nama = n; } public String tampilkanNama() { return nama; public void makan() { System.out.println("Nyam... nyam... nyam..."); public void kerja() { System.out.println("Kerja...kerjaaa...");
… public class Programmer extends Manusia { public Programmer(String n) { super(n); } public void kerja() { System.out.println("Tak…Tak…Klik.."); public void bersantai() { System.out.println("Game over, You lose...");
… class Tentara extends Manusia { public String pangkat; public Tentara(String n, String p) { super(n); this.pangkat = p; } public String tampilkanPangkat() { return pangkat; public void kerja() { System.out.println("Dor... Dor... Dor..");
… public class Test { public static void main(String[] args) { Programmer andi = new Programmer("Andi"); System.out.println("Nama= " + andi.tampilkanNama()); andi.makan(); andi.kerja(); andi.bersantai(); Tentara badu = new Tentara("Badu", "Kopral"); System.out.println("Nama= " + badu.tampilkanNama()); System.out.println("Pangkat= " + badu.tampilkanPangkat()); badu.makan(); badu.kerja(); }
Abstract Class
…
… Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract. Sebuah class abstract adalah class yang tidak dapat di-instantiate. Method ini dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci abstract. public abstract void someMethod();
Contoh Abstract Class public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); /** * abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk();
… Ketika class lain meng-extends class abstract LivingThing, dibutuhkan untuk override method abstract walk(). Contohnya: public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); }
… Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error: Human.java:1: Human is not abstract and does not override abstract method walk() in LivingThing public class Human extends LivingThing ^ 1 error
Latihan Abstract Class Buatlah sebuah abstract class dengan nama Bangun2D dengan atribut panjang dan lebar. Pada class Bangun2D tambahkan method getNama yang menginformasikan “Nama Masih Abstract” dan tambahkan method abstract getLuas(); Buat 2 buah class: Persegi dan Segitiga yang merupakan turunan dari class Bangun2D. Pada kedua class tersebut tambahkan method getNama dan getLuas yang berisi operasi perhitungan luas. Buat class Demo yang di dalamnya terdapat method Main dan lakukan instansiasi dari class yang sudah dibuat sehingga muncul outputnya.
Interface Untuk membuat class, dapat kita gunakan konsep pewarisan. Masalah: bagaimana jika kita ingin mewariskan sifat dari beberapa super class ke base class? Misalkan kita akan membuat kelas Superman yang dia bisa membuat program layaknya Programmer, dia juga ahli menggunakan senjata layaknya Tentara, bahkan dia bisa terbang seperti Elang (keturunan binatang)? Caranya adalah dengan pewarisan ganda. Tetapi dalam Java tidak dikenal pewarisan ganda, sehingga digunakan interface.
Pewarisan ganda class superman extends programmer, tentara, burung { }
Interface Interface merupakan kumpulan definisi method dan nilai konstanta. Merupakan kerangka yang hanya berisi konstanta dan prototype method. Seluruh definisi method dan konstanta nantinya dapat diimplementasi di class yang mendefinisikan interface tersebut menggunakan kata kunci implements
…
contoh interface programmer { void memrogram(); } interface tentara { void menembak(); interface burung { void terbang(); void buangKotoran();
… class superman implements programmer, tentara , burung { public void memrogram(){}; public void menembak(){}; public void terbang(){}; public void buangKotoran(){}; }
… public class bejo { public static void main(String arg[]) superman bj= new superman(); bj.memrogram(); System.out.println("Implementasi memrogram ...tak..tik"); } bj.menembak(); System.out.println("Implementasi menembak ...dor..dor"); bj.terbang(); System.out.println("Implementasi terbang......Zap....");
Contoh interface interface Lari{ public void berlari(String vLari); } interface Lompat{ public void melompat(String vLompat); interface Sekolah{ public void pergiSekolah(String vSekolah);
… public class Manusia implements Lari, Lompat, Sekolah { String kecepatanLari; String tinggiLompat; String pendidikan; public void berlari(String vLari) { kecepatanLari = vLari; } public void melompat(String vLompat) { tinggiLompat = vLompat; public void pergiSekolah(String vSekolah) { pendidikan = vSekolah;
… public void tampil() { System.out.println("Manusia berlari = " + kecepatanLari); System.out.println("Tinggi lompatan = " + tinggiLompat); System.out.println("Pendidikan = " + pendidikan); } public static void main(String[] args) { Manusia man = new Manusia(); man.berlari("100 Km/jam"); man.melompat("10 meter"); man.pergiSekolah("SMA N 1 Salatiga"); man.tampil();