MODUL VI,PBO 1

STATIC
 

TUJUAN:
Membuat dan menjelaskan tentang Konstruktor
TEORI SINGKAT:
Class variable atau variable yang dimiliki oleh kelas sepenuhnya dapat kita deklarasikan. Nilainya akan sama disemua objek pada kelas tersebut. Andai ada variable yang ingin dideklarasikan tetap dalam kelas tersebut dapat dideklrasaikan dengan static variable ini.
Penulisannya harus dengan deklarasi static sebagaimana berikut:
           private static int studentCount;
Sedangkan pemanggilannya dengan mengambil nama kelas:
           [nama kelas].[nama method static](parameter);
PELAKSANAAN PRAKTIKUM:
Praktik 1. Membuat Konstruktor dan Pemanggilannya
<!–[if gte vml 1]>

Nasabah

public int noId;

public  static int jmlNasabah;

private String nama;

private String alamat;

private String identitas;

private String noIdentitas;

double saldo;

 

Nasbah();

Nasabah(noId);

Nasabah(int noId, String nm);

Nasabah(int noId,String nm, double saldo);

Public void lihatAccount()

Void setoran(double jml)

Void pengambilan(double jml)

public static double hitung(double saldo, double setor)

public static void main(String args)

 

Konstruktor

<![endif]–>

 


Praktek 1. Lengkapi kelas nasabah dengan atribut dan method static seperti tampak di bawah
public class Nasabah{
       public int noId;
       public static int jmlNasabah=0;
//(Nilai tersebut akan menjadi nilai bersama kelas)
       private String nama;
       private String alamat;
       private String identitas;
       private String noIdentitas;
       double saldo;
Variabel static jmlNasabah adalah salah satu static variable yang akan menjadi nilai bersama dalam satu kelas. Sehingga dimanapun variable tersebut dipanggil maka nilai dari variable tersebut selalu sama. Dapat dilihat pada hasil, bahwa dimanapun variable tersebut dipanggil, baik pada konstruktor 1, 2, maupun 3 terdifinisi bernilai sama. Walaupun dipanggil melalui konstruktor berbeda dengan pemanggilan yang sama menunjukkan bahwa variable tersebut bernilai sama. Tetapi pada praktek tersebut berubah senantiasa bertambah satu karena pada pemanggilan ada operator +1.
//KONSTRUKTOR 1
Nasabah(int noId){
       this.noId=noId;
       jmlNasabah=noId;
       }
//KONSTRUKTOR 2
Nasabah(int noId, String nama){
       this.noId=noId;
       this.nama=nama;
       jmlNasabah=noId;
       }
//KONSTRUKTOR 3
Nasabah(int noId, String nama, double saldo){
       this.noId=noId;
       this.nama=nama;
       this.saldo=saldo;
       jmlNasabah=noId;
       }
public void lihatAccount(){
       System.out.println(“No.Id         :  “+noId);
       System.out.println(“Nama          :  “+nama);
       System.out.println(“Alamat        :  “+alamat);
       System.out.println(“SALDO         :  “+saldo);
       }
void setoran(double jml){
       saldo = saldo + jml;
       }
void pengambilan(double jml){
       saldo = saldo – jml;
       }
public static  double hitung(double saldo,double setor){
       return saldo – setor;
       }
//Menampilkan jumlah nasabah
public static void main(String []args){
       System.out.println(“Jumlah Nasabah = “+Nasabah.jmlNasabah);
//Pemanggilan Object dengan pemanggilan KONSTRUKTOR 1
       Nasabah nasabah1=new Nasabah(Nasabah.jmlNasabah+1);
       System.out.println(“Data Nasabah 1”);
       nasabah1.lihatAccount();
//Pemanggilan Object dengan pemanggilan KONSTRUKTOR 2
       Nasabah nasabah2=new Nasabah(Nasabah.jmlNasabah+1,”Pulut”);
       System.out.println(“Data Nasabah 2”);
       nasabah2.lihatAccount();
//Pemanggilan Object dengan pemanggilan KONSTRUKTOR 3
       Nasabah nasabah3=new Nasabah(Nasabah.jmlNasabah+1, “Agung”, 200000);
       System.out.println(“Data Nasabah 3”);
       nasabah3.lihatAccount();
       System.out.println(“==================================================”);
//Melihat jumlah nasabah sekarang
       System.out.println(“Jumlah Nasabah = “+Nasabah.jmlNasabah);
//Memanggil method static hitung
       System.out.println(“20000 – 1000 = “+Nasabah.hitung(20000,1000));
       }
}
jmlNasabah adalah salah satu static variable yang akan menjadi nilai bersama dalam satu kelas. Sehingga dimanapun variable tersebut dipanggil maka nilai dari variable tetap. Dapat dilihat bahwa jmlNasabah bernilai sama dengan noId, nilai awal jmlNasabah adalah 0, pada saat pemanggilan pertama dengan cara:
       Nasabah nasabah1=new Nasabah(Nasabah.jmlNasabah+1);
