Materi PBO pada Java

1. Buat Project dari Netbeans atau Eclipse (jigloo) dan beri nama “BelajarPBO_noAbs”.
2. Buat package “PBO_noAbsen”.
3. Buat Form dari jFrame dan desain seperti form tampak dibawah ini.








BUATLAH BEBERAPA CLASS, ABSTRACT DAN INTERFACE SEPERTI DIBAWAH INI:
1. Class Manusia
package PBO; //sesuaikan package anda
public class Manusia extends MakhlukHidup {
      String nama,stmMakan,stmKerja,stmTugas,stmTidur;
      //konstruktor
      Manusia(String n){
            this.nama = n;
            }
      //function mengembalikan nilai nama
      String tampilkanNama(){
            return nama;
            }
      //procedure makan
      String  makan(){
            return stmMakan="hem...enyak..enyak..enyak...!!!";
            }
      //procedure kerja
      String kerja(){
            return stmKerja="kerja..kerja...kerja...!!!";
            }
      //procedure tidur
      String tidur(){
            return stmTidur="ZZzzz...!!!";
            }
     
      public String jalan(){
            return berdiri="berdiri tegap...";
            }
}


2. Class Siswa (Turunan dari Class Manusia)
package PBO; //sesuaikan package anda
public class Siswa extends Manusia{
      //konstruktor Siswa
      Siswa(String n){
      //memanggil konstruktor Manusia
            super(n);
            }
      //method override dari kelas Manusia
      String kerja(){
            return stmKerja="belajar...belajar...!!!";
            }
      String tidur(){
            return stmTidur="Ngiler...!!!";
            }
}


3. Class Guru (Turunan dari Class Manusia)
package PBO;//sesuaikan package anda
public class Guru extends Manusia {
      Guru(String n){
            super(n);
            }
      //method override dari kelas Manusia
      String kerja(){        
           
            return stmKerja="mengajar...mengajar...!!!";
            }
      //method asli dari Guru
      String tugas(String n){
            return stmTugas="ayo kerjakan...kerjakan...!!!";
            }
}


4. Class Bentuk3D
package PBO; //sesuaikan package anda
public class Bentuk3D {
      double panjang,lebar,tinggi;
      //konstruktor pertama
      Bentuk3D(double pj){
            this.panjang=pj;
            this.lebar=1;
            this.tinggi=1;
            }
      //konstruktor kedua (overload)
      Bentuk3D(double pj,double lb){
            this.panjang=pj;
            this.lebar=lb;
            this.tinggi=1;
            }
      //konstruktor ketiga (overload)
      Bentuk3D(double pj,double lb,double tg){
            this.panjang=pj;
            this.lebar=lb;
            this.tinggi=tg;
            }
}

5. Class Mobil
package PBO; //sesuaikan package anda
public class Mobil {
      public String merek,st;
      Mobil(String m){
            this.merek=m;
            st=this.merek+" adalah kendaraan beroda 4 ";
            }
      //procedure bergerak
      String bergerak(String arah){
            String a="melaju ke arah "+arah;
            return a;
            }
      //overload procedure bergerak
      String bergerak(String arah,int jauh){
            String a="melaju ke arah "+arah+" sejauh "+jauh+" km ";
            return a;
            }
}

6. Class Resep
package PBO;
public class Resep {
      //atribut private ini tidak bisa diisi langsung dari luar kelas..
      private String jenis;
      //atribut protected ini hanya bisa diisi dari subkelas..
      protected String namakue;
      private String j2;
      //konstruktor...langsung isi
      Resep(String n){
            this.namakue=n;
            }
      void isiJenis(String j){
            this.jenis=j;
            j2=this.namakue+" itu "+this.jenis;
           
      } //function... method
      String kadaluarsa(){
            String tahan="";
            if (jenis.equals("kue basah")){
                  tahan=j2+" -- > cepet kadaluarsa"; }
            else{ tahan=j2+" --> lama kadaluarsanya.....";
            }
            //nilai yang dikembalikan..
            return tahan;
            }
      }
7. Class Basah Turunan Resep

