tik.tok

Sabtu, 19 Mei 2012

PBO (OBJECT & CLASS)



1. Object dan Class

Class adalah tipe yang berisi atribut (variabel) dan fungsi (fungsi pada class seringkali disebut method).

Misalnya kita mempunyai class Mahasiswa. Class ini memiliki atribut nama, alamat, tanggal lahir dan method menghitung umur.  Class ini dapat diinstansiasi atau dicreate menjadi objek, misalnya objek mahasiswa Budi, Ahmad, Elfan dan seterusnya. Dapat dianggap class  adalah pola atau “pencetak” objek.

Satu class umumnya disimpan dalam satu file. Nama file harus sama dengan nama class (termasuk huruf besar dan kecilnya!).  Satu project di Java umumnya terdiri atas beberapa class.

Di Java, akses terhadap method, menggunakan simbol titik. Misalnya budi.nama, budi.alamat, budi.getUmur() dan seterusnya.

Sekarang kita akan membuat class Mahasiswa.  Pilih File - New - Class (atau melalui klik kanan di project explorer)

Beri nama class Mahasiswa. Standard penamaan class di Java diawali dengan huruf besar, berbeda dengan variabel atau method yang diawali huruf kecil.


Ketik code berikut,  class ini memiliki tiga atribut: nim, nama, tglLahir dan satu method: getUmur. Semua atribut  ini diset public, artinya boleh diakses secara langsung. Misalnya budi.nim, budi.nama. 

Konvensi penamaan method mengikuti penamaan variabel, diawali huruf kecil.



Cobalah contoh berikut, perhatikan bagaimana class Mahasiswa didefinisikan, bagaimana objek dibuat dan cara mengaakses atribut dan method.

public class Mahasiswa {
    String nama; //atribut
   
    public void  salam()  {  //method
            System.out.println("halo, nama saya " + nama);
    }
   
    public static void main(String[] args) {
            //create objek dari class Mahasiswa
            Mahasiswa mhsObjek = new Mahasiswa(); 
            mhsObjek.nama = "Budi"; //  isi atribut
            mhsObjek.salam();       //  panggil atribut
    }
}

Terlihat  bahwa penggunaan Object mirip dengan penggunaan variabel.  Class sama dengan type dan object sama dengan variabel.

Saat menjalankan sebuah class, Java secara otomatis akan mencari method main(String args[])  untuk dijalankan pertama kali (coba lihat-lihat contoh code sebelumnya, selalu ada method  main).  Method main ini cocok untuk digunakan sebagai  alat untuk memeriksa apakah class yang dibuat telah sesuai dengan keinginan.

Perhatikan bahwa method getUmur menghasilkan type int.  Jika method tidak menghasilkan keluaran, maka gunakan keyword void. Contoh method yang returnnya void adalah method  main.

Selanjutnya kita akan membuat class MatakuliahKontrak. Class ini menyimpan matakuliah yang dikontrak mahasiswa beserta nilainya (kode matakuliah, tahun, semester dan nilai). Class ini memiliki method untuk menghitung mutu (4 untuk nilai A, 3 untuk nilai B dan seterusnya).

Pilih File - New -Class, lakukan hal yang sama seperti saat membuat file Mahasiswa.

Sehingga dalam project sekarang terdapat dua class:


public class MatakuliahKontrak {
   public String kodeMatakuliah;
   public int sem;
   public int tahun;
   public String nilai;
   public int sks;
  
   public double getMutu() {
       int mutu;
       if (nilai.equals("A")) {
           mutu = 4;
       } else if (nilai.equals("B")) {
           mutu = 3;
       } else if (nilai.equals("C")) {
           mutu = 2;
       } else  {
           mutu = 1;
       }   
       return mutu;
   }
   public static void main(String args[]) {
       //testing class
       MatakuliahKontrak mk = new MatakuliahKontrak();
       mk.kodeMatakuliah="IL111";
       mk.nilai="A";
       mk.sem=1;
       mk.tahun=2008;
       System.out.println(mk.kodeMatakuliah + "  mutunya "+ mk.getMutu());
   }  


Perhatikan bahwa method getMutu menghasilkan type double.

Dapat kita lihat hubungan antara Siswa dan MatakuliahKontrak. Satu siswa dapat memiliki lebih dari MatakuliahKontrak.

Sekarang kita perlu merubah class Mahasiswa untuk menyimpan matakuliah yang dikontrak mahasiswa tersebut. Pada class Mahasiswa ditambahkan variabel array untuk
menyimpan matakuliah yang dikontrak mahasiswa. Ditambahkan juga dua method. Pertama method untuk menambahkan matakuliah dan kedua method untuk mencetak matakuliah yang telah diambil siswa.

Bagian yang di-bold adalah tambahan.

public class Mahasiswa {
     public String nim;
     public String nama;
     private MatakuliahKontrak[] daftarMK = new MatakuliahKontrak[10];
     private int pos=0; //posisi terakhir di array  
    
public void tambahMatakuliah (MatakuliahKontrak mk) {
         //tambah matakuliah ke array
               daftarMK[pos]=mk;
         pos++;
     }
    
