Thursday, June 12, 2014

Program Inheritance & Encapsulation pada Java

LISTING PROGRAM

Ada 2 Listing program yang dibuat dan terdiri atas 3 class dan 2 class, yaitu :






LOGIKA
Dalam pembuatan program di atas, saya memiliki logika sebagai berikut:
1) Inherintance           
Class tabung adalah turunan dari class lingkaran, sehingga variabel-variabel yang ada di lingkaran dapat digunakan di class tabung tanpa harus dideklarasikan. Dalam hal ini, variabel-variabel yang diturunkan adalah “luas” karena untuk menghitung volume tabung, diperlukan nilai dari luas lingkaran yang ada di class lingkaran.

            public double getLuas() {
       luas = phi*jari*jari;tabung.luas = this.luas;
       return luas;
}
getLuas() adalah method yang digunakan untuk menampilkan nilai “luas” (return luas;) yang akan digunakan pada class main nanti (akan dibahas nanti). tabung.luas = this.luas; memberikan nilai variabel luas yang ada di class tabung bernilai sama dengan nilai luas yang ada di class lingkaran ini. Untuk itu, variabel luas harus bersifat “static”, sehingga deklarasinya menjadi “static double luas”.

lingkaran ling = new lingkaran();
tabung tab = new tabung();
Ada di class main, kedua syntax tersebut digunakan untuk membuat perwakilan dari class lain untuk dapat digunakan di class main. Dalam hal ini, class lingkaran menggunakan “ling”, dan class tabung menggunakan “tab”.

System.out.print("Masukkan jari-jari lingkaran : ");
       sementara = input.readLine();
       a = Double.parseDouble(sementara);
Memberi nilai pada variabel jari yang ada di class lingkaran. Sehingga digunakan “ling.setJari(a);“ yang akan memanggil method “setJari(double jari)” di class lingkaran. Method setJari adalah setter dari variabel jari, dimana setter digunakan untuk memberikan nilai pada variabel yang nilai tersebut berasal dari class lain. Hal serupa dilakukan pula dengan variabel tinggi yang ada di class tabung. Dengan menggunakan setter “setTinggi(double tinggi)”, variabel tinggi pada class tabung akan disesuaikan dengan nilai yang diinput pada class main.

System.out.println("Luas lingkaran tersebut adalah = "+df.format(ling.getLuas());
System.out.println("Keliling lingkaran tersebut adalaH "+df.format(ling.getKeliling()));
System.out.println("Volume tabung adalah = "+df.format((tab.getVolume())));
Merupakan perintah output untuk menampilkan hasilnya. Ada yang dinamakan “getter”, dimana method ini mengembalikan nilai perhitungan yang ada pada class tertentu. Misalkan “ling.getLuas()” akan memanggil method getLuas() pada class lingkaran.

public double getLuas() {
              luas = phi*jari*jari;tabung.luas = this.luas;
              return luas;
}
Di method getLuas(), variabel luas berubah sesuai dengan perhitungan, dan nilainya akan dikembalikan sesuai dengan nilai variabel tersebut. Hal serupa dilakukan pula dengan getKeliling() dan getVolume() pada class tabung.
df.format(); merupakan perintah untuk memformat bilangan desimal menjadi 2 angka desimal di belakang koma. Hal ini telah dideklarasikan dengaN
DecimalFormat df = new DecimalFormat(".##");
Dimana “.##” adalah pemformatnya. DecimalFormat harus diimport dengan
import java.text.DecimalFormat;
Seperti halnya kita mengimport BufferedReader dengan
import java.io.*;

2) Encapsulation
            Logikanya kurang lebih sama seperti program Inherntince. Dimana terdapat setter untuk menerima nilai variabel yang berasal dari class enkapsulasi untuk diproses di class kapsul. Dan ada getter untuk mengembalikan nilai yang telah diproses di class kapsul ke class enkapsulasi.
            Unsur enkapsulasinya ada di
private double luas(double p,double l){
return p*l;}
            Dimana method luas (double p,double l) adalah method bersifat “private” yang hanya bisa diakses oleh class itu sendiri (dalam hal ini adalah class kapsul). Method di atas tidak dapat dipanggil oleh class lain seperti class enkapsulasi karena sifatnya yang private. Sehingga ada perintah
public double getLuas(){
return luas(panjang,lebar);}
            Method getLuas() adalah getter yang digunakan untuk mengembalikan nilai yang ada di method Private luas. Sehingga method luas(double p, double  l) dapat diekseskusi tanpa dipanggil secara langsung melainkan menggunakan perantara (getter).


OUTPUT