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 sewaktuwaktu, 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