Sabtu, 20 September 2014

program sederhana Enkapsulasi, Inheritance, dan Polimorfisme berserta hasil output programnya

ENKAPSULASI
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.
Begitulah konsep kerja dari enkapsulasi, dia 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.
Dalam JAVA, dasar enkapsulasi adalah class. anda membuat suatu class yang menyatakan bahwa variable atau method sebuah class tidak dapat diakses oleh class lain dengan menjadikan class tersebut private, atau dengan menjadikan class tersebut protected, yaitu hanya bisa diakses oleh turunannya.
lain hal jika anda menggunakan class public, dalam hal ini dapat diakses oleh sembarang class karena bersifat umum.
Contoh program sederhana ENKAPSULASI :
import java.io.*;
public class lingkaran{
      private double radius;
      public lingkaran(double radius){
                  this.radius=radius;
      }
      public void Luas(){
                  double luas= 3.14*radius*radius;
                  System.out.println("Luas lingkaran: "+luas);
      }
      public void Keliling(){
                  double keliling= 2.0*3.14*radius;
                  System.out.println("Keliling Lingkaran: "+keliling);
      }
      public static void main(String[]args)throws Exception{
                  DataInputStream dis= new DataInputStream(System.in);
                  System.out.print("input radius: ");
                  String input= dis.readLine();
                  double i= Double.parseDouble(input);
                  lingkaran A= new lingkaran(i);
                  A.Luas();
                  A.Keliling();
      }
}
Contoh Outputnya :
http://setyonugroho09.wordpress.com/2010/02/17/konsep-enkapsulasiencapsulation-pada-object-oriented-programming-dengan-java/

Inheritance
Inheritance adalah pewarisan. Pewarisan dalam pemrograman berorientasi objek, Inheritance memungkinkan suatu Class bisa mewariskan atribut dan Method kepada Class yang lainnya atau subClass, sehingga membentuk Class hirarki. Inheritance sangat mirip dengan hubungan orang tua dengan anak. Manakala suatu kelas menerima warisan dari semua anggota data dan fungsi menerima warisan, walaupun tidak semua di antara mereka dapat diakses oleh anggota fungsi dari kelas.
Di dalam Java 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.
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.Contoh dari hierarki class :
  • Superclass adalah class induk atau class orang tua, class yang letaknya di atas class tertentu di dalam hierarki.
  • Subclass adalah class anak. Semua property, methode, ataupun konstruktor yang dimiliki oleh superclass jika diwariskan, maka subclass memiliki semua yang dimiliki oleh superclass.

Contoh program

Keuntungan penggunaan Inheritance dalam OOP : Reusability
  • Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass
  • Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass
  • Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya


Contoh Lain:Kata kunci super digunakan untuk mengakses variabel/property ataupun method yang dideklarasikan di superclass yang memiliki kesamaan di subclass. Untuk lebih jelasnya buat contoh program di bawah ini :
Buat class Matematika
Kemudian buat subclass Hitungan
Selanjutnya membuat program utama, untuk menampilkan hasil proses yang dilakukan oleh class Matematika dan class Hitungan.
Disinilah peranan kata kunci super. Dari contoh program di atas, yang tercetak di standard output adalah property dari class Hitungan.

http://masvisualbasic.blogspot.com/2013/01/inheritance-dan-contoh-program-dalam.html
Polimorfisme adalah sesuatu yang mempunyai banyak bentuk, yang mana suatu objek digunakan dibanyak tujuan berbeda dengan nama yang sama.
Bentuk polimorfismenya bisa dilihat di Class Utama yang berwarna merah pada program di bawah ini.
  • Interface Poligon 
interface Poligon {

 // Deklarasi methode
  double Luas();
  double Keliling();
  String displayInfo();
}
Save dengan nama file Poligon.java
  • Class Lingkaran
