Pages

Senin, 14 Mei 2012

Encapsulation

Kali ini saya akan membahas tentang Enkapsulasi/Pengkapsulan (Encapsulation) pada bahasa pemrograman Java. Java sendiri adalah salah satu bahasa pemrograman berbasis OOP (Object Oriented Programming). Dalam Pemrograman Berbasis Objek ini yang terdapat beberapa konsep yaitu Objek (object), Kelas (class), Abstraksi (Abstraction), Enkapsulasi/Pengkapsulan (Encapsulation), Polimorfisme, dan Inheritas.

Enkapsulasi/Pengkapsulan (Encapsulation)

Enkapsulasi adalah pembungkus, maksud pembungkus disini adalah 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 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. Enkapsulasi menciptakan abstraksi untuk desain kelas. Jika Anda ingin melindungi beberapa anggota dari kelas dasar maka timbullah situasi enkapsulasi. Dalam konsep ini ada tiga kata kunci yang digunakan. Konsep hak akses ini biasa di sebut Access Modifier.


Access Modifier terdiri dari private, protected, dan public
 1. Private memberikan hak akses hanya kepada anggota class tersebut untuk menggunakan dan/atau mengubah nilai dari property atau method tersebut.
 2. Protected memberikan hak akses kepada anggota class nya dan anggota class hasil inheritance (penurunan sifat) dari class tersebut 
 3. Public memberikan hak akses kepada peroperty dan method agar dapat              digunakan diluar class tersebut

Contoh Program :

class enkapsulasi{                                                          
            public String Nama;
            public String NPM;
            public String Kelas;
            private int nilaiku;
            public void setNilai (int nilai){
                        nilaiku=nilai;
            }
            public int getNilai(){
                        return nilaiku;
            }
}
class coba{
            public static void main(String [] args){
                        enkapsulasi Biodata = new enkapsulasi();
                        Biodata.Nama = "Derendra";
                        Biodata.NPM = "51410814";
                        Biodata.Kelas = "2IA08";
                        Biodata.setNilai(90);
                        System.out.println("Nama  = "+ Biodata.Nama);
                        System.out.println("NPM   = "+ Biodata.NPM);
                        System.out.println("Kelas = "+ Biodata.Kelas);
                        System.out.println("Nilai = "+ Biodata.getNilai());
            }
}

Logika Program :

Pada kelas enkapsulasi deklarasikan variabel Nama, NPM dan Kelas yang bertipe String ke dalam Access Modifier Public. Sedangkan untuk nilaiku yang bertipe data integer dipakai Access Modifier Private. Lalu seting variabel nilaiku dengan perintah setNilai (int nilai) dengan tambahan variabel nilai untuk memasukkan angka nilai yang akan diberikan, dan terakhir ambil harga nilai tersebut dengan perintah getNilai() yang akan otomatis menjadi nilai dari variabel nilaiku dengan perintah return nilaiku;Lalu buat method dari kelas enkapsulasi tersebut untuk menampilkan data yang telah dimasukkan.




Output:
Nama = Derendra
Kelas = 2IA08
NPM = 51410814
Nilai = 90


 

Abstraction


Abstraction adalah suatu proses dimana kita melakukan design class dan menentukan data dan method yang akan di miliki oleh sebuah sebuah class. Method ini digunakan  untuk mengkomunikasikan data dalam class dengan lingkaran luar class ,misalnya untuk mengetahui  beberapa nilai jari-jari lingkaran saat ini kita menyediakan method khusus.pengaksesan data obyek secara langsung tidak diperbolehkan.
Contoh kode program :

Class lingkaran
{
Data: jari-jari
                Method: update jari-jari
                Informasi jari-jari
                Hitung luas
                Hitung keliling
}

Atribut & Method


Atribut
Atribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau sebuah field data. Mendeklarasikan Atribut :
<attributeDeclaration> ::=
<modifier> <type> <name> [= <default_value>];
<type> ::=
byte | short | int | long | char | float | double | boolean
| <class>

Catatan :

[] = Menunjukkan bahwa bagian ini hanya pilihan

Contoh:

public class AttributeDemo {
private String studNum;
public boolean graduating = false;
protected float unitsTaken = 0.0f; String college;
}

