RSS

Sabtu, 18 Mei 2013

MATERI OOP II



*      TUGAS 1 :

RINGKASAN MATERI OOP II

1.      Konsep OOP

Desain berorientasi object adalah sebuah teknik yang memfokuskan desain pada object dan class berdasarkan pada skenario dunia nyata. Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entiti) dari suatu permasalahan adalah objek. Hal ini menegaskan keadaan (state), behaviour dan interaksi dari objek. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, tengoklah sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain. Selain itu juga menyediakan manfaat akan kebebasan pengembangan, meningkatkan kualitas, mempermudah pemeliharaan, mempertinggi kemampuan dalam modifikasi dan meningkatkan penggunaan kembali software.
Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep. Kelas merupakan inti dari pemograman java. Java itu sendiri merupakan pemograman yang mendukung dan mengimplementasikan konsep pemograman berorientasi objek sepenuhnya.

2.      Objek
Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil memiliki state warna, model, tahun pembuatan, kondisi, dll. Sedang behaviour adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok, membunyikan klakson, dll. Objek menyimpan statenya dalam satu atau lebih variabel, dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan metode-metode yang berhubungan dengan variabel tersebut.
Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.
Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

3.      Kelas
Kelas adalah semacam cetakan, atau template, untuk membuat objek. Ibaratkan sebuah rancangan rumah yang digunakan untuk membangun ratusan rumah. Rumah yang dibangun tersebut adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan karena semua objek rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprintnya. Tetapi objek-objek yang dibangun tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program, atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita definisikan kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.
Sebagai contoh, misalkan kita ingin membuat kelas Rumah, maka kita harus membuat sebuah kelas yang mendefinisikan semua variabel yang dimiliki objek dari kelas tersebut. Selain itu, kelas tersebut juga harus mendeklarasikan metode-metode yang dimiliki objek dari kelas dan juga membuat implementasi dari metode tersebut. Dengan adanya kelas ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.


Variabel kelas sebenarnya sama dengan variabel instans. Bedanya adalah, setiap objek berbagi satu dan hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap objek Rumah terdiri atas 2 lantai. Maka informasi ini cukup disimpan satu kali, karena nilainya tidak berbeda untuk semua objek. Lebih jauh, bila ada satu objek yang mengubah nilai dari variabel kelas, maka semua objek sejenis lainnya akan mengikuti perubahan itu. Di samping variabel, terdapat juga metode kelas. langsung dipanggil melalui kelas dan bukan dari instans kelas tersebut.

4.      Method
Method merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan dipanggil melalui object. Dengan kata lain method juga dikenal sebagai fungsi atau prosedur.
Pemanggilan method dalam suatu kelas dilakukan dengan menuliskan objek pemiliknya dan diikuti oleh operator titik (.) beserta nama method yang akan di eksekusi.


*      Pewarisan Sifat Objek (Inheritance)
Pewarisan adalah salah satu cirri pemograman berorientasi objek, yang menyatakan suatu kelas dapat diturunkan lagi menjadi kelas-kelas baru yang lainnya sehingga dapat membentuk sebuah hiraki. Kelas yang merupakan kelas turunan ini bisa disebut dengan kelas anak (subclass) dan kelas yang menjadi dasar penurunan disebut kelas orang tua (superclass).

a.       Dasar Pewarisan (Superclass dan Subclass)
Pemograman java mengizinkan kita untuk mendefinisikan suatu kelas yang bersifat generic. Selanjutnya kelas tersebut diturunkan lagi menjadi kelas baru yang bersifat lebih spesifik. Adapun kelas baru yang hasil turunan disebut subclass. Pada proses penurunan kelas ini kelas turunan akan mewarisi sifat-sifat yang terdapat pada kelas induknya, selanjutnya, kelas turunan tersebut dapat memiliki sifat-sifat spesifik yang sebelumnya tidak dimiliki oleh kelas induk. Sebagai contoh, yakni terdapat kelas binatang, kelas tersebut selanjutnya akan diturunkan lagi menjadi kelas-kelas baru yang lebih spesifik tanpa meninggalkan sifat-sifat dari kelas binatang, menjadi kelas: Herbivora (binatang pemakan tumbuhan) dan Karnivora (binatang pemakan tumbuhan). Kelas turunan yang lain akan diturunkan lagi menjadi kelas turunan yang lainnya seperti kelas herbivora bisa diturunkan lagi menjadi kelas Kambing dan Kerbau, sedangkan untuk kelas Karnivora dapat diturunkan lagi menjadi Anjing, Harimau, Singa dsb.
( ) kelas binatang adalah superclass dari kelas herbivoran dan karnivora itu sendiri berperan sebagai subclass. kemudian dari superclass tersebut terdapat subclass nya yakni pada superclass Herbivora dapat menjadi Subclass dari kelas Kambinga dan Kerbau. Begitupun pada superclass Karnivora dapat menjadi subclass dari kelas Harimau dan Kucing.
Pada pemograman java menyediakan kata kunci extends yang digunakan untuk proses penurunan terhadap suatu kelas. Bentuk umum dari penggunaan kata kunci tersebut adalah sebagai berikut:

