Minggu, 15 April 2012

Inheritance dan Polimorfisme dalam Bahasa Pemrograman Java

Melanjutkan pembahasan mengenai Pemrograman Berbasis Objek (OOP), kali ini kami akan membahas mengenai Inheritance ( Pewarisan ) dan Pilimorfisme ( Banyak bentuk ) serta contoh program yang mengandung berkaitan dengan keduanya.


  • Inheritance ( Pewarisan )
Pewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.


SuperHero adalah superclass dari class FlyingSuperHero dan UnderwaterSuperHero. Catatan bahwa FlyingSuperHero “is-a” SuperHero. Sebagaimana juga UnderwaterSuperHero “is-a” SuperHero.

Pewarisan merupakan suatu keuntungan besar dalam pemrograman berbasis object, karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.

Berikut Contoh Programnya : 
//class Person.java  

public class Person {  
  
protected String name;  
protected int age;  
  
public Person(String name, int age) {  
    this.name = name;  
    this.age = age;  
}  
  
public String getName() {  
    return this.name;  
}  
  
public int getAge() {  
    return this.age;  
}  

===================================================================
//class Student.java  
  
public class Student extends Person {  
  
 private String schoolName;  
  
 public Student(String name, int age, String schoolName) {  
     super(name, age);  
     this.schoolName = schoolName;  
 }  
  
 public String getSchoolName() {  
     return this.schoolName;  
 }  
}  

===================================================================
//class Main.java  
  
public class Main {  
  
  public static void main(String[] args) {  
      Person person = new Person("Ainan Nurizzaman", 20);  
      Student student = new Student("Sylvia Syamrotul L", 20, "Universitas Gunadarma");  
  
      System.out.println("Informasi tentang object person : ");  
      System.out.println("Nama : " + person.getName());  
      System.out.println("Umur : " + person.getAge());  
      System.out.println();  
  
      System.out.println("Informasi tentang object student : ");  
      System.out.println("Nama : " + student.getName());  
      System.out.println("Umur : " + student.getAge());  
      System.out.println("Nama Sekolah : " + student.getSchoolName());  
  }  
}   

Output :
Untuk melakukan inheritance di java, kita menggunakan keyword extends. Dalam contoh program diatas class Studentlah yang mengiherit class Person sehingga class Student yang melakakukan extends, dimana dalam pendefinisian class nya menjadi class Student extends Person. Dalam proses inheritance ini subclass bisa mengakses semua field dari super classnya, kecuali yang beratribut private. Akan tetapi superclass tidak bisa mengakses field dari subclass apapun atributnya. Dalam program diatas sudah dicontohkan bahwa method getName dan getAge yang hanya terdapat pada class Person dapat dengan bebas diakses oleh Class turunannya yaitu class Student. Mengenai constructornya adalah sebagai berikut, dalam class person ia membutuhkan dua variable dalam constructornya, yaitu String name, dan int age, dan dalam class student ia membutuhkan 3 variable ketika membuat constructornya yaitu String name, int age, dan String schoolName, dimana dapat kita lihat bahwa 2 dari 3 variabel constructor dari class student sama dengan variable pada class person, maka kita tidak perlu membuatnya lagi, akan tetapi hanya perlu menggunakan keyword “super” untuk memanggil constructor dari superclass.


  • Polimorfisme
Polimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Menunjuk pada contoh sebelumnya pada pewarisan, kita lihat bahwa object SuperHero dapat juga menjadi object FlyingSuperHero atau object UnderwaterSuperHero.

Berikut Contoh Programnya :

public class Orang {
    public String nama;
    public String alamat;


    //Constructor...
    public Orang(){
        }


    public Orang(String nama) {
        this.nama = nama;
    }
    public Orang(String nama,String alamat){
        this.nama=nama;
        this.alamat=alamat;
    }


    //accessor method mengembalikan nilai
public String getName(){
        return nama;
        }


    //mutator methode untuk mengubah nilai dari instance.
public void setName(String nama){
        this.nama = nama;
       }
}
===================================================================
public class Mahasiswa extends Orang{
    String jeniskelamin;

    public Mahasiswa() {

     //super digunakan untuk memanggil constructor terdekat pada kelas Orang.

        super("Sylvia");
    }

    //overidde methode dari kelas Orang..
    public String getName(){
        return nama;
        }
    public void setName(String nama){
        this.nama = nama;
        }
 }
===================================================================
public class Pekerja extends Orang{

   public Pekerja() {

        super("Ainan");
    }

    //overide dari kelas Person

    public String getName(){

        return nama;
        }
    public void setName(String nama){

        this.nama = nama;
        }
}
===================================================================
public class CallOrang {
public static void main(String[] args){

        //contoh polimorfisme di java

        Orang call;

        Mahasiswa m = new Mahasiswa();

        Pekerja n = new Pekerja();
        //memanggil dari kelas mahasiswa

        call = m;

        String smp = call.getName();

        System.out.println("aku dari bagian Mahasiswa : " + smp);

        //memanggil dari kelas pekerja

        call = n;

        String sma = call.getName();

        System.out.println("aku dari bagian Pekerja : " + sma);

       }
       }

Output :



JENI (JAVA EDUCATION NETWORK INDONESIA)


Kamis, 12 April 2012

Enkapsulasi Dalam Bahasa Pemrograman Java


Melanjutkan postingan kami sebelumnya mengenai Pemrograman Terstruktur dan Bahasa Pemrograman Berbasis Objek. Kali ini kami akan membahas tentang enkapsulasi atau lebih dikenal dengan istilah pengkapsulan. Jadi Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni :

