tik.tok

Senin, 13 Agustus 2012

Rambutku Dulu Tak Begini

Jangan tanya kenapa.. soalny kenapa itu bkn bhasa baku.. coba tny mengapa, psti aq jwb.. hahaha.. *glek so nice*
kleeeee, klo bs aq bnting kasurku, aq bnting dh.. rmbut yg aq rawat, rmbut yg aq ikat, rmbut yg aq kriwel2in, rmbut yg aq bw kmna2, smuany tb2 gk ada menarik2nya krna mnjdi kelinci percobaan obat pelurus rmbut..
huf, udh dch, sgtu aja.. makasi :'(

Sabtu, 19 Mei 2012

PBO (KONSEP INTERFACE)


7. Konsep Interface

Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant).  Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface – from J.E.N.I
Untuk memahami lebih mudah, interface sekumpula dari method-method yang dibuat tapi belum ada operasi di dalam tubuh method tersebut, interface ini bisa diturunkan atau diwariskan kepada class yang ingin memakai method yang ada dalam masing-masing interface tersebut dengan keyword extends [interface yang didefinisikan]. Dan juga sebuah class mengimplementasi 1 interface yang sudah dibuat dengan keyword implements.
Ciri-ciri dari interface adalah sebagai berikut..
  • Method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.
  • Tidak bisa membuat instance atau objek baru dari sebuah interface.
  • Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.

public interface [InterfaceName]
{
//beberapa method tanpa isi
}


Seperti penggunaan interface pada salah satu class interface berikut.

public interface RemoteAllInOne {

 public void pindahChannel(int channel);

 public void perbesarVolume(int kpsts);

 public void perkecilVolume(int kpsts);

 public void perkecilZoom(int kpsts);

 public void perbesarZoom(int kpsts);
}


Setelah itu kita menggunakan class yang akan mengimplementasi setiap method yang ada pada class interface RemoteAllInOne.

public class BenQ implements RemoteAllInOne {

 String[] menuTV = {"ANTV", "INDOSIAR", "TRANS-TV", "TPI", "RCTI", "SCTV", "GLOBAL-TV"};

 public void pindahChannel(int channel) {
 System.out.println("LCD BENQ Pindah Channel ke - " + this.menuTV[channel]);
 }

 public void perbesarVolume(int kpsts) {
 System.out.println("LCD BENQ Perbesar Vol : " +kpsts);
 }

 public void perkecilVolume(int kpsts) {
 System.out.println("LCD BENQ Pekecil Vol : " + kpstss);
 }

 public void perkecilZoom(int kpsts) {
 System.out.println("LCD BENQ Pekecil Zoom : " + kpsts);
 }

 public void perbesarZoom(int kpsts) {
 System.out.println("LCD BENQ Pebesar Zoom : " + kpsts);
 }
}


Setelah itu kita membuat class yang berfungsi sebagai perantara pemanggil method sebelum kita masuk ke class main, atau pembuatan instance baru sebuah objek supaya dapat digunakan setiap interface yang dibuat tadi.

public class MyRemoteAllInOne {
 public void sendRequest(int aksi, RemoteAllInOne rmt, int tombol){
 switch(aksi){
 case 1:
 rmt.pindahChannel(tombol);
 break;
 case 2 :
 rmt.perkecilVolume(tombol);
 break;
 case 3 :
 rmt.perbesarVolume(tombol);
 break;
 case 4 :
 rmt.perkecilZoom(tombol);
 break;
 case 5 :
 rmt.perbesarZoom(tombol);
 break;
 }
 }
}


Dan berikut adalah class main yang dipakai waktu pengeksekusian program.

public class Tester {

 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 Ephson ep = new Ephson();
 BenQ bq = new BenQ();
 Mitshubishi mt = new Mitshubishi();
 MyRemoteAllInOne my = new MyRemoteAllInOne();
 my.sendRequest(1, mt, 4);
 my.sendRequest(1, ep, 5);
 my.sendRequest(1, bq, 6);
 my.sendRequest(2, mt, 4);
 }
}

PBO (ABSTRACT CLASS)


6.  Abstract Class

abstract class / kelas abstrak, sesuai namanya adalah kelas yang belum jelas spesifikasinya contohnya adalah gambar berikut
dapat dilihat jenis kelas diatas, kelas paling atas adalah kelas Bangun datar lalu turunan dari kelas bangun datar adalah kelas persegi, segitiga, persegi panjang. nah.. dapat diketahui kelas bangun datar adalah kelas Abstraknya, kenapa ? karena belum jelas.. hehe misalkan sebuah kelas memiliki method, maka dapat diperkirakan method dari bangun  datar adalah hitungLuas() atau hitungKeliling(). dapatkah anda menjelaskan dengan spesifik seperti apa perhitungan luas dari kelas BangunDatar ?? tentu anda akan bertanya , ya bangun datar apa dulu ??  nah method yang belum jelas seperti itu bisa disebut method abstrak. dan sebuah kelas jika ada 1 saja method yang abstrak, maka dia akan menjadi kelas abstrak.
lalu perhatikan kelas persegi, jika kelas persegi memiliki method hitungLuas() apakah anda bisa mengisi detai kode nya ? oh tentu saja bisa ini adalah contohnya
 hitungLuas(int sisi){
 int luas = 0;
  luas = sisi*sisi;
System.out.println(luas);
}
nah, anda sudah mengerti kan, apa itu kelas abstrak ? jika kelas BangunDatar adalah abstrack, maka kelas Persegi karena sudah jelas dapat disebut sebagai kelas kongkret. kelas abstrak digunakan untuk membuat sebuah kelas yang memiliki method yang belum jelas implementasinya. berikut ini aturan nya :
  • jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.
  • sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.
  • jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya.
  • jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.
sementara itu dulu aturan yang harus dipahami ketika anda membuat kelas abstrak dan menggunakan kelas abstrak, aturan – aturan lain akan anda temui ketika anda mulai membuatnya.
jika kelas BangunDatar kita buat kodenya kira – kira akan menjadi seperti ini
public abstract class abstrack {
  abstract int hitungLuas();
}
lalu kita akan membuat kelas turunannya yaitu Persegi
class Persegi extends abstrack{

  int sisi;
  public Persegi(int s){
   this.sisi = s;
  }

  public int hitungLuas() {
    //method ini harus diberi implementasi
    int luas = sisi*sisi;
    return luas;
  }

public static void main(String[] args){
 Persegi p = new Persegi(5);
int luas = p.hitungLuas();
System.out.println(luas);
}

}
yaa seperti itulah contohnya, silahkan anda buat untuk luas persegi panjang dan juga segitiga, termasuk kelilingnya

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();
 }
}