universitas gunadarmarogayah.staff.gunadarma.ac.id/downloads/files/38677/enkapsulasi.pdf · muhamad...

17
PEMROGRAMAN BERBASIS OBYEK Encapsulation 2IA08 1. Ade hardiyanto 50412121 2. Burhanuddin Ginting 51412532 3. Muhamad Iqbal Tawakal 54412803 4. Perdi Atmaja 55412663 5. Reza Cipta Permana 56412192 UNIVERSITAS GUNADARMA TEKNIK INFORMATIKA 2013/2014

Upload: dinhdung

Post on 08-Mar-2019

234 views

Category:

Documents


0 download

TRANSCRIPT

PEMROGRAMAN BERBASIS OBYEK

Encapsulation

2IA08

1. Ade hardiyanto 50412121

2. Burhanuddin Ginting 51412532

3. Muhamad Iqbal Tawakal 54412803

4. Perdi Atmaja 55412663

5. Reza Cipta Permana 56412192

UNIVERSITAS GUNADARMA

TEKNIK INFORMATIKA 2013/2014

Kata pengantar

Segala puji dan syukur kami panjatkan kepada Tuhan Yang Maha Esa, karena atas berkat

dan limpahnya maka kami boleh menyelesaikan tugas Pemrograman Berbasis Obyek dengan

tepat waktu.

Berikut ini kami mempersembahkan sebuah makalah dengan judul " ENCAPSULATION”

Kami menyadari bahwa masih sangat banyak kekurangan yang mendasar pada makalah

ini. Oleh karena itu kami mengundang pembaca untuk memberikan kritik dan saran yang

bersifat membangun untuk kemajuan ilmu pengetahuan ini.

Dengan ini kami mempersembahkan makalah ini dengan penuh rasa terima kasih dan

semoga Tuhan Yang Maha Esa memberkahi makalah ini sehingga dapat memberikan manfaat

bagi kita semua.

Jakarta,03 April 2014

Penyusun

DAFTAR ISI

Kata Pengantar

Daftar Isi

Bab 1

Pendahuluan

Enkapsulasi

o Accessor Method

o Mutator Method

o Overloading

o Overriding

o Keyword This

o Modifier

o Variable dan Method Static

Bab 2

Penutup

Daftar Pustaka

Bab 1

PENDAHULUAN

Komputer adalah perangkat yang mampu melakukan komputasi dan membuat keputusan logis. Komputer melakukan dengan kecepatan cahaya, milyaran kali lebih cepat dibanding manusia. Komputer mengolah data di bawah kendali sekumpulan instruksi yang disebut program/aplikasi komputer. Program ini menuntun komputer melakukan serangkaian aksi – aksi yang dispesifikasikan.

Saat ini, ongkos pengembangan perangkat lunak meningkat seiring dengan makin rumitnya aplikasi. Metode pengembangan yang baik mampu mereduksi ongkos pengembangan secara signifikan. Salah satu komponen pengembangan adalah kakas pengembangan adalah kakas pengembangan, di antaranya adalah bahasa pemrograman. Bahasa pemrograman yang ampuh dan nyaman meningkatkan produktivitas pengembangan.

Bahasa Java member harapan menjadi perekat universal yang mengkoneksi pemakai dengan informasi dari web server, basis data, penyedia informasi dan sumber-sumber lain. Bahasa Java memiliki fitur keamanan built-in. Bahasa Java juga mempermudah pemrograman aplikasi multhithreading.

ENKAPSULASI

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, sekaligusmenjaga program tersebut.

Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses

ataupun intervensi dari program lain yang mempengaruhinya. Hal inisangat 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.

Private memberikan hak akses hanya kepada anggota class tersebut untuk menggunakan atau

mengubah nilai dari property atau method tersebut.

Protected memberikan hak akses kepada anggota class nya dan anggota class hasil inheritance

(penurunansifat) dari class tersebut.

Public memberikan hak akses kepada property dan method agar dapat digunakan diluar class

