Sabtu, 02 Juni 2012

Inner Class, Interface, Abstract Class

TUGAS 5
Inner Class, Interface, Abstract Class


1.        Inner Class
Inner Class adalah kelas yang disisipkan  di dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner Class bersifat tersarang terhadap kelas – kelas utamanya, seperti halnya blok penyeleksian  (if, for) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.

Analogi Inner Class
Inner Class dapat dianalogikan sebagi hubungan antara manusia dan paru – paru. Setiap manusia pasti bernafas dengan menggunakan paru – paru. Dalam hal ini berarti kinerja dari paru – paru turut mendukung/menetukan kinerja dari manusia. Dalam bahasa pemrograman berorientasi objek manusia dapat dikatakan sebagai outer class dan paru – paru sebagai inner  class-nya.

2.        Interface
Interface adalah suatu class yang berisi method – method tanpa imlementasi, namun tanpa modifier abstract, apabila suatu interface memiliki atribut, maka atributnya akan berlaku sebagai konstanta (static final).

Analogi Interface
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas. Dalam kehidupan nyata kita mengetahui bahwa ada yang bekerja sebagai penyayi, pengacara, pelawak, dsb, tentunya manusia –manusia tersebut selain harus memiliki method standar seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat seorang objek Yuna penyayi kita harus membuat kelas yang merupakan turunan kelas manusia yang mengimplementasikan interface penyayi.

3.        Abstract Class
Abstract class adalah suatu class yang dinyatakan abstract, umumnya memiliki satu atau abstract method, abstract method adalah suatu method yang belum memiliki implementasi dan menggunakan modifier abstract. Abstract class biasanya dijadikan parent atau super class dari kelas – kelas yang dapat membuat objek, abstract class tidak dapat diinstanisasi.

Analogi Inheritance dan Abstract Class :
Inheritence dapat dianalogikan seperti penggolongan kelas, ordo, phylum dalam biologi. Makhluk hidup dapat diturunkan atau diextend atau diperluas (di-inherit) menjadi burung, reptile, ikan dan lain – lain, jenjang penurunan tersebut disebut inheritance.
Kita mengetahui bahwa suatu kelas dapat diinstanisasi menjadi suatu objek, misal kelas manusia dapat diinstanisasi menjadi Yuna, Rinoa, Ashe, dan lain – lain, namun kita tidak mungkin dapat menginstanisasi kelas makhluk hidup, maupun kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang desebut sebagai abstract class, apabila class makhluk hidup mempunyai method bernafas, maka kita tidak dapat menentukan (meng-implementasikan) cara makhluk hidup tersebut bernafas, dengan paru – paru, insang atau stomata, dengan demikian kita dapat menyatakan bahwa di dalam kelas makhluk hidup, bernafas merupakan method yang abstract.



PEMBAHASAN


4.1.  Contoh Pemrograman Java
Contoh pertama :
//Class Mahasiswa.java
public abstract class Mahasiswa {
    public String nim;
    public String nama;
    public String jurusan;
   
    public abstract void biodata();
    public abstract void matakuliah();
}

//Class Pembayaran.java
public interface Pembayaran {
    public double spp = 5000000;
    public void biayakuliah(int jml_matakuliah);
}

//Class MahasiswaElektro.java
public class MahasiswaElektro extends Mahasiswa implements Pembayaran {
    @Override
    public void biodata() {
        jurusan = "Elektro";
        System.out.println("NIM     : " + nim);
        System.out.println("Nama    : " + nama);
        System.out.println("Jurusan : " + jurusan);
    }
    @Override
    public void matakuliah () {
        System.out.println("---Daftar Mata Kuliah---");
        System.out.println("1. Rangkaian Elektronika");
        System.out.println("2. Robotika");
    }
    public void biayakuliah(int jml_matakuliah) {
        double persks = 25000;
System.out.println("Biaya Kuliah:" + (spp + (persks * jml_matakuliah)));
    }
}


//Class MahasiswaTI.java
public class MahasiswaTI extends Mahasiswa implements Pembayaran {
    @Override
    public void biodata() {
        jurusan = "Teknik Informatika";
        System.out.println("NIM     : " + nim);
        System.out.println("Nama    : " + nama);
        System.out.println("Jurusan : " + jurusan);
    }
    @Override
    public void matakuliah () {
        System.out.println("---Daftar Mata Kuliah---");
        System.out.println("1. OOP2");
        System.out.println("2. Pemrograman Web");
    }
    public void biayakuliah(int jml_matakuliah) {
        double persks = 50000;
System.out.println("Biaya Kuliah :" + (spp + (persks * jml_matakuliah)));
    }
    public static void main (String args[]) {
        MahasiswaTI mhs1 = new MahasiswaTI();
        mhs1.nim = "1109100501";
        mhs1.nama = "Budi Sudjatmiko";
        mhs1.biodata();
        mhs1.matakuliah();
        mhs1.biayakuliah(24);
       
        MahasiswaElektro mhs2 = new MahasiswaElektro();
        mhs2.nim = "1109400901";
        mhs2.nama = "Herman Suherman";
        mhs2.biodata();
        mhs2.matakuliah();
        mhs2.biayakuliah(24);
    }
}