  • Information hiding


Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.

  • Interface to access data


Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.

Berikut Contoh Program Pengkapsulan pada Java :

import java.*;
import java.io.*;
import javax.swing.JOptionPane;
//Mengambil package dari java library
public class Enkapsulasi{
/*Main Method*/
    public static void main (String[] args){
    //Membuat dari kelas hitungGaji untuk suatu-
    //pegawai, dan memanggil method-methodnya
Penggajian pegawai = new Penggajian();
        double sg;
        String Nilai;

        Nilai = JOptionPane.showInputDialog("Masukkan Jumlah Gaji : ");
       
        sg = Double.parseDouble(Nilai);
        
         pegawai.setGaji(sg);
         pegawai.hitungGaji();
         System.out.println("\nBesar Gaji Bersih : RP. "+ pegawai.getGajiBersih());

   }

}

/*Kelas Penggajian*/
class Penggajian {
//Mendeklarasikan variabel-variabel internal kelas Penggajian.
   
    private double gajipokok, gajiSetelahPajak,pajakgaji;
    public double gajiBersih;
    private double potongan = 100000;

//Method untuk mengeset variabel internal gaji pokok.
public void setGaji(double  gaji){

        gajipokok = gaji;
        
    }

//Method untuk menghitung gaji bersih.
public void hitungGaji(){
        gajiSetelahPajak = gajipokok - (0.1 * gajipokok);
        pajakgaji = (gajipokok*0.1);
        gajiBersih = gajiSetelahPajak - potongan;

        System.out.println("\nBesar Pajak Gaji : RP. "+ pajakgaji);
        System.out.println("\nBesar potongan Gaji : RP. "+ potongan);
    }

//Method yang mengembalikan gaji Pokok (Gaji sebelum ada pengurangan)
public double getGajipokok(){
        return gajipokok;

    }

//Method yang mengmbalikan besar gaji bersih
public double getGajiBersih(){
        return gajiBersih;
    }
}

Output Program :

setelah memasukkan jumlah gaji kemudian tekan Enter / klik OK







Rabu, 04 April 2012

Perbedaaan Bahasa Pemrograman Terstruktural dengan Bahasa Pemrograman Berbasis Objek


Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek.Coba saja di bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya, Sedangkan untuk Structural Programming adalah kebalikan dari object oriented programming yaitu sebuah cara pemrosesan data yang terstruktur dalam analisa, cara dan penulisan pemrograman. Dikarenakan harus terstruktur sehingga dalam pembuatannya antara satu line pemrograman dengan yang lainnya berhubungan. Konsep utama dari Pemrograman Berbasis Objek terletak pada kondisi kode/line pemrogramanannya dimana merupakan sebuah kesatuan modular. Untuk program yang simpel/sederhana biasanya menggunakan pemrograman terstruktur karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman berorientasi objek.

Pemrograman Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi secara independen sehingga untuk setiap perubahan kode tidak tergantung pada kode yang lainnya, atau lebih dikenal dengan modular. Untuk programming terstruktur bersifat task-centric dan berorientasi objek bersifat data-centric. Terdapat juga perbedaan secara spesifik antara objek oriented dengan non-oop, yaitu pada kelas dan objek. Pada Pemrograman  Terstruktur tidak terdapat kelas dan objek.

Sifat-sifat dari pemrograman terstruktur dapat diuraikan sebagai berikut :
a. Memuat teknik pemecahan masalah yang logis dan sistematis
b. Memuat algoritma yang efisien, efektif dan sederhana
c. Program disusun dengan logika yang mudah dipahami
d. Tidak menggunakan perintah GOTO
e. Biaya pengujian program relatif rendah
f. Memiliki dokumentasi yang baik
g. Biaya perawatan dan dokumentasi yang dbuthkan relatif rendah

Berbeda dengan OOP. Suatu program disebut dengan pemrograman berbasis obyek (OOP) karena terdapat :

Encapsulation (pembungkusan) Encapsulation adalah mekanisme pemrograman yang membungkus kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan membentuk objek.

Inheritance (pewarisan) Inheritance memungkinkan programer meletakkan member yang sama dalam satu class dan class-class lain dapat mewarisi member tersebut. Class yang mengandung member yang sama dari beberapa class lain dinamakan superclass atau parent class. Class yang mewarisi dinamakan subclass atau child class. Inheritance menghasilkan class hierarchy.

Polymorphism (polimorfisme –perbedaan bentuk) Polymorphisme artinya mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku-perilaku yang berbeda

Bisa dikatakan pada pemrograman berorientasi objek, dapat dilakukan sebuah programming terhadap code yang lebih baik daripada pemrograman terstruktur, itu juga untuk kaliber atau skala rumit atau besar, sedangkan untuk coding yang skala kecil lebih mudah menggunakan pemrograman terstruktur dikarenakan lebih singkat dan mudah tanpa banyak perubahan yang penting.
  • Salah satu contoh bahasa pemrograman yang Terstruktural adalah PASCAL.
  
  • Salah satu contoh bahasa pemrograman yang Berbasis Objek(OOP) adalah JAVA,VISUAL BASIC DAN DELPHI.