Selasa, 14 Agustus 2012

Demo Kelas Abstrak


// Mendefinisikan kelas abstract
abstract class Bentuk {
  // method abstrak, tidak memiliki kode implementasi
  abstract public double luas();   
}

class PersegiPanjang extends Bentuk {
  private double panjang;
  private double lebar;
   
  PersegiPanjang(int p, int l) {
    panjang = p;
    lebar = l;
  }
   
  public double luas() {
    System.out.println("Dalam objek persegi panjang:");
    return (panjang * lebar);
  }   
}

class BujurSangkar extends Bentuk {
  private double sisi;
   
  BujurSangkar(int s) {
    sisi = s;
  }
   
  public double luas() {
    System.out.println("Dalam objek bujursangkar:");
    return (sisi * sisi);
  }   
}

class Segitiga extends Bentuk {
  private double alas;
  private double tinggi;
   
  Segitiga(int a, int t) {
    alas = a;
    tinggi = t;
  }
   
  public double luas() {
    System.out.println("Dalam objek segitiga:");
    return ((alas * tinggi)/2);
  }   
}

class Lingkaran extends Bentuk {
  private double jarijari;
   
  private final double PI = 3.1416;
   
  Lingkaran(int r) {
    jarijari = r;
  }
   
  public double luas() {
    System.out.println("Dalam objek lingkaran:");
    return (PI * jarijari * jarijari);
  }   
}

class DemoKelasAbstrak2 {
  public static void main(String[] args) {   
   
    Bentuk obj;
   
    // Baris kode di bawah ini SALAH,
    // karena kelas abstrak tidak dapat diinstansiasi
   
    //obj = new Bentuk();  // SALAH
   
    PersegiPanjang pp = new PersegiPanjang(5, 3);
    BujurSangkar bs = new BujurSangkar(4);
    Segitiga st = new Segitiga(4, 3);
    Lingkaran lk = new Lingkaran(2);
   
    // obj mengacu pada objek PersegiPanjang
    obj = pp;
    // akan memanggil method yang terdapat pada PersegiPanjang
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek BujurSangkar
    obj = bs;
    // akan memanggil method yang terdapat pada BujurSangkar
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek Segitiga
    obj = st;
    // akan memanggil method yang terdapat pada Segitiga
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek Lingkaran
    obj = lk;
    // akan memanggil method yang terdapat pada Lingkaran
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
   
  }       
}

Tidak ada komentar:

Posting Komentar