tersebut.

A. DASAR TEORI

Encapsulasi atau Pengkapsulan adalah cara “membungkus” data dan method yang menyusun

kelas sehingga kelas dapat dipandang sebagai suatu modul dan menyembunyikannya dari dunia luar.

Dunia luar disini adalah data, method, kelas, interface, atau package lain yang mungkin akan

berinteraksi dengan modul tersebut. Dengan kata lain enkapsulasi adalah suatu cara untuk

menyembunyikan implementasi detail dari suatu class.

Enkapsulasi mempunyai dua hal mendasar, yaitu :

1. 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.

2. 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.

Keuntungan menerapkan Encapsulasi adalah :

Bersifat independen

Suatu modul yang terencapsulasi dengan baik akan bersifat independen dari modul yang lainnya

sehingga dapat digunakan pada bagian manapun dari program. Ia tidak akan terikat pada bagian

tertentu dari program.

Bersifat transparan

Bila melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan juga oleh bagian

program yang menggunakan modul tersebut.

Menghindari efek diluar perencanaan

Modul yang terencapsulasi dengan baik hanya akan berinteraksi dengan bagian program lainnya melalui

variable-variabel input/output yang telah didefinisikan sebelunnya. Dengan demikian, akan mereduksi

kemungkinan adanya hasil imbas pemrosesan yang di luar perencanaan semula.

Melindungi listing program

Saat program didistribusikan pada khalayak, untuk melindungi listing program. Anda dapat menerapkan

prinsip enkapsulasi. Di sini pengguna hanya dapat menggunakan program melalui variable input atau

output yang didefinisikan tanpa disertai bagimana proses yang terjadi di dalam modul tersebut.

Accessor Methods

Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat

mengakses data kapansaja. Untukitu, kitadeklarasikan atribut dari class sebagai private. Namun,

adakalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita

gunakan accessor methods. Accessor Methods digunakan untuk membaca nilai variable pada class, baik

berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get.

Method ini juga mempunyai sebuah return value. Contoh penggunaan accessor method adalah

getAverage,

public class Studentrecord

{

private string name;

..

..

public double getAverage()

{

double result = 0;

result=(mathGrade+englishGrade+scienceGrade)/3;

return result;

}

}

Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai return value

dengan nama result.

Mutator Method

Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan

adalah membuat method yang dapat member atau mengubah nilai variable dalam class, baik itu berupa

instance maupun static. Method semacam ini disebut dengan mutator methods. Sebuah mutator

method umumnya tertulis set. Salah satu dari implementasi mutator method :

public class StrudentRecord

{

private string name;

..

..

public void setNama (String temp)

{

nama = temp;

}

}

Dimana, public – Menjelaskan bahwa method ini dapat dipanggil object luar class void – Method ini

tidak menghasilkan return value setName – Namadari method (String temp) – Parameter yang akan

digunakan pada method Pernyataan berikut : name = temp; mengidentifikasi nilai dari temp sama

dengan name dan mengubah data pada instance variable name. Perlu diingat bahwa mutator methods

tidak menghasilkan return value. Namun berisi beberapa argument dari program yang akan digunakan

oleh method.

Overloading

Overloading adalah method dengan nama yang sama dengan method lain pada

suatu class tetapi dengan parameter yang berbeda. Tujuan dibuatnya overloading yaitu memudahkan

penggunaan method dengan fungsi yang hampir sama.

Berikut Contoh dari Overloading pada java.

class Pertambahan{

public void tambah1(){

int a=5, b=10;

System.out.println("Hasil Pertambahann dari method tambah1 ke-1 = "+(a+b));

}

//Method tambah1 di overloading dengan 2 parameter (int x, int y)

public void tambah1(int x, int y){

System.out.println("Hasil Pertambahann dari method tambah1 ke-2 = "+(x+y));

}

public static void main(String [] args){

Pertambahan pp;

pp = new Pertambahan();

pp.tambah1();//memanggil method tambah1 ke-1

pp.tambah1(5,5);//memanggil method tambah1 ke-2

}

}

