bab vii

Upload: triadi-maulana

Post on 13-Jan-2016

215 views

Category:

Documents


0 download

DESCRIPTION

abstarct class dan interfaec

TRANSCRIPT

  • Abstract Class dan Interface

  • Abstract Class

    Abstract class (kelas abstrak) adalah kelas yang tidak dapat diinstansiasimenjadi objek.

    biasanya kelas abstrak digunakan pada hirarki kelas paling tinggi

    induk dari semua kelas yang ada pada hirarki kelas yang dibuat

    Kegunaan : untuk menggambarkan sistem secara keseluruhan.

  • Hirarki Kelas

  • Deklarasi Abstract Class

    Metode kongkrit adalah metode yang memiliki badan (body) metode, ditandai dengan tanda kurung kurawal buka-tutup ({}) setelahmencantumkan nama metode

    Metode kosong merupakan metode yang tidak memiliki tanda kurungkurawal buka-tutup ({}).

    Metode kosong abstrakmetode kosong yang dideklarasikan didalam kelas abstrak danterdapat kata kunci abstract pada metode tersebut

    Metode kosong interfacemetode kosong yang dideklarasikan didalam interface

  • Deklarasi Abstract Class (lanj.)

    abstract ();

    abstract class {**}

    * artinya bisa satu atau lebih deklarasi

    public abstract class BangunDatar{

    public abstract double luas();

    public abstract void keliling(double x, double y);

    }

  • Aturan Penggunaan Abstract Class

    1. Boleh memiliki kelas sub (keturunan).

    2. Umumnya kelas abstrak menempati posisi hirarki tertinggi.

    3. Kelas abstrak haruslah mendefinisikan metode-metode tanpa body .

    4. Kelas abstrak boleh mendeklarasikan metode yang memiliki kongkrit.

    5. Ketika kelas abstrak di extends, maka kelas sub wajib meng-overridesemua metode abstract dari kelas abstrak tersebut.

    6. Kelas abstrak tidak boleh diinstansiasi.

    7. Jika kelas turunan kelas abstrak tidak meng-override salah satu atausemua metode abstract, maka kelas sub tersebut akan berubah menjadikelas abstrak, sehingga tidak dapat diinstansiasi.

  • Penggunaan Abstract Class

    abstract class BangunDatar{//deklarasi metode kongkritpublic void cetak(){System.out.println("\nIni adalah Kelas Abstrak");

    }

    //deklarasi metode abstrakpublic abstract double luas();public abstract double keliling();

    }

  • Pewarisan Dari Abstract Class

    abstract class BangunDatar{//deklarasi metode kongkritpublic void cetak(){System.out.println("\nIni adalah Kelas Abstrak");

    }

    //deklarasi metode abstrakpublic abstract double luas();public abstract double keliling();

    }

    class Persegi extends BangunDatar{public double sisi;

    public Persegi(double sisi){this.sisi = sisi;

    }

    //Me-override metode abstrakpublic double luas(){return sisi*sisi;

    }

    public double keliling(){return sisi*4;

    }}

    class PersegiPanjang extends BangunDatar{public double panjang;public double lebar;

    public PersegiPanjang(double panjang, double lebar){this.panjang = panjang;this.lebar = lebar;

    }

    //Me-override metode abstrakpublic double luas(){return panjang*lebar;

    }

    public double keliling(){return (2*panjang)+(2*lebar);

    }}

    class Program{public static void main(String[] args){Persegi psg = new Persegi(3);PersegiPanjang psgpjg = new PersegiPanjang(5, 7);

    psg.cetak();System.out.println("Rumus Persegi\n=====");System.out.println("Luas Persegi : "+ psg.luas());System.out.println("Keliling Persegi : "+ psg.keliling());

    psgpjg.cetak();System.out.println("Rumus Persegi Panjang\n=====");System.out.println("Luas Persegi Panjang : "+psgpjg.luas());System.out.println("Keliling Persegi Panjang : "+psgpjg.keliling());

    }}

    TAMPILAN OUTPUT

    Ini adalah Kelas AbstrakRumus Persegi=====Luas Persegi : 9.0Keliling Persegi : 12.0

    Ini adalah Kelas AbstrakRumus Persegi Panjang=====Luas Persegi Panjang : 35.0Keliling Persegi Panjang : 24.0

  • Interface

    Interface adalah blok yang berisikan kumpulan metode kosong (tanpabadan).

    ketika sebuah kelas mengimplementasikan interface, maka kelastersebut tidak ada hubungan hirarki dengan interface yang diimplementasi

    Kegunaan interface adalah mengikat aturan kepada kelas-kelas, tanpaterhubung dengan konsep pewarisan.

  • Deklarasi Interface

    interface {**} * artinya bisa satu atau lebih deklarasi

    Metode kosong interface merupakan metode kosong yang dideklarasikan didalam blok interfaceMetode kosong interface adalah metode yang tidak memiliki badan (body) metode, ditandai dengantanda kurung buka-tutup (()) setelah mencantumkan nama metode.

    ()=nilai; ();

    Format pendeklarasian atribut dan metode abstrak :

    * artinya bisa satu atau lebih deklarasi

    public interface IntfCoba{int atribut1 = 10;public double atribut2 = 20.1;void metode1(int a, double b);public void metode2(String x, String y);}

  • Aturan tentang pendeklarasian interface

    1. Modifier yang dapat digunakan hanya public atau tidak sama sekali(default)

    2. Semua atribut yang dideklarasikan secara otomatis dianggapsebagai static final.

    3. Semua atribut yang dideklarasikan wajib diberi nilai awal.

    4. Semua metode yang dideklarasikan merupakan metode kosonginterface. Perbedaan dengan metode kosong abstrak adalah kitatidak menggunakan kata kunci abstract dalam membuat metodekosong tersebut.

    5. Semua interface tidak dapat dibuatkan objeknya.

  • Aturan Penggunaan Interface

    1. Interface setara dengan kelas, sehingga aturan penamaannya samadengan kelas.

    2. Ketika mengimplementasikan interface, maka kelas tersebut tidakmenjadi anak dari interface tersebut.

    3. Bisa digunakan bersamaan dengan me-extends kelas.

    4. Boleh mengimplementasikan lebih dari satu interface.

    5. Interface berisikan metode-metode tanpa body (kosong), dan tidak bolehada metode isi/kongkrit.

    6. Ketika kelas mengimplementasikan interface, maka kelas tersebut wajibme-override semua metode kosong dari interface tersebut, jika tidakmaka program akan error.

  • Penggunaan Interface

    public interface Hubungan{

    public char perbandingan(double a, double b);

    public boolean polindrom(String kata);

    }

    class implements * {

    *

    *

    *

    }

    * artinya bisa satu atau lebih deklarasi

    Penggunaan interface sama sekali tidak berguna jikatidak ada kelas yang menggunakannya. Interface haruslah diimplementasi oleh kelas biasa, iniberfungsi untuk me-override perbandingan() danpolindrom().

    Gunakan kata kunci implements untuk meimplementasi interface.

    Satu kelas dapat mengimplementasi lebih dari satu interface. Gunakan tanda koma (,) sebagai pemisah antar interface, jika

    kelas tersebut mengimplementasi lebih dari satu interface.

  • Penggunaan Interface (lanj.)

    class PenggunaanHubungan implements Hubungan{//Override metode kosongpublic char perbandingan(double a, double b){return (a>b)?'1':(b>a)?'2':'0';

    }

    public boolean polindrom(String kata){int a;int poli = 0;String kataUp = kata.toUpperCase();for(a=0; a

  • Implementasi Interface Lebih Dari Satu

    interface Interface1{public String cetakStr1(String x);public String cetakStr2(String x);

    }

    interface Interface2{public String cetakInt1(int x);public String cetakInt2(int x);

    }

    class CetakInfo implements Interface1, Interface2{//override semua metode dari Interface1 dan Interface2public String cetakStr1(String x){return "Cetak String 1 : "+ x;

    }public String cetakStr2(String x){return "Cetak String 2 : "+ x;

    }public String cetakInt1(int x){return "Cetak Integer 1 : "+ x;

    }public String cetakInt2(int x){return "Cetak Integer 2 : "+ x;

    }}

    class Program{public static void main(String[] args){CetakInfo cetak = new CetakInfo();System.out.println(cetak.cetakStr1("Halo Bandung"));System.out.println(cetak.cetakStr2("Halo Jakarta"));System.out.println(cetak.cetakInt1(12));System.out.println(cetak.cetakInt2(7));

    }}

    TAMPILAN OUTPUT

    Cetak String 1 : Halo BandungCetak String 2 : Halo JakartaCetak Integer 1 : 12Cetak Integer 2 : 7

    Catatan :

    Berdasarkan contoh program, terlihat bahwa semakin banyak

    interface yang diimplementasikan, maka semakin banyak pula

    metode yang harus di-override.

  • Extends Kelas Abstrakdan Implementasi Interface

    abstract class KelasAbstrak{public abstract void cetakKata(String kata);}

    interface Interface1{public String cetakStr1(String x);public String cetakStr2(String x);}

    interface Interface2{public String cetakInt1(int x);public String cetakInt2(int x);}

    TAMPILAN OUTPUT

    Kata : Memanggil cetakKata()Cetak String 1 : Halo BandungCetak String 2 : Halo JakartaCetak Integer 1 : 12Cetak Integer 2 : 7

    class CetakInfo extends KelasAbstrak implements Interface1, Interface2{//override metode dari KelasAbstrakpublic void cetakKata(String kata){System.out.println("Kata : "+ kata);}

    //override semua metode dari Interface1 dan Interface2public String cetakStr1(String x){return "Cetak String 1 : "+ x;}public String cetakStr2(String x){return "Cetak String 2 : "+ x;}public String cetakInt1(int x){return "Cetak Integer 1 : "+ x;}public String cetakInt2(int x){return "Cetak Integer 2 : "+ x;}}

    class Program{

    public static void main(String[] args){

    CetakInfo cetak = new CetakInfo();

    cetak.cetakKata("Memanggil cetakKata()");

    System.out.println(cetak.cetakStr1("Halo Bandung"));

    System.out.println(cetak.cetakStr2("Halo Jakarta"));

    System.out.println(cetak.cetakInt1(12));

    System.out.println(cetak.cetakInt2(7));

    }

    }

  • Pewarisan Antar Interface

    Aturan dari penggunaan konsep pewarisan antar interface :

    1. Gunakan kata kunci extends sebagai penghubung antara super interface dan sub interface.

    2. Interface hanya boleh memiliki interface sebagai induknya, sehingga kelas tidak boleh menjadi induk dari interface begitu pula sebaliknya.

  • Pewarisan Antar Interface (lanj.)

    interface A{public void metode1();public void metode2();}

    interface B extends A{ //Interface B adalah anak dari Apublic void metode3();public void metode4();}

    class PakaiB implements B{ //Lihat Interface yang digunakan//override metode 1,2,3 dan 4public void metode1(){System.out.println("Override metode 1");}public void metode2(){System.out.println("Override metode 2");}public void metode3(){System.out.println("Override metode 3");}public void metode4(){System.out.println("Override metode 4");}}

    class PakaiA implements A{//override metode 1 dan 2public void metode1(){System.out.println("Override metode 1");}public void metode2(){System.out.println("Override metode 2");}}

    class Program{public static void main(String[] args){PakaiA a = new PakaiA();System.out.println("Menggunakan kelas PakaiA");a.metode1();a.metode2();System.out.println("------------------------");

    PakaiB b = new PakaiB();System.out.println("Menggunakan kelas PakaiB");b.metode1();b.metode2();b.metode3();b.metode4();System.out.println("------------------------");}}

    TAMPILAN OUTPUT

    Menggunakan kelas PakaiAOverride metode 1Override metode 2------------------------Menggunakan kelas PakaiBOverride metode 1Override metode 2Override metode 3Override metode 4------------------------

  • Perbedaan Abstract Class dan Interface

    Abstract Class Interface Masih boleh memiliki metode isi/kongkrit Hanya boleh berisi metode kosong Gunakan kata kunci extends untuk

    penggunaannya Gunakan kata kunci implements untuk

    penggunaannya Ketika di-extends, maka semua metode

    kosong harus di-override, jika tidak maka kelastersebut akan berubah menjadi Abstract Class

    Ketika di-implements, maka semua metodekosong harus di-override, jika tidak makaprogram akan error

    Satu kelas hanya bisa me-extends satu KelasBiasa atau Kelas Abstrak

    Satu kelas bisa meng-implements lebih darisatu interface

    Tidak dianjurkan menggunakan pewarisankelas abstrak, karena seharusnya kelas abstrakmerupakan kelas yang menempati posisihirarki tertinggi

    Boleh menggunakan pewarisan antar interfacedengan menggunakan kata kunci extendssebagai penghubung antara super interfacedan sub interface