     public void printMatakuliah(){
//mencetak isi array daftar matakuliah
System.out.println("KODE-MK;SEM;TAHUN;NILAI;MUTU");                 
     
MatakuliahKontrak mk;
      for (int i=0;i  
mk = daftarMK[i]; //bisa juga langsung, misalnya daftarMK[i].sem
System.out.println( mk.kodeMatakuliah+";"+mk.sem+";"+mk.tahun+";"+mk.nilai+";"+mk.getMutu());   
      }
     } 

    public static void main(String[] args) {
         //testing class ini
         Mahasiswa budi  = new Mahasiswa();  //create objek budi
         budi.nama = "Budi Martami"; //akses atribut
         budi.nim = "1111";
        
         MatakuliahKontrak mk1 = new MatakuliahKontrak();
         mk1.kodeMatakuliah="IK111";
         mk1.nilai="A";
         mk1.sem=1;
               mk1.sks=3;
         mk1.tahun=2008;
         budi.tambahMatakuliah(mk1);
        
         MatakuliahKontrak mk2 = new MatakuliahKontrak();
         mk2.kodeMatakuliah="MA222";
         mk2.nilai="C";
         mk2.sem=1;
               mk2.sks=3
         mk2.tahun=2008;       
         budi.tambahMatakuliah(mk2);        
        
   budi.printMatakuliah();        
     }
}

Dapat dilihat bahwa class Mahasiswa menggunakan class MatakuliahKontrak. Tidak diperlukan import karena kedua class berada di satu package. 

Konstruktur

Constructor adalah method khusus yang dipanggil saat object di-create.

Contoh:
Mahasiswa mhs = new Mahasiswa();

Pada code diatas, maka akan dipanggil constructor Mahasiswa()  yang merupakan constructor default.

Karakteristik constructor:
  • Nama method constructor harus sama dengan nama Class.
  • Satu class dapat memiliki lebih dari satu constructor (dengan parameter yang berbeda-beda).
  • Constructor tidak memiliki return
  • Constructor dipanggil dengan new.

Apa kegunaan constructor? Constructor dapat digunakan untuk menginisialisasi  object.

Sebagai contoh code berikut menambahkan constructor sehingga nim, nama langsung diisi pada saat object dicreate. 

public class Mahasiswa {
     public String nim;
     public String nama;
     private MatakuliahKontrak[] daftarMK = new MatakuliahKontrak[10];
     private int pos=0;
    
     public Mahasiswa(String vNim, String vNama) {
         nim = vNim;
         nama = vNama;
     }

     // … yang lain sama
}



Perhatikan penggunaan variabel vNim, Vnama. Penamaan ini untuk membedakan nama variabel dengan atribut method. Alternatif lain adalah dengan menggunakan keyword this. Contoh:


public class Mahasiswa {
     public String nim;
     public String nama;
     private MatakuliahKontrak[] daftarMK = new MatakuliahKontrak[10];
     private int pos=0;
    
     public Mahasiswa(String nim, String nama) {
         this.nim = nim;
         this.nama = nama;
     }
     // … yang lain sama
}


Sedangkan contoh penggunaannya:

Mahasiswa budi  = new Mahasiswa("1111","Budi Martami");


Static Method

Static method adalah method dapat dipanggil langsung melalui class-nya dan tidak memerlukan object. Contoh method Math.pow tidak memerlukan create object bertipe Math terlebih dulu. 

Contoh berikut akan menghasilkan error, karena getUmur bukan static method yang dapat dijalankan pada class Mahasiswa langsung.

Mahasiswa.getUmur();//<--error:getUmur tdk dapat dijalankan pada class!

Contoh yang dapat dilakukan:

Mahasiswa budi = new Mahasiswa();
budi.getUmur();  // ß bisa, getUmur dijalankan pada objek.


Contoh static method yang selama ini kita gunakan adalah method main(String[] args). Perhatikan deklarasinya:

public static void main(String[] args)

Mengapa method main static? karena pada saat Java menjalankan class tersebut,  belum ada object yang dicreate.

Static method tidak diperbolehkan mengakses atribut atau method non static pada class tersebut (mengapa?). Perhatikan walaupun method main berada di dalam class mahasiswa, tapi di dalam method ini kita tidak dapat mengakses atribut. 

Class Mahasiswa {
string nama;
public static void main(String[] args) {
nama = "Budi"; //error!  atribut tdk dpt dipanggil oleh  // method static
}
}

Tidak ada komentar:

Posting Komentar