Dari contoh di atas, method tambah1 pada class Pertambahan dioverloading, sehingga ada perbedaan

parameter antara method tambah1() dengan mehtod tambah1(int x, int y).

Output program overloading:

Overriding

Overriding adalah method subclass sama dengan method super class, parameternya sama tetapi pernyataan atau implementasinya berbeda. Berikut contoh dari Overriding pada java dengan nama super class nya adalah Nama dan sub class nya adalah Siapa.

class Nama{

public void Sapa(){

System.out.println("Achmad Cahya Aditya");

}

public static void main(String [] args){

Siapa ss;

Nama nn;

ss = new Siapa();

nn = new Nama();

ss.Sapa();//memanggil method Sapa() pada class Siapa

nn.Sapa();//memanggil method Sapa() pada class Nama

}

}

class Siapa extends Nama{

//Method Sapa() pada class Nama di override

public void Sapa(){

System.out.println("Yesica Dwi Lestari");

}

} Pada program di atas terlihat bahwa method Sapa() pada super class(class Nama) di override di sub class(class Siapa) . Parameter pada kedua class tersebut sama yaitu tidak mempunyai paramater alias kosong, tetapi perbedaannya adalah implementasinya yaitu mencetak kalimat yang berbeda. Output program overriding:

Keyword this

Keyword this adalah objek yang langsung digunakan tanpa didahului proses instansiasi.

Penggunaan keyword ini yaitu bila ada attribute (non static) dari suatu kelas akan digunakan method

yang berada dalam kelas yang sama, namun nama attribute tersebut dan nama parameter yang

dilewatkan pada method tersebut SAMA.

Keyword ini dapat digunakan secara implicit maupun eksplisit.

Contoh penggunaan yang eksplisit :

1 2 3 4 5 6 7 8 9 10 11 12 13

class RectangleToy { private double width, height; public void setRectangle(double width, double height) { this.width = width; this.height = height; } }

Pemanggilan attribute yang eksplisit, biasa digunakan untuk mengatasi panamaan yang sama. Pada

contoh ini parameter di method setRectangle() menggunakan nama yang sama dengan attribute di kelas

RectangleToy.

Contoh pemanggilan implisit :

1 2 3 4 5 6 7 8 9 10 11 12 13

class RectangleToy { private double width, height; public void setRectangle(double new width, double new height) { width = new width; height = new height; } }

Modifier

Penggunaan modifier berfungsi untuk melakukan enkapsulasi (membungkus data) pada objeck.

Dengan menggunakan modifier kita dapat menentukan siapa saja yang boleh menggunakan atau

mengakses member dari suatu objek.

Ada empat macam modifier yang dikenal oleh Java, yaitu private, protected, public dan tanpa modifier.

Class Modifier

Bentuk penggunaan modifier pada class:

modifier class NamaClass{

}

Modifier Keterangan

(default) Class visible atau dapat digunakan hanya pada package yang sama

Public Class visible terhadap semua package yang berbeda – beda

Contoh penggunaan:

public class Manusia{

....

.... }

Method Modifier

Bentuk penggunaan method modifier:

modifier tipe-data namaMethod(parameter){

}

Berikut ini adalah daftar modifier yang dapat digunakan pada method.

Modifier Keterangan

(default) Method visible atau dapat digunakan hanya pada package yang sama

public Method visible pada semua package

private Method visible hanya di dalam class itu sendiri

protected Method visible didalam package dan sub classnya

Contoh penggunaan:

public class Manusia{

private String nama;

private String jenkel;

public void setNama(String nama){

this.nama=nama;

}

public void setJenkel(String jenkel){

this.jenkel=jenkel;

}

public void cetak(){

System.out.println("Nama : "+nama);

System.out.println("Jenis Kelamin : "+jenkel);

}

}