package PBO;
public class Basah extends Resep {
      private String a;
      //konstruktor
      Basah2(String n){
      super(n);
      //methodnya...         
      isiJenis(kue(a));
      }
      //method untuk membedakan kue basah atau kering
      String kue(String a){
            if(this.namakue.equalsIgnoreCase("kue tart"))
                  a="kue basah";
            else
                  a="kue kering";
            return a;
      }
}

8. Class Sepeda
package PBO;
public class Sepeda {
      //atribut static diinisialisasi...
      static int jmlRoda = 2;
}

9. Class Abstract MakhlukHidup
package PBO;
public abstract class MakhlukHidup {
      protected String nafas,berdiri;
      public String bernafas() {
            return nafas="RRrr…";
            }
      /* method di bawah ini harus dioverride oleh subclassnya...
       * subclass-nya mengimplementasikan method ini :) */
      public abstract String jalan();

}

10. Class Animal (Turunan dari Class Abstract MakhlukHidup)
package PBO;
public class Animal extends MakhlukHidup {

      public String jalan(){
            return berdiri="berdiri tidak tegap...";
      }
}

11. Class Hitung
package PBO;
public class Hitung {
      //atribut/variabel final yg tidak dapat di rubah
      final double phi = 3.14;
      int jari2;
      //konstruktor
      Hitung(int jari2){
            this.jari2 = jari2; }
      //method
      String Luas(){
            double luas=jari2*phi;
            String luasString=String.valueOf(luas);
            return luasString;
      }
}

12. Interface Pekerja
package PBO;
//interface Pekerja hanya berisi method tanpa body
public interface Pekerja {
      String lakukanJob();
}

13. Interface Orang
package PBO;
//interface Orang hanya berisi method tanpa body
public interface Orang {
      String lakukanSesuatu();
}

14. Interface Murid (Turunan Interface Orang)
package PBO;
//interface Murid turunan dari interface Orang
public interface Murid extends Orang {
      String lakukanExtraSesuatu();
}

15. Class PencariIlmu mengimplementasikan interface Murid dan Pekerja
package PBO;
//kelas PencariIlmu menerapkan/mengimplementasi dari interface Murid dan Pekerja
public class PencariIlmu implements Murid,Pekerja {
      String sedang,belajar,job;
      //pengisian body method dari interface Orang
      public String lakukanSesuatu(){
            return sedang=("makan, tidur ...");
            }
      //pengisian body method dari interface Murid
      public String lakukanExtraSesuatu(){
            return belajar=("belajar...");
            }
      //pengisian body method dari interface Pekerja
      public String lakukanJob(){
                  return job=("mengerjakan tugas...");
            }
     
}

KUMPULAN SOURCE-CODE UNTUK BUTTON PADA TIAP TABBEDPANE
A. Turunan/Pewarisan/Inheritance
1. BUTTON MANUSIA
Manusia dahlan=new Manusia("Dahlan Iskan");          
jTextArea1.setText("Nama = "+dahlan.tampilkanNama()+ "\n"+dahlan.makan()+"\n"+dahlan.kerja()+"\n\n"+dahlan.tidur());
2. BUTTON SISWA
Siswa angga = new Siswa("Si Ali");
jTextArea1.setText("Nama = "+angga.tampilkanNama()+"\n"+ angga.makan()+"\n"+angga.kerja()+"\n\n"+angga.tidur());
3. BUTTON GURU
Guru hadi=new Guru("M Hadi Wijaya");
jTextArea1.setText("Nama Guru = "+hadi.tampilkanNama()+"\nSifat Turunan = "+hadi.makan()+"\nSifat Overrides = "+hadi.kerja()+"\nSifat Asli = "+hadi.tugas(null));
     
4. BUTTON OBJEK_ARRAY
Manusia[] profesi=new Manusia[3];
profesi[0] = new Siswa("Angga Darmawan");
profesi[1] = new Guru("Hadi Wijaya");
profesi[2] = new Manusia("Simonchelli");
           
String statement1="Nama Siswa = "+profesi[0].tampilkanNama()+
                        "\n"+"Nama Guru = "+profesi[1].tampilkanNama()+
                        "\nNama Manusia (pembalap) = "+profesi[2].tampilkanNama();
           