Contoh kedua :
//Class Kendaraan.java
public abstract class Kendaraan {
    protected String jenis;
    protected int jmlhroda;
    protected int ThnProduksi;
public Kendaraan (String jenis, int jmlhroda, int ThnProduksi) {
this.jenis = jenis; //persamaan nilai atribut dan nilai parameter
this.jmlhroda = jmlhroda; //persamaan nilai atribut dan nilai parameter
this.ThnProduksi= ThnProduksi; //persamaan nilai atribut dan nilai  parameter
    }
    abstract void gerak () ;
public void ket () { //ket adalah nama method dari class Kendaraan tanpa parameter
System.out.println (" Jenis Kendaraan        :  " + jenis);
System.out.println (" Jumlah roda Kendaraan  :  " + jmlhroda);
System.out.println (" Tahun produksi         :  " + ThnProduksi);
    }
}

//Class Mobil.java
public class Mobil extends Kendaraan {
    Mobil (String nama) {
    super (nama, 4, 2004);
    }

    public void gerak () {
        System.out.println (jenis+ " bergerak kearah depan");
    }
class produksi {
    public void ThnProduksi () {
        System.out.println (ThnProduksi+"2004");
    }
}
public static void main (String [] args) {
    Mobil m = new Mobil ("Jazz");
    m.ket(); //memanggil method ket untuk objek m
    m.gerak(); //memanggil method gerak untuk objek m
}
}

4.2.  Contoh Pemrograman C#

using System;

namespace Abstract_Class
{
public abstract class TaxCalculator {
protected double itemPrice;
protected double tax;

public abstract double CalculateTax();

public double Tax {
get { return tax; }
}
public double ItemPrice {
get { return itemPrice; }
}
} 
  
class SalesTaxCalculator : TaxCalculator {
public SalesTaxCalculator(double itemPrice) {
this.itemPrice = itemPrice;
}
public override double CalculateTax() {
tax = 0.3 * itemPrice;
return itemPrice + tax;
}
}
  
class WarSurchargeCalculator : TaxCalculator {
public WarSurchargeCalculator(double itemPrice) {
this.itemPrice = itemPrice;
}
public override double CalculateTax() {
tax = 0.5 * itemPrice;
return itemPrice + tax;
}
}

class Test {
public static void Main() {
SalesTaxCalculator salesTaxCalc = new SalesTaxCalculator(225);
double newPrice = salesTaxCalc.CalculateTax();
WarSurchargeCalculator WarSurCalc = new WarSurchargeCalculator(225);
double Price = WarSurCalc.CalculateTax();
Console.WriteLine("The item price has changed because of Sales tax from {0} $ to {1} $",
salesTaxCalc.ItemPrice, newPrice);
Console.WriteLine("Tax applied = {0} $", salesTaxCalc.Tax);
Console.WriteLine("The item price has changed because of War tax from {0} $ to {1} $",
WarSurCalc.ItemPrice, Price);
Console.WriteLine("Tax applied = {0} $", WarSurCalc.Tax);
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
}
}

4.3.  Contoh Pemrograman C++
#include <iostream.h>
using namespace std;
class area {
double dim1, dim2;
public:
void setarea(double d1, double d2) {
dim1 = d1;
dim2 = d2;
}
void getdim(double &d1, double &d2) {
d1 = dim1;
d2 = dim2;
}
virtual double getarea() = 0;
};

class rectangle : public area {
public:
double getarea() {
double d1, d2;
getdim(d1, d2);
return d1 * d2;
}
};

class triangle : public area {
public:
double getarea() {
double d1, d2;
getdim(d1, d2);
return 0.5 * d1 * d2;
}
};

int main() {
area *p;
rectangle r;
triangle t;
r.setarea(3.3, 4.5);
t.setarea(4.0, 5.0);
p = &r;
cout << "Rectangle has area : " << p->getarea() << '\n';
p = &t;
cout << "Triangle has area : " << p->getarea() << '\n';
return 0;
}

1 komentar:

  1. Coin Casino Review 2021
    Play the best casino games in one place! No matter what type of casino you are playing, Coin Casino is 코인카지노실시간바카라사이트 an enjoyable, rewarding online casino with lots of Bonus: Welcome Bonus up to €500 and 300 free spins✔️ Mobile: Android,iPhone,iPad,Other Bonuses: Cashout Welcome Bonus up to €500

    BalasHapus