public class DemoManusia{

public static void main(String args[]){

Manusia m = new Manusia();

m.setNama("Hendro");

m.setJenkel("Laki-laki");

m.cetak();

}

Variable dan Method static

Bila variable atau method diberi modifier static, maka variable atau method tersebut menjadi milik kelas. Pengertian menjadi milik kelas adalah, kita dapat mengakses atau menggunakannya tanpa proses instansiasi object dari kelas tersebut (yang kita butuhkan hanya kelas tersebut dapat diakses).

Contoh :

Program 1

public class MyStatic1 { public static void main(String[] args) { System.out.println(A.variableStatic); A.methodStatic(); } } class A { static String variableStatic = "Hallo, aku " + "adalah A.variableStatic"; static void methodStatic() { System.out.println("Hallo, aku adalah " + "A.methodStatic()"); } }

Program di atas akan menghasilkan : Hallo, aku adalah A.variableStatic Hallo, aku adalah A.methodStatic()

Semua instance akan berbagi method atau variable static, dengan kata lain, hanya akan ada 1 salinan method atau variable static untuk berapapun jumlah instance yang ada

Contoh:

Program 2

public class MyStatic2 { public static void main(String[] args) { A a1 = new A(); A a2 = new A(); A a3 = new A(); System.out.println("==========BEFORE"); System.out.println("a1.staticVariable = " + a1.staticVariable); System.out.println("a2.staticVariable = " + a2.staticVariable); System.out.println("a3.staticVariable = " + a3.staticVariable); A.methodStatic(); System.out.println("==========AFTER"); System.out.println("a1.staticVariable = " + a1.staticVariable); System.out.println("a2.staticVariable = " + a2.staticVariable); System.out.println("a3.staticVariable = " + a3.staticVariable); } } class A { static int staticVariable = 0; static void methodStatic() { staticVariable += 99; } }

Program di atas akan menghasilkan : ==========BEFORE a1.staticVariable = 0 a2.staticVariable = 0 a3.staticVariable = 0 ==========AFTER a1.staticVariable = 99 a2.staticVariable = 99

a3.staticVariable = 99

Nilai dafault dari static variable adalah sama seperti nilai default dari non-static variable (instance variable):

Contoh:

Program 3

public class MyStatic3 { public static void main(String[] args) { System.out.println("Nilai default variable " + "static bertipe byte = " + A.staticByteVar); System.out.println("Nilai default variable " + "static bertipe short = " + A.staticShortVar); System.out.println("Nilai default variable " + "static bertipe int = " + A.staticIntVar); System.out.println("Nilai default variable " + "static bertipe long = " + A.staticLongVar); System.out.println("Nilai default variable " + "static bertipe float = " + A.staticFloatVar); System.out.println("Nilai default variable " + "static bertipe double = " + A.staticDoubleVar); System.out.println("Nilai default variable " + "static bertipe boolean = " + A.staticBooleanVar); System.out.println("Nilai default variable " + "static bertipe Class = " + A.staticReferenceVar); } } class A { static byte staticByteVar; static short staticShortVar; static int staticIntVar; static long staticLongVar; static float staticFloatVar; static double staticDoubleVar; static boolean staticBooleanVar; static Object staticReferenceVar; }

Program di atas akan menghasilkan : Nilai default variable static bertipe byte = 0 Nilai default variable static bertipe short = 0 Nilai default variable static bertipe int = 0 Nilai default variable static bertipe long = 0

Nilai default variable static bertipe float = 0.0 Nilai default variable static bertipe double = 0.0 Nilai default variable static bertipe boolean = false Nilai default variable static bertipe Class = null

Daftar Pustaka

http://top-ilmu.blogspot.com/2012/12/overloading-dan-overriding-pada-java.html

http://terusbelajar.wordpress.com/2009/07/19/menggunakan-keyword-static-di-java/

http://catatan.desdrianton.net/scjp/content/STATIC.htm

http://maniakjava.wordpress.com/2011/07/04/fungsi-keyword-static-di-java/

JAVA revisi keempat. Dr Bambang Hariyanto