Objek nasabah1 diberikan parameter bernilai 1, sehingga otomatis noId bernilai 1 dan secara otomatis jmlNasabah juga bernilai 1. Demikian juga selanjutnya karena nilai jmlNasbah senantiasa bertambah satu. Dan ini membuktikan bahwa dimanapun jmNasabah dipanggil nilainya tetap sama.
public static  double hitung(double saldo,double setor){
       return saldo – setor;
Selain itu dalam program ini mencoba method static mempunyai nilai return value dan juga dapat dipanggil langsung tanpa menciptakan objek. Dengan memasukkan dua parameter saldo dan setor. Dapat kita bedakan pada saat kita menggunakan method setoran dan method penarikan yang harus menginstan objek dari kelas Nasabah untuk melakukan pemanggilannya.  Dengan method static ini akan lebih mudah melakukan dan dapat dilakukan dimanapun juga, dan tentunya method static ini tidak dapat dipanggil dengan objek hasil instan kelas Nasabah.
Hasil running:
Praktek 2.Memanggil Atribute dan Method Static dari kelas Math
Memanfaatkan method kelas Math sehingga dapat untuk mengolah /mengidentifikasi bilangan.
               
class MathDemo{
public static void main(String args[]){
System.out.println(“Nilai Absolut dari -5 => “+Math.abs(-5));
System.out.println(“Nilai Absolut dari  5 => “+Math.abs(5));
System.out.println(” “);
double bil=Math.random()*10;
System.out.println(“Random number(max is 10) => “+bil);
//Menghasilkan nilai dari 0,0 sampai 1,0 dikalikan 10
System.out.println(“Random number(max is 10) bilangan bulat => “+Math.ceil(bil));
System.out.println(” “);
System.out.println(“nilai tertinggi ant bil 3.5 dan 1.2 => “+Math.max(3.5,1.2));
System.out.println(“nilai terendah ant bil  3.5 dan 1.2 => “+Math.min(3.5,1.2));
System.out.println(” “);
System.out.println(“pembulatan ke atas dari 3.5  => “+Math.ceil(3.5));
System.out.println(“pembulatan ke bawah dari 3.5 => “+Math.floor(3.5));
System.out.println(” “);
System.out.println(“e raised to 1=> “+Math.exp(1));
System.out.println(“log 10       => “+Math.log(10));
System.out.println(“10 pangkat  3=> “+Math.pow(10,3));
System.out.println(” “);
System.out.println(“rounded off value of pi => “+Math.round(Math.PI));
//Membulatkan sesuai dengan nilai pecahan diatas 0,5 akan dibulatkan ke atas dan dibawah 0,5 dibulatkan ke bawah
System.out.println(“Akar dari bilangan 5    => “+Math.sqrt(5));
       }
}
Pembahasan:

System.out.println(“Nilai Absolut dari -5 => “+Math.abs(-5));
System.out.println(“Nilai Absolut dari  5 => “+Math.abs(5));
Math.abs digunakan untuk mencari nilai positif (absolute) sehingga nilainya adalah 5.
double bil=Math.random()*10;
System.out.println(“Random number(max is 10) => “+bil);
System.out.println(“Random number(max is 10) bilangan bulat => “+Math.ceil(bil));
Math.random akan menghasilkan nilai acak berupa bilangan double antara 0,0 sampai dengan 9,999999999. Tetapi dengan mengkonversi Math.random*10 menjadi variable bil dan memadukannya dengan perintah Math.ceil yaitu digunakan untuk membulatkan ke atas suatu bilangan. Sehingga nilai random tidak lagi pecahan tetapi menjadi bilangan bulat.
Selanjutya di bawah ini fungsi Math berturut-turut mempunyai fungsi sebagai:
Math.max           :               Pencari nilai maximum/terbesar dari parameter
Math.min            :               Pencari nilai minimum/terkecil dari parameter
Math.ceil             :               Pembulatan ke atas
Math.floor          :               Pembulatan ke bawah
Math.exp            :               Nilai exponensial dari bilangan
Math.log              :               Nilai logarismis dari bilangan
Math.pow           :               Nilai pangkat dari bilangan
Math.round       :               Pembulatan mendekati ke atas bila pecahan >= 0,5 dan ke
                                                bawah bila nilai pecahan <0,5
Math.pow           :               Akar dari bilangan;
System.out.println(“nilai tertinggi ant bil 3.5 dan 1.2 => “+Math.max(3.5,1.2));
System.out.println(“nilai terendah ant bil  3.5 dan 1.2 => “+Math.min(3.5,1.2));
System.out.println(” “);
System.out.println(“pembulatan ke atas dari 3.5  => “+Math.ceil(3.5));
System.out.println(“pembulatan ke bawah dari 3.5 => “+Math.floor(3.5));
System.out.println(” “);
System.out.println(“e raised to 1=> “+Math.exp(1));
System.out.println(“log 10       => “+Math.log(10));
System.out.println(“10 pangkat  3=> “+Math.pow(10,3));
System.out.println(” “);
System.out.println(“rounded off value of pi => “+Math.round(Math.PI));
//Membulatkan sesuai dengan nilai pecahan diatas 0,5 akan dibulatkan ke atas dan dibawah 0,5 dibulatkan ke bawah
System.out.println(“Akar dari bilangan 5    => “+Math.sqrt(5));
Hasil Running:
LATIHAN:
public class TestNasabah{
       public static void main(String[] args){
              Nasabah.lihatAccount();
              //Jelaskan dilaporan yang menyebabkan error!!!!
              //Method bukan static tidak boleh mereferensi Method Static
              System.out.println(Nasabah.hitung(10000,100));
              //Jelaskan dilaporan kenapa tidak error!!!!
              System.out.println(Nasabah.noId);
              //Jelaskan dilaporan kenapa error!!!!
              //Variabel bukan static tidak boleh mereferensi variabel Static
              System.out.println(Nasabah.jmlNasabah);
              //Jelaskan dilaporan kenapa tidak error!!!!
       }
}
Jawab:
Error pada compilasi java menyatakan:
E:\Semester 2\Object Oriented Programming 1\Modul06-STATIC\TestNasabah.java:4: non-static method lihatAccount() cannot be referenced from a static context
              Nasabah.lihatAccount();
                     ^
E:\Semester 2\Object Oriented Programming 1\Modul06-STATIC\TestNasabah.java:11: non-static variable noId cannot be referenced from a static context
              System.out.println(Nasabah.noId);
                                        ^
2 errors
Artinya :
  • Error terjadi pada baris ke 4 dengan komentar bahwa method non static tidak boleh mereferensi atau memanggil method static
  • Error pada baris ke 11 menyatakan bahwa variabel non static tidak diperbolehkan mengambil nilai variabel static.
TUGAS:
  1. Membuat kelas yang menggunakan method static milik Kelas Integer
  2. Lengkapi kelas Lingkaran dengan atribut static yang pi
  3. Buatlah kelas baru untuk melakukan pengujian pemaggilan atribute pi.
Hasil Tugas:
public class Lingkar1{
public static int jejari=0;
public static double pi=3.14;
Lingkar1(){
     jejari=12;
     }
Lingkar1(int jejari){
     this.jejari=jejari;
     }
public double luas(){
     return (pi * this.jejari * this.jejari);
     }
public double keliling(){
     return (0.5 * this.jejari * this.jejari);
     }
}
Kelas untuk memanggil:
class Panggil{
public static void main(String []args){
     Lingkar1 bunder1=new Lingkar1();
     double jembar=bunder1.luas();
     double muter=bunder1.keliling();
     System.out.println(“================================”);
     System.out.println(“Hasil Perhitungan Lingkaran 1 :”);
     System.out.println(“================================”);
     System.out.println(“Luas Lingkaran  : “+jembar);
     System.out.println(“Luas Keliling   : “+muter);
     System.out.println(“Dengan nilai pi : “+bunder1.pi);
     Lingkar1 bunder2=new Lingkar1(20);
     System.out.println(“================================”);
     System.out.println(“Hasil Perhitungan Lingkaran 2 :”);
     System.out.println(“================================”);
     System.out.println(“Luas Lingkaran  : “+bunder2.luas());
     System.out.println(“Luas Keliling   : “+bunder2.keliling());
     System.out.println(“Dengan nilai pi : “+bunder2.pi);
     }
}
Hasil Program:
          
KESIMPULAN:
  1. Variabel static  adalah variable yang dideklarasikan sebagai variable yang dapat dibaca oleh siapapun dalam suatu kelas. Nilainya sama walaupun dipakai oleh method yang berbeda.
  2. Selain itu juga ada method static dimana method ini dapat dipanggil langsung tanpa harus menciptakan objek, bahkan apabila dipanggil dengan objek malah tidak dapat berfungsi/error.

Beberapa kelas yang berada pada packet Math atau kelas Math sebagai bentuk contohnya. Pada kelas static Math berbagai method dapat dipanggil langsung.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s