TUGAS KELOMPOK
Pemrograman Berbasis Objek (PBO)
Encapsulation, Inheritance, Polymorphisme, PBO advanced in
java programming
Disusun oleh :
Muhammad Ansori (2015420064)
Achmad Nur Cholis (2015420091)
DR. SOETOMO UNIVERSITY
Jl. Semolowaru No. 84, Sukolilo, Surabaya, Jawa Timur
2016
KATA PENGANTAR
Puji Syukur khadirat Allah Yang Maha Kuasa karena atas
Rahmat dan Hidayah-Nyalah kami dapat menyelesaikan Tugas ini.
Makalah ini merupkan salah satu bagian dalam Tugas kami yang
berjudul Encapsulation, Inheritance, Polymorphisme, PBO
advanced in java programming. Terima kasih juga kepada
Bapak .................. selaku dosen Mata Kuliah PBO di kelas kami.
Makalah
ini
berisi
tentang
Pembelajaran
mengenai
Encapsulation, Inheritance, Polymorphisme, PBO advanced di dalam
pemrograman java. Tentunya kami sangat berharap Makalah ini
dapat berguna bagi siapapun yang membacanya.
Masih banyak kekurangan dalam makalah ini .Selain itu dalam
penyusunan tugas atau materi ini, tidak sedikit hambatan yang
penulis hadapi. Namun penulis menyadari bahwa kelancaran dalam
penyusunan materi ini tidak lain berkat bantuan, dorongan dan
bimbingan teman-teman, sehingga kendala-kendala yang penulis
hadapi teratasi.
Surabaya, 21 Desember
2016
Tim Penyusun
BAB 1
ENKAPSULASI DAN CONSTRUCTOR
1.1
Pengertian Enkapsulasi
Dalam sebuah objek yang mengandung variabel-variabel dan
method-method, dapat ditentukan hak akses pada sebuah variabel
atau method dari objek. Pembungkusan variabel dan method dalam
sebuah objek dalam bagian yang terlindungi inilah yang disebut
dengan enkapsulasi. Jadi, Enkapsulasi dapat diartikan sebagai
bungkusan pelindung program dan data yang sedang diolah.
Pembungkus ini mendefinisikan perilaku dan melindungi program
dan data yang sedang diolah agar tidak diakses sembarangan oleh
program lain.
Dua hal mendasar pada Enkapsulasi.
1. Information hiding:
Pemberian akses kontrol private ketika mendeklarasikan
atribut atau method, sehingga informasi dari suatu class
sehingga anggota class tersebut tidak dapat diakses dari luar.
2. Interface to access data:
Menyediakan perantara berupa method untuk pengaksesan
data, yakni method getters dan setters.
Contoh :
1.2
Tujuan
a. Agar program terhindar dari ketergantungan terhadap perubahan
yang menyebabkan akibat berurutan/beruntun yang besar
b. Pengkapsulan meredam perubahan menjadi ke hanya objek
tersebut atau sekelompok kecil objek yang memang terkait erat.
1.3
Manfaat
1.3.1.Modularitas
Source code dari sebuah class dapat dikelola secara
independen dari source code class yang lain. Perubahan
internal pada sebuah class tidak akan berpengaruh bagi class
yang menggunakannya.
1.3.2.Information Hiding
Memungkinkan objek menyembunyikan informasi yang
tidak perlu diketahui objek lain.
Manfaat utama teknik enkapsulasi
adalah kita mampu
memodifikasi kode tanpa merusak kode yang telah digunakan pada
class lain.
1.4
Visibility Modifier
Merupakan modifier yang memberikan batasan kemampuan
variabel atau method untuk diakses. Beberapa visibility modifier :
2.2.1. Modifier Public
Modifier
Public
adalah
modifier
yang
memberi
kemampuan tak terbatas bagi variabel atau method untuk
diakses. Artinya, variabel atau method yang menggunakan
modifier public akan dapat diakses dari mana saja, baik dari
kelas sendiri, maupun dari kelas lain.
Setiap atribut atau method dengan akses modifier public
maka dapat diakses oleh objek lain dan tidak ada batasan.
2.2.2. Modifier Protected
Modifier Protected memberikan kemampuan pada variabel
atau method agar dapat di akses semua kelas dalam satu
package.
Atribut
atau
method
dengan
akses
modifier
protected tidak dapat di akses oleh kelas lain di luar package
(kecuali kelas turunan).
2.2.3. Modifier default
Atribut
atau
method
dengan
akses
modifier
default
memberikan akses kepada kelas lain dalam package yang
sama.
Tidak ada keyword khusus untuk mendeklarasikan
modifier default access. Sehingga ketika atribut atau method
didefinisikan tanpa akses modifier maka sebenarnya akses
modifiernya adalah default
2.2.4. Modifier Private
Merupakan modifier yang membatasi aksebilitas variabel
atau method, sehingga hanya dapat diakses dari kelas yang
sama, maka atribut atau method dengan akses modifier ini
hanya diakses oleh kelas itu sendiri.
1.5
Constructor
Constractor
adalah
method
yang
secara
otomatis
dipanggil/dijalankan pada saat sebuah class diinstansi. Jika dalam
sebuah class tidak terdapat constructor maka secara otomatis java
akan membuatkan secara default constractor.
Ciri-ciri method constructor :
Nama method constructor harus sama dengan nama class
Tidak mengembalikan suatu nilai (tidak ada keyword
return)
Satu class dapat memiliki lebih dari satu constructor
(overloading constructor )
Pendeklarasian dapat ditambahkan modifier public, private,
protected, maupun default.
Suatu constructorbisa dipanggil oleh constructorlain dalam
satu class
Constroctor biasanya digunakan untuk memberi nilai awal dari
atribut-atribut class tersebut.
1.6
Multiple Constructor
Java tidak membatasi jumlah constructor dalam satu class,
sehingga memungkinkan sebuah class memiliki lebih dari satu
constructor untuk sebuah class. Yang membedakan antara satu
construcror dengan constructor lainnya adalah pada parameternya
(nama constructor sama).
Contoh :
1.7
Function Overloading
Overloading adalah diperbolehkannya dalam sebuah class
memiliki lebih dari satu function yang serupa (nama functionnya
sama) tetapi deklarasi- deklarasi parameternya berbeda.
Contoh :
Public class Latihan {
private Login login1;
public static void main (String[]args) {
setLogin(admin,123);
Login login2 = new Login();
setLogin(login2);
}
Public static setLogin(String n, String p) {
Login1 = new Login(n,p);
}
public static setLogin(Login log) {
log.setNamA(rahasia);
log.setPassword = 321;
}
}
BAB 2
INHERITANCE (PEWARISAN)
2.1
Inheritance (Pewarisan)
Pewarisan atau inheritance pada pemrograman berorientasi
obnek merupakan suatu hubungan dua buah kelas atau lebih di
mana ada kelas yang memiliki atribut dan metode yang sama
dengankelas lainnya beserta atribut dan metode tambahan yang
merupakan sifat khusu kelas yang menjadi turunannya. Kelas yang
merupakan kelas turunan biasa di sebut subclass
dan kelas yang
menjadi dasar penurunan disebut superclass. Biasanya kelas anak
adalah kelas dengan jenis yang lebih khusus dari kelas orang tua,
misal akan dibuat kelas manusia dan karyawan maka manusia akan
menjadi superclass karena bagaimanapun seorang karyawan adalah
manusia.
2.2
Manfaat
2.5.1. Ekstensi dan batasan
Subclass boleh melakukan penimpaan fitur di superclass
dengan mendefinisikan fitur dengan nama yang sama.
Subclass boleh menambah fitur baru sebagai perluasan,
disebut ekstensi, dan subclass boleh memberikan batasan
atribut, disebut pembatasan
2.5.2. Redefinisi Operasi
Penimpaan operasi
Penimpaan operasi
Penimpaan operasi
Penimpaan operasi
2.3
Keuntungan Inheritance
sebagai
sebagai
sebagai
sebagai
perluasan
batasan
optimasi
kenyamanan
2.3.1. Reusability
Subclass menyediakan variabel/method yang spesifik yang
membedakannya
dengan
superclass,
hal
ini
akan
memungkinkan programer java untuk menggunakan ulang
source code dari superclas yang telah ada.
Ketika method dideklarasikan dalam superclass, method
tersebut otomatis diwariskan ke seluruh subclass, jadi Anda
dapat mengkode method hanya sekali dan method tersebut
dapat digunakan oleh seluruh subclass.
Programer java dapat mendefinisikan superclass khusus
yang bersifat generik, yang disebut abstract class, untuk
mendefenisikan class dengan method dan variabel secara
umum.
Sebuah
subclass
hanya
perlu
mengimplementasikan
perbedaan antara dirinya sndiri dan parentnya
Untuk menjadikan sebuah class menjadi subclass dari objek
lain dalam java maka dapat menggunakan keyword extends
namaSubclass extends namaSuperclass {
.......//deklarasi isi class: atribut, method, constructor
}
2.4
Keyword super
Kata kunci super dapat digunakan oleh subclass baik untuk
memanggil construktor, maupun method yang ada pada superclass.
Bentuk umum pemanggilannya adalah sebagai berikut :
Super (daftar_parameter);
Kata kunci super juga dapat digunakan untuk mengakses
anggota kelas (atribut data maupun method) yang terdapat pada
superclass. Bentuk umum pemanggilannya adalah sebagai berikut :
Super.namaMethod(parameter)
Beberapa hal perlu diingat dalam pemanggilan construktor
dengan super.
Pemanggilan super() harus dijalankan sesuai statement
pertama dalam sebuah construktor.
Pemanggilan super() hanya dapat digunakan didalam
definisi construktor.
Hal ini menjelaskan
bahwa
pemanggilan
tidak
super()
construktor
dapat
this()
dijalankan
dan
secara
bersamaan didalam construktor yang sama.
2.5
Istilah-istilah dalam inheritance
Di dalam inheritance terdapat istilah-istilah yang dianggap
perlu untuk diperhatikan secara seksama diantaranya.
Extends, Keyword ini harus kita tambahkan pada definisi
class yang menjadi subclass.
Superclass, digunakan untuk menunjukkan hirarki class
yang berarti class dasar dari subclass/class anak.
Subclass, adalah class anak atau turunan secara hirarki dari
superclass
Super, Keyword ini digunakan untuk memanggil constructor
dari superclass atau menjadi variabel yang mengacu pada
superclass
Methode overriding, Pendefinisian ulang method yang sama
pada subclass.
Dalam
inheritance,
methode
overriding
berbeda
dengan
method overloading. Kalau method overriding adalah mendefinisikan
kembali method yang sama, baik nama method maupun signature
atau parameter yang diperlukan dalam subclass, kalau method
overloading adalah mendefinisikan method yang memiliki nama
yang sama, tetai dengan signature yang berbeda dalam definisi
class yang sama.
2.6
Prinsip inheritance
Atribut maupun
method pada superclass (kelas yang
mewariskan) dapat diakses oleh subclass (kelas yang
mendapat warisan), namun tidak sebaliknya.
Menggunakan keyword extends untuk mengubah suatu
class menjadi subclass dari objek lain.
Menggunakan keyword super() untuk memanggil secara
ekspilit construktor kelas diatasnya.
2.7
Multilevel Inheritance
Pada
bahasa
pemrograman
java
diperkenankan
adanya
multilevel inheritance. Konsep tersebut mengijinkan suatu subclass
mempunyai subclass lagi.
Contoh :
public class classA {
String atributA = atribut A;
public void methodA() {
System.out.println(Method dari class A);
}
}
public class classB extends classA {
string atributB = atribut B;
public void method() {
System.out.println(Method dari class B);
Subclass
kelas A
}
}
Public class classC extends classB {
String atributC = atribut C;
Public void methodC() {
System.out.println(Method dari class C);
Subclass
Kelas B
}
Public static void main(String[] args) {
Class obj = new classC();
Obj.methodA();
Obj.methodB();
Obj.methodC();}}
Terlihat bahwa pada contoh source code diatas bahwa classB
mewarisi atribut dan method dari classA, sedangkan classC mewarisi
atribut dan method dari classB dan classA. Dengan demikian dapat
diartikan bahwa classB merupakan perluasan dari classA, sedangkan
classC merupakan perluasan dari classB dan classA.
2.8
Keyword final
Kelas yang dideklarasikan sebagai kelas final tidak akan dapat
diturunkan lagi menjadi kelas baru, jadi kelas tersebut menjadi kelas
terakhir dari struktur hirarki yang dibentuk.
public class classA {
String atributA = atribut A;
public void methodA() {
System.out.println(Method dari class A);
}
}
public class classB extends classA {
string atributB = atribut B;
public void method() {
System.out.println(Method dari class B);
}
}
Public final class classC extends classB {
String atributC = atribut C;
Public void methodC() {
System.out.println(Method dari class C);
}
Public static void main(String[] args) {
Class obj = new classC();
Obj.methodA();
Obj.methodB();
Obj.methodC();
}
}
Pada source code diatas, terlihat bahwa classC diberikan kata
kunci final. Artinya bahwa classC akan menjadi hirarki yang terakhir
pada struktur pewarisan tersebut. Ketika ada class baru yang ingin
mewarisi classC seperti potongan kode berikut :
Public class classD extends classC {
}
Maka, soure code diatas akan menghasilkan error cannot inherit
from classC, artinya tidak dapat mewariskan dari class C. Hal itu
disebabkan karena classD berusaha mewarisi sifat classC yang
sudah diberi kata kunci final.
BAB 3
POLYMORPHISME
3.1
Polymorphisme
Kata polimorfisme yang berarti satu objek dengan banyak
bentuk yang berbeda, adalah konsep sederhana dalam bahasa
pemrograman berorientasi objek (PBO) yang berarti kemampuan
dari suatu variabel referensi objek untuk memiliki aksi berbeda bila
method yang sama dipanggil, dimana aksi method tergantung dari
tipe objeknya. Kondisi yang harus dipenuhi supaya polimorfisme
dapat diimplementasikan adalah :
Method yang dipanggil harus melalui variabel dari basis class
atau superclass
Method yang dipanggil harus juga menjadi method dari basis
class.
Signatur method harus sama baik pada superclass maupun
subclass
Method access attribut pada subclass tidak boleh lebih
terbatas dari basis class.
3.2
Overriding method
Overriding
memodifikasi
method
method
adalah
dari
kemampuan
superclass-nya,
subclass
yaitu
dengan
untuk
cara
menumpuk (mendefinisikan kembali) method dari superclass. Tujuan
dari overriding yaitu supaya subclass memiliki tingkah laku yang
lebih spesifik. Deklarasi method pada subclass harus sama dengan
yang terdapat di superclass, yaitu kesamaan pada nama, return
type, dan daftar parameter (jumlah, tipe, dan urutan). Method yang
terkena override diharuskan tidak boleh mempunyai modifier yang
lebih luas aksesnya dari method yang meng-override (overriding
method).
Kata kunci final dapat digunakan untuk mencegah suatu
method agar tidak dapat dioverride oleh kelas turunannya.
Contoh
Public class Animal {
Public void SetVoice(){
System.out.println(Blesepblesep);
}
}
Public class Dog extends Animal {
Public void SetVoice(){
System.out.println(Hug Hug);
}
}
3.3
Overloading Method
Overloading Method adalah suatu keadaan dimana beberapa
method sekaligus dapat mempunyai nama yang sama dengan isi
dan parameter yang berbeda didalam sebuah kelas. Overloading
method dapat terjadi baik pada class yang sama, maupun pada
hubungan superclass dan subclass. Ciri-ciri overloading adalah :
1. Nama method harus sama.
2. Daftar tipe, dan/atau jumlah parameter harus berbeda.
3. Tipe kembalian (return type) bisa berbeda, bisa sama.
Contoh
class buku {
private string judul;
private int tahun:
pribate string pengarang:
buku (){}
buku (string judul, int tahun,steing pengarang){
this.judul = judul; this.tahun = tahun;
this.pengarang = pengarang;}
public void setbuku (string judul){
this.judul = judul; }
public void setbuku (string judul, int tahun){
this.judul = judul; this.tahun = tahun;}
public void setbuku (string judul, int tahun, string
pengarang) {
this.judul = judul; this.tahun = tahun;
this.pengarang = pengarang;}
Ketiga method diatas memiliki nama dan return type yang
sama, hanya saja berbeda parameter-nya.
BAB 4
ADVANCED CLASS FEATURES
Daftar pustaka :
Harianto, Bambang. Esensi-esensi Bahasa Pemrograman Java.
Informatika Bandung, 2003.
Hermawan, Benny. Menguasai Java 2 dan Objek Oriented
Programing. Penerbit Andi, 2004.
Modul praktikum Program Berorientasi Objek semester 3.
Supardi, Yuniar. Semua Bisa Menjadi Programmer Java Basic
Programming. Penerbit PT Elex Media Komputindo, 2010.