Method
Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik di dalam kelas. Method dapat dibagi menjadi fungsi dan prosedur. Fungsi adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah dengan mengembalikan hasil. Prosedur adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan suatu masalah tanpa mengembalikan suatu nilai hasil. Secara umum method dalam java adalah sebuah fungsi.


Karakteristik method :
1.     Dapat mengembalikan satu nilai atau tidak sama sekali
2.  Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali. Parameter bisa juga disebut sebagai argumen dari fungsi
3. Setelah method telah selesai dieksekusi, dia akan kembali pada method yang Memanggilnya.
Deklarasi sebuah method
Method terdiri atas dua bagian yakni :
1.    Method declaration
2.    Method Body
Method dapat digambarkan sebagai sifat (behavior) dari suatu class. Untuk mendefinisikan method pada dalam class digunakan sintaks sintaks
[modifier] <tipe_data_return> nama_method( [parameter] ) { methode body }
            Contoh :          public int Perkalian (int y;int z) { methode body    }

Modifier pada method
Modifier menentukan level pengaksesan sebuah method. Hal ini menentukan apakah sebuah method bisa diakses oleh objek lain, objek anak, objek dalam satu paket atau tidak dapat diakses oleh suatu object sama sekali berikut adalah beberapa jenis level access:
·       Public
Atribut ini menunjukan bahwa fungsi/method dapat diakses oleh kelas lain.
·      Private
Atribut ini menunjukan bahwa fungsi atau method tidak dapat diakses oleh kelas lain
·      Protected
Atribut ini menunjukan bahwa fungsi atau method bisa diakses oleh kelas lain dalam satu paket dan hanya  kelas lain yang merupakan subclass nya pada paket yang berbeda.
·      Tanpa modifier
Atribut ini menunjukan bahwa method dapat diakses oleh kelas lain dalam paket yang sama.
·      Abstract
Fungsi tidak memiliki implementasi.
·      Final
Method tersebut tidak dapat dioverride oleh kelas turunan.
·      Static
Method dapat diakses tanpa harus melakukan instantiasi terlebih dahulu.

Konstruktor


Metode konstruktor digunakan untuk menginisialisasi objek baru ketika metode-metode itu  dibuat. Tidak seperti metode biasa, kita  tidak dapat memanggil metode konstruktor dengan memanggilnya langsung. Metode konstruktor dipanggil oleh  java  secara  otamatis  ketika  kita  membauat objek baru. Jika kita menggunakan new untuk membuat objek baru, java melakukan 3 (tiga) hal :

1.     Mengalokasikan memori untuk objek baru
2.    Menginisialisasi variabel instance objek tersebut, baik dengan nilai awal maupun dengan nilai default (0 untuk bilangan, null untuk objek, false untuk Boolean, \0 untuk objek, false untuk Boolean, ‘\0 untuk karakter).
3.      Memanggil Metode konstruktor kelas tersebut (mungkin satu dari beberapa metode)

Dengan mendefinisikan metode konstruktor pada kelas yang kita buat, kita dapat mengatur nilai awal variabel instance, memanggil metode berdasar variabel tersebut atau objek lain, atau menghitung property awal objek, kita  juga  dapat melakukan overloading konstruktor sebagaimana yang biasa kita lakukanh terhadap metode regular, juga membuat objek yang memiliki     properti khusus berdarkan argumen yang kita berikan dalam ekspresi new. Konstruktor mirip dengan metode regular, hanya saja ada dua perbedaan utama yaitu : Konstruktor selalu memiliki nama yang sama dengan class. Konstruktor tidak memiliki nilai kembalian.
Contoh Program :


class Asisten { String nama ; int umur;
Asisten(String n, int u) {

nama = n;

umur = u;

}

void tampilAsisten () {
System.out.print(“Hallo, namaku + nama ); System.out.println( Umurku + umur + “ tahun “);

}

public ststic void main(String [] args) { Asisten a;
System.out.println( “);

a = new Asisten(Widy Marinto Jati ,20);

a.tampilAsisten();

System.out.println(“-------------------- ); a = new Asisten(“Iman R, ST “ ,22); a.tampilAsisten();
System.out.println(“-----------------------“);

}

}