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
}
}

PBO (POLYMORPHISM)


5. Pengertian Polymorphism

Polymorphism adalah suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh program java nya :Simpan
public class CoolMahasiswa extends Mahasiswa{
public void printNama(){
System.out.println(“Hallo, saya Mahasiswa yang baik”);
Super.printNama();
}
}
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
CooltMahasiswa mhs = new CoolMahasiswa();
mhs.setNim(“09530518”);
mhs.setNama(“Nadia Kharisma Ulfah”);
mhs.printNim();
mhs.printNama();
}
}

PBO (INHERITANCE)


 4. Pengertian Inheritance

Inheritance (penurunan sifat / pewarisan), ini merupakan ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama. Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk obyek turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut dengan hirarki obyek.Atau Inheritance yaitu pewarisan sifat-sifat suatu object kepada object turunannya.
Contoh program javanya :
Public class SmartMahasiswa extends Mahasiswa{
}
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
SmartMahasiswa mhs = new SmartMahasiswa();
mhs.setNim(“09530518”);
mhs.setNama(“Nadia Kharisma Ulfah”);
mhs.printNim();
mhs.printNama();
}
}

PBO (ENCAPTULATION)


3.  Pengertian Encaptulation
Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.Enkapsulasi akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar

PBO (ABSTRACTION)


2.    Pengertian Abstraction

Class Abstrak tidak berbeda dengan class – class lainnya yaitu memiliki class members (method dan variabel). Sebuah class adalah abstrak jika salah satu methodnya dideklarasikan abstrak. Method abstrak adalah method yang tidak memiliki implementasi.
Contoh deklarasi method abstrak:
abstract public void cetak();
Beberapa hal yang perlu diperhatikan adalah sebagai berikut:
  1. Class abstrak tidak dapat dibuatkan instan atau objeknya menggunakan keyword new.
  2. Sebuah class dapat dideklarasikan sebagai class abstrak walaupun tidak memiliki method abstrak.
  3. Variabel dengan tipe class abstrak tetap bisa diciptakan, tetapi harus refer ke subclass dari class abtrak tersebut yang tentunya tidak abstrak.
Perhatikan contoh class abstrak di bawah ini.

abstrak           public            class  Mobil {
public void    injakPedalGas();
public void    injakRem(){
System.out.println(“Mobil   berhenti!”);
}
}
public class  Kijang            extends         Mobil{
public void    injakPedalGas(){
  System.out.println("Mobil Melaju           dengan         kecepatan    80       Km/jam...");
}
}
public class  BMW extends         Mobil {
public void    injakPedalGas(){
System.out.println("Mobil Melaju dengan kecepatan 100 Km/jam...");
}}

Objek class abtrak tidak dapat diciptakan menggunakan keyword new secara langsung. Apabila kita terpaksa ingin menciptakan object class abtrak tanpa membuat subclass kongkritnya, maka kita harus mengimplementasikan method – method abstraknya secara langsung saat deklarasi. Perhatikan contoh di bawah ini.

public class  TestMobil      {
 public            static  void    main(String[ ]args){
Mobil  mobil =         new   Mobil(){
public void    injakPedalGas(){
System.out.println("Mobil   berjalan...");
   }
  };
 
  Kijang           kijang            =         new   Kijang();
  Escudo        escudo          =         new   Escudo();
  BMW            bmw   =         new   BMW();
 
  mobil.injakPedalGas();
 
  mobil            =         kijang;
  mobil.injakPedalGas();
 
  mobil            =         escudo;
  mobil.injakPedalGas();
 
  mobil            =         bmw;
  mobil.injakPedalGas();
 }
}

Kamis, 01 Desember 2011

RIP Wayan Selat My Grandfather :')

Lahir, hidup, dan mati emang d tntuin ma Tuhan yg d ats.. n aq gk nyangka kpergian kakek bgtu cepat.. sediiiiih bgt rasany.. tp ada rasa utk gk ngungkapinny #aneh.. tp dr kprcayaan Q, air mata akn mnghambat jlnny dy mncapai surga..  mungkin krna itu, aq cuman mnagis -mungkin- dikit..
Firasat mungkin udh d kasi, tp krna gk ada kekuatan mngartiknny, jdi bru sdar stlh kakek mninggl.. 
Awal kjdian dr hr minggu, 6 Nopember 2011, pagi" jam 10 thu kakekku yg mrasa sesak d ajk berobt ma tnteku d gianyar (tinggl d gianyar soalny), nah mlemny bapakku msk rumah skit.. sblumny bpk udh skit slama 2 minggu, tp dy memaksakn diri utk ttp krja.. pdhl tenaga n nafsu mkan udh brkurg bgt.. :( bpk msk rs slama 6 hari, brarti hr Jumatny dy kluar.. nah, hr rabu dpnny, tepat hari raya Pagerwesi tgl 23 Nopember 2011, kakek akhirny d opname @klinik Mas.. aku n ibu smpet jnguk hr sbtu.. keadaan fisik wayah emg berbeda bgt.. semuany bngkak n d  infus darah.. smpek aq jnguk, itu udh kntong drah k 5, n d targetin kntong drah k 6 udh bole plng.. tp 6 pun blum cukup, prlu 2 kntong lg utk kakek kmbli plng.. kakek smpet aq pijetin n aku aja ngomong, tp krna kakek budek, prtanyaan n jwban jdi gk nymbung.. -__-" kbtuln jg pas itu aq abz minum obt, jdi bawaanny ngantuk trus.. alhasil d rs, aq mlah tidur.. :(
Nah, kakek d ijinin pulng hr seninny pas rahinan kajeng kliwon.. pdhl mauny jnguk hr itu, tp krna sesuatu n lain hal jdiny gk jdi ksnaa.. :'(
Selasa, 30 Nopember 2011 pukul 03.00, kakek berpulang k surga.. bner" nyakitin banget.. notabene, nenek n kakek tinggl drmhku hmpir staun.. kbtuln nenek jg skt diabetes, jdiny d rawat drmhku.. khilngn bgt.. bner" khilngan..


"Wayah, lindungin adek, ibu, bli tu, n bpk ya yah.. smbuhin jg nini n bpk yg lg gk enk bdan.. adk ngewakilin bpk, bwt minta maaf ma wayah ttg apa yg d lakuin bpk k wayah slama wayah tinggl d rmh sni.. maafin slhny kita semua klo kita da slah ma wayah yaa.. makasie wayah.. slamat jalan wayah.. :') :') :')"

Senin, 28 November 2011

i'm come back

what's up guys?? what?? are u miss me?? miss me so much?? oh god, sorry never texting again at blog.. i miss u too.. :* :* 
ok, i want to upload my new photos.. yah just want to show you about me deeply.. :p 
let's check it this!!!