Class nama-subclass extends
nama-superclass{
// badan kelas
}

Ketika kita sedang membentuk sebuah hiraki kelas constructor yang akan dipanggil pertama kali dalam setiap pembentukan objek adalah constructor dari kelas induk paling dasar. Sebagai contoh kita memiliki induk dengan nama A dan diturunkan lagi menjadi kelas C, pada situasi saat ini setiap kita membentuk objek dari kelas C, maka urutan yang dipanggil adalah contructor dari kelas A disusul dengan contructor dari kelas B, baru kemudian contructor dari kelas c. Pada saat kita membentuk atau melakukan instansiasi terhadap suatu objek turunan, maka sebelumnya java juga akan membentuk objek dari kelas induk-induk nya.

b.      Pengertian Polimorfisme
Polimorfisme adalah kemampuan suatu objek untuk mengungkap banyak hal melalui satu cara yang sama. Polimorfisme merupakan salah satu hal esensial dalam pemograman berorientasi objek karena alasan beriku: yakni polimorfisme mengizinkan kelas induk untuk mendefinisikan sebuah method general ( bersifat umum) untuk semua kelas turunannya. Polimorfisme dapat berupa overloading atau overriding.
Overloading merupakan bentuk polimorfisme yaitu beberapa metode yang dapat memiliki nama yang sama dengan isi dan parameter yang berbeda didalam sebuah kelas.
Biasanya eksekusi program akan langsung mengacu pada metode yang dipanggil sesuai dengan parameter . Overriding merupakan bentuk polimorfisme yaitu berupa metode pada kelas orang tua yang dapat di tulis ulang pada kode kelas anak dalam pewarisan (inherentance) dengan memiliki nama yang sama dan memiliki isi ataupun parameter yang sama atau berbeda.


Mengenal Object, Class, Method, dan Property

Burung itu ibarat objek yang punya nama, mata, kaki, sayap, warna, jenis. Burung juga dapat terbang, berkicau dan berjalan. Mata, kaki sayap dan warna dalam dunia pemrograman disebut juga atribut atau properties. Sedangkan aktifitasnya yaitu terbang, berkicau dan berjalan dalam dunia pemrograman disebut sebagai method.
Class adalah cetakan, template, prototype,tempat dari object, sedangkan object adalah isi dari kelas. Satu kelas dapat mempunyai object lebih dari satu atau banyak. Contoh sederhananya seperti berikut : satu cetakan biasa menghasilkan banyak kue.

Ada 3 Konsep Dasar OOP pada Java :
Ø  Encapsulation
Encapsulation adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Dalam OOP Encapsulation di wujudkan dalam bentuk “class”. Seperti yang telah dijalaskan sebelumnya dalam sebuah class terdapat property dan method yang memiliki hak akses tertentu terhadap environment/lingkungan-nya, hak akses ini biasa di sebut Access Modifier, access modifier terdiri dari private, protected, dan public.

Contoh Program Encapsulation:
package praktikum5;

public class manusia {
     
   public String nama;
   public manusia(String n){
         this.nama= n;}
   public String tampilkanNama(){
         return nama;}
   public void makan(){System.out.println("nyam ... nyam..");}
      public void kerja (){System.out.println("kerja...kerja..");}
   public void bersantai() {System.out.println("santaiii broo");}
         // TODO Auto-generated method stub
        
   }