class Lingkaran implements Poligon {
  // Deklarasi atribut
  private double radius;
  private final double PI = 3.14;
  // Definisi method
  // Konstruktor
  public Lingkaran(double r) {
    radius = r;
  }
  // Selector
  public double getRadius() {
    return radius;
  }
  // Definisi method dari kelas induk
  public double Luas() {
    return (PI*radius*radius);
  }
  public double Keliling() {
    return (2*PI*radius);
  }
  
  public String displayInfo() {
    return ( "Lingkaran"
           + "\no Jari-jari: " + (float)getRadius()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file Lingkaran.java
  • Class Segi Empat
class SegiEmpat implements Poligon {
  // Deklarasi atribut
  private double panjang, lebar;
  // Definisi method
  // Konstruktor
  public SegiEmpat(double p, double l) {
    panjang = p;
    lebar = l;
  }
  // Selector
  public double getPanjang() {
    return panjang;
  }
  public double getLebar() {
    return lebar;
  }
  // Definisi method dari kelas induk
  public double Luas() {
    return (panjang*lebar);
  }
  public double Keliling() {
    return (2*(panjang+lebar));
  }
  public String displayInfo() {
    return ( "Segi Empat"
           + "\no Panjang  : " + (float)getPanjang()
           + "\no Lebar    : " + (float)getLebar()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file SegiEmpat.java
  • Class Segitiga
import java.lang.Math;
class SegiTiga implements Poligon {
  // Deklarasi atribut
  private double alas, tinggi;
  // Definisi method
  // Konstruktor
  public SegiTiga(double a, double t) {
    alas = a;
    tinggi = t;
  }
  // Selector
  public double getAlas() {
    return alas;
  }
  public double getTinggi() {
    return tinggi;
  }
  // Definisi method dari kelas induk
  public double Luas() {
    return (alas*tinggi)/2;
  }
  public double Keliling() {
    double d;
    d = (double)Math.sqrt((alas*alas)+(tinggi*tinggi));
    return (alas+tinggi+d);
  }
  
  public String displayInfo() {
    return ( "Segi Tiga"
           + "\no Alas     : " + (float)getAlas()
           + "\no Tinggi   : " + (float)getTinggi()
           + "\no Luas     : " + (float)Luas()
           + "\no Keliling : " + (float)Keliling() );
  }
}
Save dengan nama file SegiTiga.java
  • Class Utama
// Program utama
class TesPoligon {
  public static void main(String args[]) {
    // Deklarasi array
    Poligon p[] = new Poligon[4];
    SegiEmpat se = new SegiEmpat(17,8);
    SegiTiga sg =  new SegiTiga(21,4);
    Lingkaran lg = new Lingkaran (10);
    Lingkaran lh =  new Lingkaran (7);
   
    //bentuk polimorfisme
    p[0] = se; 
    p[1] = sg;
    p[2] = lg;
    p[3] = lh;
    
    //bentuk polimorfisme
    p[0] = se; 
    p[1] = sg;
    p[2] = lg;
    p[3] = lh;
    
    p[0] = se; 
    p[1] = sg;
    p[2] = lg;
    p[3] = lh;
    
    Lingkaran x = new Lingkaran(8);
   
    // Display informasi
    for (int i=0; i < p.length; i++) {
      System.out.println("\n"+p[i].displayInfo());
    }
  }
}
Save dengan nama file TesPoligon.java
Cara menjalankan program :1. Save semua file di atas2. Jalankan satu persatu filenya terlebih dahulu3. Apabila sudah jalan semua jalankan program utama TesPoligon.java

Output Program


Jadi intinya pada program di atas adalah Class Poligon mempunyai bentuk bentuk banyak dari class segitiga, class segi empat dan kelas lingkaran.
http://top-ilmu.blogspot.com/2012/11/contoh-program-java-polimorfisme.html

Rabu, 10 September 2014

Object Oriented Programming (OOP)

Tentang OOP


A. Pengertian OOP

Object Oriented Programming atau yang lebih dikenal dengan OOP adalah pemrograman yang menitikberatkan kepada objek-objek untuk menyelesaikan tugas atau proses dari program tersebut. Sedangkan penitikberatkan ini dimaksudkan adanya interaksi pengiriman nilai, pesan atau pernyataan antar objek. Kemudian objek yang merespon hasil dari interaksi tersebut akan membentuk suatu tindakan atau aksi (methode).

– Encapsulation (pembungkusan)
• Variabel dan method dalam suatu obyek dibungkus agar terlindungi
• Untuk mengakses, variabel dan method yang sudah dibungkus tadi perlu interface
• Setelah variabel dan method dibungkus, hak akses terhadapnya bisa ditentukan.
• Konsep pembungkusan ini pada dasarnya merupakan perluasan dari tipe data struktur

– Inheritance (pewarisan)
• Sebuah class bisa mewariskan atribut dan method-nya ke class yang lain
• Class yang mewarisi disebut superclass
• Class yang diberi warisan disebut subclass
• Sebuah subclass bisa mewariskan atau berlaku sebagai superclass bagi class yang lain => disebut
multilevel inheritance.

Keuntungan Penggunaan Pewarisan:

• Subclass memiliki atribut dan method yang spesifik yang membedakannya dengan superclass,
meskipun keduanya mirip (dalam hal kesamaan atribut dan method).
• Dengan demikian pada pembuatan subclass, programmer bisa menggunakan ulang source code
dari superclass yang ada => ini yang disebut dengan istilah reuse.
• Class-class yang didefinisikan dengan atribut dan method yang bersifat umum yang berlaku baik
pada superclass maupun subclass disebut dengan abstract class.

– Polymorphism (polimorfisme – perbedaan bentuk)
Polimorfisme artinya penyamaran dimana suatu bentuk dapat memiliki lebih dari satu bentuk.
2. Pengertian class dalam OOP
Class adalah suatu frame yang merupakan definisi yang memuat data dan metod pengolah data.
Class juga dapat diartikan sebagai tempat untuk membuat obyek. Di dalam class dideklarasikan
variable dan method yang dimiliki oleh obyek. Proses pembuatan obyek dari sebuah class disebut
dengan instantiation. Jadi obyek merupakan hasil instansiasi dari class. Obyek disebut juga dengan
instance.

Class memiliki anggota yang disebut Anggota Class (class member).
Anggota Class terdiri dari :

1. atribut

2. method.
Tiap anggota class memiliki kontrol pengaksesan tersendiri, artinya apakah anggota tersebut dapat
diakses dengan bebas (tipe public) atau hanya dapat diakses melalui sebuah interface.
Contoh pembuatan class:
class BilanganRasional
{
public :
void assign (int,int);
void cetak();
private :
int pembilang, penyebut;
};

Perhatikan contoh di atas. Untuk mendefinisikan sebuah kelas, dipakai kata kunci class, diikuti dengan
pendeklarasian nama kelas tersebut. Fungsi assign() dan cetak() disebut member function (member
fungsi). Sedangkan variabel pembilang dan penyebut disebut member data (member data atau
member variabel). Disebut member karena kesemuanya merupakan anggota dari kelas
BilanganRasional.
Perhatikan kata kunci Public dan Private. Member functions pada contoh di atas dideklarasikan
sebagai fungsi global, sedangkan member data dideklarasikan sebagai lokal. Perbedaannya, member
global dapat diakses dari luar kelas, sedangkan member lokal hanya dapat diakses dari kelas itu
sendiri.


3. Apa itu object
Objek adalah sesuatu yang memiliki identitas (informasi tentang dirinya) dan tingkah laku (apa yang
dapat dilakukan) contoh objek dalam dunia nyata adalah rumah, sepeda, motor, manusia, hewan dll.
Identitas dari suatu objek adalah informasi tentang dirinnya sebagai contoh adalah objek Hewan
memiliki indentas berupa nama, jenis, tangan, kaki, mata dll, tingkah laku dari objek hewan adalah
berjalan, berlari, tidur dll.Dalam pemrograman identitas dapat dikatakan sebagai properties, sebagai
contoh membuat program multimedia berupa share video, objeknya berupa video yang mempunyai
identitas berupa nama video, size video, format file dan jenis video. Untuk tingkah laku disebut
sebagai methode.
• Obyek diciptakan dengan perintah new.
• Misal akan diciptakan obyek baru dari class mobil dengan nama mobilku
• Maka perintah penciptaan obyek mobilku dari class Mobil :
Mobil mobilku = new Mobil();


4. Ciri-ciri object !
• Obyek memiliki status (state) dan tingkah laku (behavior).
• Status (state) disebut juga dengan atribut.
• Contoh obyek : obyek mobil
– Atribut : merek, warna, bahan bakar.
– Method : pindah persnelling, kecepatan bertambah, dll.
• Pada OOP : status disimpan dalam variabel, dan tingkah laku disimpan dalam method.


Contoh pensil adalah suatu objek yang memiliki attribute (karakter) jenis, warna, panjang dan lain-lain.

File: Pensil.java                        
        class Pensil {
               
                //membuat attribut
                String jenis,warna;
                int panjang;
        }
       
     File: PensilBeraksi.java

       public class SifatPensil {
   
            public static void main(String[] args) {
               
                // membuat objek
                Pensil pensilku = new Pensil();
               
                //memanggil attribut dan memberi nilai
                pensilku.jenis="Pensil 2B";
                pensilku.warna="Hijau";
                pensilku.panjang=20;
                System.out.println("Jenis   : "+pensilku.jenis);
                System.out.println("Warna   : "+pensilku.warna);
                System.out.println("Panjang : "+pensilku.panjang+" cm");
           }
       }

Pensil juga memiliki methode (perilaku) seperti diruncingkan, digunakan dan lain-lain.

File Pensil2.java
        class Pensil2 {
               
                //buat methode
                void runcingPensil(){
                                System.out.println("Runcingkan Pensil");
                }
                void gunaPensil(){
                                System.out.println("Menulis di atas kertas");
                }
                void simpanPensil(){
                                System.out.println("Simpan pensil di dalam tas");
                }
           }


File: PensilBeraksi.java
   
        public class PensilBeraksi {
   
               public static void main(String[] args) {
               
                          // buat objek
                          Pensil2 pensilkuBeraksi = new Pensil2();
               
                         //panggil methode
                         pensilkuBeraksi.runcingPensil();
                         pensilkuBeraksi.gunaPensil();
                         pensilkuBeraksi.simpanPensil();
              }
            }



B. Keuntungan Penggunaan OOP

a. Natural
OOP dapat melakukan pendekatan terhadap objek yang menggambarkan segala sesuatu yang nyata, seperti sifat suatu benda maupun kegunaan dari benda tersebut.

b. Modular
Objek yang sudah dibentuk dapat dikelompokkan kembali dengan objek-objek yang lain, seperti kelompok alat tulis yang dapat dikelompokkan kembali dengan kelompok pensil, kelompok buku dan lain-lain.

c. Mudah diperbaharui
Dikarenakan sifat jangkauan dari objek memiliki bagian private dan public, maka jika bagian private ingin digunakan pada objek-objek lain dapat diperbaharui dengan menempatkan objek lain tersebut di bagian public.

d. Dapat didaur ulang
Suatu objek yang telah didefinisikan baik jenis, bentuk, ciri maupun perilaku dapat didefinisikan kembali dengan objek yang lain. Misalkan objek rumah yang memiliki ciri umum ada pintunya, jendelanya, atapnya, temboknya dan lian-lain, dapat didefinisikan kembali ciri-ciri tersebut dengan menyebutkan cirinya masing-masing seperti temboknya yang memiliki ciri jenisnya, ketebalannya, warna catnya dan lain-lain.