String statement2="\n\n\n\n\nPekerjaan siswa = "+profesi[0].kerja()+
            "\nPekerjaan guru = "+profesi[1].kerja()+
            "\nPekerjaan pembalap = "+profesi[2].kerja();
           
jTextArea1.setText(statement1+statement2);

B. PerubahanBentuk/Polymorphism/Polimofisme
B.1. OverLoad/OverLoading
1. BUTTON BENTUK3D-1
Bentuk3D bentuk=new Bentuk3D(3.5);
jTextArea3.setText("Panjang = "+bentuk.panjang+"\nLebar = "+bentuk.lebar+"\nTinggi = "+bentuk.tinggi);
2. BUTTON BENTUK3D-2
Bentuk3D bentuk=new Bentuk3D(3.5,2.4);
jTextArea3.setText("Panjang = "+bentuk.panjang+"\nLebar = "+bentuk.lebar+"\nTinggi = "+bentuk.tinggi);
3. BUTTON BENTUK3D-3
Bentuk3D bentuk=new Bentuk3D(3.5,2.4,4.7);
jTextArea3.setText("Panjang = "+bentuk.panjang+"\nLebar = "+bentuk.lebar+"\nTinggi = "+bentuk.tinggi);
4. BUTTON MOBIL
Mobil kijang=new Mobil("Kijang Innova");
jTextArea3.setText(kijang.st+"\n"+kijang.bergerak("depan")+"\n"+kijang.bergerak("belakang",3));
B.2. OverRide/OverRiding
berlaku pada = method() TURUNAN/SUBCLASS
bisa dilihat pada Pewarisan


C. Pembungkusan/Tingkat-Akses/Encapsulation
Tingkat Akses = private, protected, public dan default (tanpa tanda modifier)
1. BUTTON KUE_TART
Basah2 tart=new Basah2("Kue Tart");
            jTextArea2.setText(tart.kadaluarsa());
2. BUTTON KUE_MARIE
Basah2 tart=new Basah2("Kue Marie");
            jTextArea2.setText(tart.kadaluarsa());

D. Modifier (static & final)
D.1. static
1. BUTTON Tes Statis 1

//instansiasi pertama :)
Sepeda motor = new Sepeda();
motor.jmlRoda =2;              
String stm1=("Jumlah Roda Motor = "+motor.jmlRoda);
//instansiasi kedua :)
Sepeda becak = new Sepeda();
becak.jmlRoda = 3;
String stm2=("Jumlah Roda Becak = "+becak.jmlRoda);
// apa yang terjadi ketika objek motor dipanggil lagi ...
String stm3=("Jreng..jreng...,apa yang terjadi pada jumlah roda motor...");
String stm4=("Jumlah Roda Motor = "+motor.jmlRoda);
jTextArea5.setText(stm1+"\n"+stm2+"\n"+stm3+"\n"+stm4+"\n"+motor.melaju(null));

2. BUTTON Tes Statis 2
//mengeset data langsung dr Class tanpa pembuatan objek
Sepeda.jmlRoda = 5;
jTextArea5.setText("Jumlah roda sepeda = "+Sepeda.jmlRoda);
D.2.  final
1. BUTTON Tes Final
Hitung lingkaran = new Hitung(76);
//ilegal access
//lingkaran.phi=4.15;
jTextArea6.setText("phi ="+lingkaran.phi+"\n"+"jari2 ="+ lingkaran.jari2+"\n"+"Luas Lingkaran = "+lingkaran.Luas());

E. Abstract & Interface
1. BUTTON Test Abstract
Manusia andri=new Manusia("Andri Bagus Nugroho");
Animal kucing=new Animal();
//MakhlukHidup a = null;
String stm1=(andri.tampilkanNama()+"\n"+andri.makan()+"\n"+andri.jalan());
String stm2=("\n\nSi Puss"+" "+kucing.jalan()+"\n"+"kalo bernafas bersuara "+kucing.bernafas());
jTextArea4.setText(stm1+stm2);

2. BUTTON Test Interface
PencariIlmu toni = new PencariIlmu();
jTextArea4.setText("toni adalah objek PencariIlmu\n\nkerjaannya :\n"+ toni.lakukanSesuatu()+"\n"+toni.lakukanExtraSesuatu()+"\n"+
toni.lakukanJob());