Dimana Pada public ini memberikan hak akses kepada property dan method agar dapat digunakan diluar class tersebut.
class manusia Ini bisa diakses oleh kelas lain dan masing-masing method diberikan nama public void makan,kerja ,dan bersantai ini dapat di p[anggil oleh klas utama dengan menggunakan nama makan,bersantai,dan kerja.

Ø  Inheritance
Inheritance adalah pewarisan yang artinya sebuah class dapat mewarisi atribut dan metho dari class lain. untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.

Contoh Programnya :

 package praktikum5;
public class oop extends manusia {
      public oop (String n) {
           super(n);

      }
      public void kerja (){
           System.out.println("tak tik tuk");

      }
 public void bersantai(){
      System.out.println("game over, you lose ");
 }
 }

               Public class oop ini memanggil class manusia , dimana kelas semua method pada kelas manusia akan diganti dengan method oop.dan pada saat di run yang akan muncul methodnya adalah method yang ada pada oop.

Ø  Polymorism
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.
Polymorism 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 dengan nama tentara.java
package praktikum5;

class tentara extends manusia {
     public String pangkat;
     public tentara(String n){
          super (n);
          this.pangkat= n;}
     public String tampilkanPangkat () {return pangkat;}
public void kerja(){System.out.println("Dor...Dor");}}

               Public class tentara ini memanggil class manusia , dimana kelas semua method pada kelas manusia akan diganti dengan method tentara.dan pada saat di run yang akan muncul methodnya adalah method yang ada pada tentara.


Kemudian compile dan run.
Ø  Gabungan program OOP

·         Kelas Utama 1

package praktikum5;
class ttt {

     public static void main(String[] args) {
          manusia ttt = new manusia("tisa");
          System.out.println("nama"+ttt.tampilkanNama());
          ttt.makan();
          ttt.kerja();
          ttt.bersantai();
          }
}

ü  Outputnya
namatisa
nyam ... nyam..
kerja...kerja..
santaiii broo                     


class utama ttt ini menghasilkan output yang ada pada di atas dan output d atas adalah milik method yang ada pada kelas manusia

·         Kelas Utama 2

package praktikum5;

public class dedi {
public static void main(String args[]){
sopir dedi=new sopir ("dedi");
System.out.println("nama= "+dedi.tampilkanNama());
dedi.makan();
dedi.kerja();
dedi.bersantai();
}
   }

ü  Outputnya

nama= dedi
nyam ... nyam..
nyong...nyong.ciit.
santaiii broo

class utama dedi ini menghasilkan output yang ada pada di atas dan output d atas adalah milik method yang ada pada kelas manusia dan untuk void kerja menggantikan class tentara
                                              
·         Kelas Utama 3
package praktikum5;

public class pekerja {

     public static void main(String[] args) {
     manusia[] profesi= new manusia[3];
     profesi[0]= new oop("");
     profesi[1]= new tentara("");
     profesi[2]= new sopir("dedi"); 
for (int i=0; i<3; i++){
     profesi[i].kerja();
          //*profesi[0].kerja();
          //*profesi[1].kerja();
          //*profesi[2].kerja();
     }
     }}
ü  Outputnya

tak tik tuk
Dor...Dor
nyong...nyong.ciit.

class utama pekerja inio menghasilkan output yang ada pada di atas dan output d atas adalah milik method kerja yang ada pada kelas manusia dimana manusia ini memiliki  peranakan danyang di panggil adalah oop,tentara,sopir.

·         Pewarisan 1
package praktikum5;

public class manusia {

    
     public String nama;
     public manusia(String n){
          this.nama= n;}
     public String tampilkanNama(){
          return nama;}
     public void makan(){System.out.println("nyam ... nyam..");}
     public void kerja (){System.out.println("kerja...kerja..");}
     public void bersantai() {System.out.println("santaiii broo");}
          // TODO Auto-generated method stub
         
     }

·         Pewarisan 2
package praktikum5;
public class oop extends manusia {
      public oop (String n) {
           super(n);

      }
      public void kerja (){
           System.out.println("tak tik tuk");

      }
 public void bersantai(){
      System.out.println("game over, you lose ");
 }
 }

·         Pewarisan 3
package praktikum5;

public class sopir extends manusia{
      public sopir (String n) {
           super(n);}
      public void kerja (){
           System.out.println("nyong...nyong.ciit.");
      }
}

·         Pewarisan 4
package praktikum5;

class tentara extends manusia {
     public String pangkat;
     public tentara(String n){
          super (n);
          this.pangkat= n;}
     public String tampilkanPangkat () {return pangkat;}
     public void kerja(){System.out.println("Dor...Dor");}}


*      TUGAS 2 :

·         KELAS UTAMA
Nama class ini adalah kelasutama dan ini merupakan kelas yang bisa di compile atau di run. Karen memiliki method yaitu public static void main(String args [ ] ){ yang memiliki fungsi dan kegunaan yaitu inilah objeknya. Mungkin pertanyaan anda adalah, kalau baris ini adalah objeknya lalu nama objeknya apa, terus atribut
dan methodnya mana?
Pada contoh program ini saya belum mendefinisikan sebuah nama objek dengan jelas karena programnya masih sangat sederhana, untuk contoh ini “kelasutama” adalah nama objeknya berikutnya yang ada didalam .


package OOP2;

import javax.swing.JOptionPane;

public class utamaaa {

      public static void main(String args[]){
            kelaskedua tina=new kelaskedua ();
            do {
            tina.hitung();
            System.out.println("");
           
            while (JOptionPane.showConfirmDialog(null,"Ulang lagi?")==JOptionPane.YES_OPTION); 
            }


}


ü  OUTPUTNYA

 Masukan Bulan penjualan : 7
 Jumlah Data : 3

 Nama Barang ke- 1: K U L K A S
 Barang : 2
 Harga Rp. : 1000


 Nama Barang ke- 2: L A P T O P
 Barang : 4
 Harga Rp. : 3000


 Nama Barang ke- 3: L E M A R I
 Barang : 1
 Harga Rp. : 800

 Laporan Penjualan PT YAI
 Bulan : 7
=================================================================
| No. |   Nama Barang   |   Jumlah   |   Harga   |   Total   |
=================================================================
  1.           K U L K A S                          2              1000                       2000
  2.           L A P T O P                           4              3000                       12000
  3.           L E M A R I                          1              800                         800
=================================================================
 Total Barang : 3
 Total Penjualan : 14800

Untuk kelas utama ini di gunakan untuk me run dan mengcompile program ini dan di program utama ini akan memanggil kelas anak 2 dimana anak 2 ini merupakan  pewarisan dari anak 1 jadi kelas ini memanggil semua method yang ada di kelas anak1 dan kelas anak2, sehingga outputnya seperti diatas, untuk memanggil kelas anak 2 kita menggunakan kata public static void hitung yang sudah di deklarasikan di kelas anak 2, dengan terlebih dahulu mendeklarasikan nama tina .

·         Pewarisan 1

package OOP2;

public class kelaspertama {

     
      public static void bulan(){System.out.println(" Laporan Penjualan PT YAI");}
      public static void tabel(){System.out.println("=================================================================");
                              System.out.println("| No. |   Nama Barang   |   Jumlah   |   Harga   |   Total   |");
                              System.out.println("=================================================================");}
    void grs(){System.out.println("=================================================================");}

}


Ini meerupakan pewarisan 1 yang berhubungan langsung dengan kelas anak2 yang bisa diakses oleh semua kelas karena sudah di deklarasikan dengan kata publiuc void tersebut jadi kelas ini bisa di akses oleh semua kelas.


·         Pewarisan 2

package OOP2;

      import java.util.Scanner;

      public class kelaskedua extends kelaspertama {

      public void hitung(){
                        Scanner input=new Scanner(System.in);
                        Scanner input2=new Scanner(System.in);

             System.out.println("");
             System.out.print(" Masukan Bulan penjualan : ");
             int bulan=input.nextInt();
             System.out.print(" Masukkan Jumlah Data : ");
           int n = input.nextInt();
           int jumlahbarang[]=new int[n+1];
           int hargabarang[]=new int[n+1];
           String namabarang[]=new String[n+1];
           int total[]=new int[n+1];
           int total1=0;
           for (int i=1;i<=(n);i++) {

           System.out.print(" Nama Barang ke- "+i +": ");
           namabarang[i]=input2.nextLine();
           System.out.print(" Jumlah : ");
           jumlahbarang[i]=input.nextInt();
           System.out.print(" Harga Rp. : ");
           hargabarang[i]=input.nextInt();
           System.out.println("");
             total[i]=hargabarang[i]*jumlahbarang[i];
             total1=total1+total[i];}

           kelaspertama.bulan();
           System.out.println(" Bulan : "+bulan);
           kelaspertama.tabel();
           for (int i=1;i<=n;i++) {
           System.out.println("  "+i+".   "+namabarang[i]+"       "+jumlahbarang[i]+"           "+hargabarang[i]+"            "+total[i]+"");}
           kelaskedua kamu=new kelaskedua();
           kamu.grs();
           System.out.println(" Total Barang : "+n);
           System.out.println(" Total Penjualan : "+total1);

            }}




Pada kelas pewarisan 2 ini yaitu kelas anak 2 merupakan method yang paling penting karena program utamanya berada di kelas ini dan di kelas ini kita menghubungkan dengan kelas anak 1 dengan kodfenya yaitu kamu.tabel();, dan     kamu.bulan(); yang ada pada kelas anak 1 ,,,
Lalu untuk kelas ini memiliki public void hitung yang merupakan kata kunci dari semua ini karena kata hitung ini berguna untuk mengakses kelas anak 2 ini yang sudah terhubung dengan kelas anak 1 harus menggunakan public void hitung yang sudah ada pada kelas utama.


 
Copyright Welcome to My First Blog ^__^ 2009. Powered by Blogger.Designed by Ezwpthemes .
Converted To Blogger Template by Anshul .
One Direction - Live While We're Young