Rabu, 17 Oktober 2012

Laporan Praktikum JAVA Pertemuan 4


PERTEMUAN 4



A.    ABSTRACT CLASS

Abstract Class Dalam Java Abstract class dalam java digunakan untuk mendeklarasikan karakteristik umum dari subclass. Abstract class tidak bisa diinstansiasi sama halnya dengan kelas interface. abstract class hanya bisa digunakan sebagai super class, tapi juga bisa diturunkan dari class abstract lainnya. Untuk mendeklarasikan sebuah abstract class digunakan keyword abstract, [abstract] class [class_name] Sebuah abstract class pada dasarnya tidak hauh beda dengan class lainnya, yakni juga berisi method yang menggambarkan carakteristik dari kelas abstract tersebut, bedanya yakni sebuah abstract class bisa berisi method tanpa diimplementasikan artinya sebuah method tanpa body, methid seperti ini disebut method abstract. untuk pendeklarasiannya digunakan keyword abstract: [abstract] modifier class [class_name]

berikut contoh program yang menggunakan class abstract abstract class Shape { public String color;
//constractor default, constraktor yang tidak memiliki argumen dan isi
public Shape() { }

 //sama halnya dengan kelas biasa abstract class juga bisa berisi method
//seperti yang ada pada kelas biasa public void setColor(String c) { color = c; } public String getColor() { return color; }

 //sebuah abstract method yang tidak memiliki body
 //method ini akan diinisialisasi nantinya pada subclass yang mewarisi kelass abstract Shape ini
 //semua abstract method yang ada pada class abstract harus diimplementasikan
//semua oleh subclass abstract public double area(); }
 //keyword extends adalah keyword yang digunakan oleh subclass

 //ketika melakukan pewarisan terhada super class public class Point extends Shape { static int x, y; public Point() { x = 0; y = 0; } public double area() { return 0; } public double perimeter() { return 0; } public static void print()
{ System.out.println("point: " + x + "," + y); } public static void main(String args[])
{ Point p = new Point(); p.print(); } }

output point: 0, 0


B. INTERFACE
Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant).  Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface – 
Untuk memahami lebih mudah, interface sekumpula dari method-method yang dibuat tapi belum ada operasi di dalam tubuh method tersebut, interface ini bisa diturunkan atau diwariskan kepada class yang ingin memakai method yang ada dalam masing-masing interface tersebut dengan keyword extends [interface yang didefinisikan]. Dan juga sebuah class mengimplementasi 1 interface yang sudah dibuat dengan keyword implements.
Ciri-ciri dari interface adalah sebagai berikut..
  • Method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.
  • Tidak bisa membuat instance atau objek baru dari sebuah interface.
  • Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.

C.   INNER CLASS
  • Inner class adalah suatu class yang berada di dalam class lainnya. [1]
  • Di buku [2], disebutkan ada 4 jenis inner class, yaitu :
            1. “Regular” Inner class
2. Method-local inner class
3. Anonymous inner class
4. Static nested classes

1. “Regular” Inner class
  • Kata “Regular” di atas memiliki maksud bahwa inner class yang dibahas di sini adalah inner class yang bukan static / method-local / anonymous. [2]
  • Inner class didefinisikan (ditulis) di dalam kurung kurawal dari outer class. [2]
  • Bila ada kode java sebagai berikut : [2]
Program 01

class MyOuter {
      class MyInner {
      }
}

Dan kemudian dicompile dengan perintah :
%java MyOuter.java
Maka akan tercipta 2 buah file .class, yaitu : MyOuter.class dan MyOuter$MyInner.class.
  • Instance inner class memiliki akses ke semua member dari outer class (termasuk member outer class yang ber access modifier private). [2]
Contoh : [1]
Program 02

class A {
    private int x = 101;
    class B {
        void lakukanSesuatu() {
            System.out.print("x = " + x);
        }
    }
}

public class BelajarInnerClass02 {
    public static void main(String[] args) {
        A a = new A();
        A.B b = a.new B();
        b.lakukanSesuatu();
    }
}

  • Sebuah inner class tidak dapat memiliki member static. [2]
Contoh : [1]
Program 03

class A {
    class B {
        static int a = 10; //error!!!
    }
}

  • Untuk membuat instance dari inner class, kita harus memiliki instance dari outer class terlebih dahulu. Tidak ada  pengecualisan untuk aturan ini. [2]
  • Untuk membuat instance dari inner class, terdapat 2 cara, yaitu :
1.      Dari dalam outer class
2.      Dari luar outer class
·         Contoh membuat instance inner class dari dalam outer class : [1]
Program 04

class A {
    void buatInstanceKelasB() {
        B b = new B();
    }
    class B {
    }
}

Dari contoh di atas, untuk dapat menjalankan method buatInstanceKelasB, harus terdapat instance dari kelas A terlebih dahulu. Dengan kata lain, untuk membuat instance inner class, harus terdapat instance dari outer class terlebih dahulu.

Maksud dari membuat instance inner class dari dalam outer  class tidak termasuk membuat instance dari dalam method static. Sebab method static tidak dapat menunjuk sesuatu yang tidak static. Untuk membuat instance inner class dari dalam method static, maka dipergunakan cara seperti ketika membuat instance inner class dari luar outer class.

  • Contoh membuat instance inner class dari luar outer class  : [1]
Program 05

class A {
    class B {
        void sesuatuDiKelasB() {
            System.out.println("Hello, ini di method kelas B");
        }
    }
}

public class Contoh {
    public static void main(String[] args) {
        A a = new A();
        A.B b = a.new B();
        b.sesuatuDiKelasB();
    }
}


Program 05 di atas dapat disingkat menjadi : [1]
Program 06

class A {f
    class B {
        void sesuatuDiKelasB() {
            System.out.println("Hello, ini di method kelas B");
        }
    }
}

public class BelajarInnerClass04 {
    public static void main(String[] args) {
        A.B b = new A().new B();
        b.sesuatuDiKelasB();
    }
}

Ketika kita ingin membuat instance dari method static dari outer class, maka cara di ataslah yang digunakan. Hal ini karena method static tidak memiliki reference this.
  • Aturan inner class dalam hal mereferensi dirinya sendiri atau instance dari outer class adalah sebagai berikut : [2]
1.      Untuk merujuk pada dirinya sendiri (instance dari inner class) dari dalam inner class, dapat digunakan referensi this atau NamaOuterClass.NamaInnerClass.this.
2.      Untuk merujuk pada instance dari outer classnya dari dalam inner class, dapat digunakan referensi NamaOuterClass.this.
Contoh : [1]
Program 07

class A {
    int i = 10;
    class B {
        int i = 11;
        class C {
            int i = 12;
            void lakukanSesuatu() {
                System.out.println("A.this.i     = " + A.this.i);
                System.out.println("A.B.this.i   = " + A.B.this.i);
                System.out.println("A.B.C.this.i = " + A.B.C.this.i);
                System.out.println("this.i       = " + this.i);
            }
        }
    }
}
public class BelajarInnerClass05 {
    public static void main(String[] args) {
        A.B.C c = new A().new B().new C();
        c.lakukanSesuatu();
    }
}
  • Modifier-modifier berikut dapat diberikan pada inner class : [2]
1.  final
2.  abstract
3.  public
4.  protected
5.  private
6.      static (tapi dengan modifier ini, maka akan menjadi static nested class, bukan inner class).
7.  strictfp


Tidak ada komentar:

Posting Komentar