Anda di halaman 1dari 44

A.

Peta Konsep Pemrograman Berorientasi Objek

Gambar 1 Peta Konsep Pemrograman Berorientasi Objek Class XI

1
BAB V ENKAPSUL ASI DAT A D AN I NFOR MASI

ENKAPSULASI DATA DAN INFORMASI

A. Tujuan Pembelajaran
Setelah mengikuti kegiatan pembelajaran ini peserta didik diharapkan dapat :
 Menerapkan proses perlindungan data member atau atribut melalui modifier private
untuk mempermudah merawat class
 Melakukan praktikum membuat kode program dengan konsep enkapsulasi untuk
melindungi data dan informasi

B. Uraian Materi
1. Modifier
Pengaturan properties dan class methods, kita ingin untuk mengimplementasikan
beberapa macam larangan untuk mengakses data. Sebagai contoh, jika Anda ingin
beberapa atribut hanya dapat diubah hanya dengan method tertentu, tentu Anda ingin
menyembunyikannya dari object lain pada class. Di Java, implementasi tersebut disebut
dengan access modifiers.
Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default.
Tiga tipe akses pertama tertulis secara ekplisit pada kode untukmengindikasikan tipe
akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan
keyword atas tipe.
Tabel 1 Daftar Akses Modifier Dalam Pemrograman Java

 Public
Dapat dilihat pada table diatas bahwa keyword Public dapat diakses didalam class itu

2
sendiri, dapat diakses dengan menggunakan metode extend dan instan pada paket yang
sama, serta dapat diakses dengan metode extend maupun instan dalam paket yang
berbeda. Artinya hak akses public dapat diakses oleh sembarang object manapun dan
dimanapun posisinya serta dengan apapun caranya.Data maupun method yan bersifat
public dapat diakses oleh semua bagian didalam program. Dengan kata lain, data – data
maupun method-method yang dideklarasikan dangan tingkat askses public akan dikenali
atau dapat diakses oleh semuaclass yang ada didalam, baik yang merupakan class
turunan maupun class yang tidak memiliki hubungan sama sekali. Untuk
mendeklarasikan suatu data atau method dengan tingkat akses public, gunakan kata
kunci public.
 Protected
Suatu data maupun method yang dideklarasikan dengan tingkat akses protected dapat
diakses oleh class yang memilkinya dan juga ileh class – class yang masih memiliki oleh
hubungan turunan. Sebagai contoh, apabila data x dalam class A dideklarasikan sebagai
protected, maka class B (yang merupakan turunan dari class A) diizinkan untuk
mengakses data x. Namun apabila terdapat class lain , misalnya C (yang bukan
merupakan turunan dari class A maupun B), tetap tidak dapat mengakses data – data
yang dideklarasikan dengan tingkat akses protected. Untuk mendeklarasikan suatu data
atau method dengan tingkat akses protected, gunakan kata kunci ptotected.
 Private
Dengan mendeklarasikan data dan method menggunakan tingkat akses private, maka
data dan method tersebut hanya dapat diakses oleh class yang memiliinya saja. Ini
berarti data dan method tersebut tidak boleh diakses atau digunakan oleh class class
lain yang terdapat didalam program. Untuk mendeklarasikan suatau data atau method
dengan tingkat akses private, gunakan kata kunci private.
 Default
Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class yang ada dalam
satu paket, atau istilahnya hak akses yang berlaku untuk satu folder saja(tidak berlaku
untuk class yang tidak satu folder/package)

3
2. Konsep Enkapsulasi
Konsep Enkapsulasi dalam pemrograman adalah pengkombinasian/pembungkusan antara
data dan prosedur ataupun fungsi (method) yang memanipulasinya ke dalam sebuah object
pada bagian yang terlindungi sehingga data-datanya tidak mudah diakses langsung dari
luar. Manfaat dari enkapsulasi ialah kode sumber dari sebuah object dapat dikelola secara
independen dari kode object yang lain. Selain itu, dengan enkapsulasi kita bisa
menyembunyikan informasi-informasi yang tidak perlu diketahui oleh object lain.
Enkapsulasi merupakan salah satu karakteristik utama dalam konsep OOP.
Konsep ini menentukan tingkat aksesibilitas dari masing-masing data dan method serta
menyembunyikan detail implementasi dari luar yang dikenal dengan Information Hiding.
Ada beberapa keuntungan menerapkan prinsip enkapsulasi, yaitu:
 Memiliki sifat bebas, sehingga dapat digunakan pada bagian manapun dari program
tidak terkait pada bagian tertentu program.
 Memiliki sifat transparan, bila melakukan modifikasi maka perubahan akan dirasakan
oleh bagian program yang menggunakan modul tersebut.
 Menghindari efek diluar perencanaan, dengan demikian akan mereduksi kemungkinan
adanya hasil imbas pemrosesan yang di luar perencanaan semula.
Dua hal yang mendasar dalam enkapsulasi yakni :
 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.
 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.

4
Kita dapat menyembunyikan information dari suatu class sehingga anggota-anggota class
tersebut tidak dapat diakses dari luar. Adapun caranya adalah cukup dengan memberikan
akses control private ketika mendeklarasikan suatu atribut atau method.

3. Metode Overloading
Overloading adalah suatu keadaan dimana beberapa method sekaligus dapat mempunyai
nama yang sama, akan tetapi mempunyai fungsionalitas yang berbeda. Overloading ini
dapat terjadi pada class yang sama atau pada suatu parent class dan subclass-nya.
Overloading mempunyai ciri-ciri sebagai berikut:
 Nama method harus sama
 Daftar parameter harus berbeda
 Return type boleh sama, juga boleh berbeda
Metode overloading ini, terjadi pada objek yang sama, tapi nilai argumennya berbeda-beda.
Ketika metode overloaded dipanggil, Java mencari kesamaan antara argumen yang
digunakan untuk memanggil metode dan parameter dari metode. Tetapi, kesamaan ini tidak
mutlak. Hal ini karena pada java adanya otomatisasi konversi tipe yang berbeda.
Information dari suatu class dapat disembunyikan sehingga anggota-anggota class
tersebut tidak dapat diakses dari luar. Adapun caranya adalah cukup dengan
memberikan akses kontrol private ketika mendeklarasikan suatu atribut atau method.
Contoh akses kontrol data member nis dengan tipe data int,
private int nis;

Berikut cara melindungi data member dan cara mengaksesnya melalui sebuah metode
yang ber-modifier public.
public class Siswa
{
private int nrp;
public void setNis(int n){
nis=n;
}
}

a. Overloading Contructor

5
Overloading selain diterapkan pada metode juga diterapkan pada constuctor. Bedanya
overloading constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda,
sehingga metode bisa lebih dari satu.Konstruktor (konstruktor) adalah suatu method yang
pertama kali dijalankan pada saat pembuatan suatu obyek. Konstruktor mempunyai ciri
yaitu:
 Mempunyai nama yang sama dengan nama class
 Tidak mempunyai return type (seperti void, int, double, dan lain-lain)
Suatu class dapat mempunyai lebih dari 1 konstruktor dengan syarat daftar
parameternya tidak boleh ada yang sama, perhatikan kode program di bawah ini :
public class Siswa {
private int nrp;
private String nama;
public Siswa(String m) {
nrp = 0;
nama = m;
}
public Siswa(int n, String m) {
nrp = n;
nama = m;
}
}

Contoh penggunaan constructor overloading dari class Gambar dengan parameter yang
berbeda dapat dilihat dalam Tabel 15.
Tabel 2 Daftar Metode Overlodimg

Metode Keterangan
Gambar(int t1) 1 parameter titik,untuk menggambar
titik
Gambar(int t1, int t2) 2 parameter titik,untuk menggambar
garis
Gambar(int t1, int t2, int 3 parameter titik,untuk menggambar
t3) segitiga
Gambar(int t1, int t2, int 4 parameter titik,untuk menggambar
t3, int t4) segiempat

6
C. Praktikum
IDE Netbeans 8.2 digunakan untuk menulis kode program Java dan easyUML digunakan
untuk menggambar class diagram. Langkah pertama membuat project baru dengan cara:
File → New Project → Project Name: Bab5
Klik Kanan → Bab5 → New → Java Class

Latihan 1 CONSTRUCTOR OVERLOADING


Deskripsi Constructor dapat di-overload (beberapa
constructor dapat mempunyai nama sama namun
dengan parameter yang berbeda), sehingga
memudahkan untuk menciptakan objek-objek
dengan nilai-nilai inisial yang berbeda
Class Diagram dan Objek Diagram

Nama File User.java


1 public class User {
2 private String nama;
3 private String pasword;
4 private int level;
5 public User() {
6 nama = "Ahmad";
7 pasword = "amd123";
8 level = 3;
9 }
10 public User(String n, String p) {
11 this.nama = n;

7
12 this.pasword= p;
13 level = 2;
14 }
15 public User(String n, String p, int lv) {
16 this.nama = n;
17 this.pasword= p;
18 this.level = lv;
19 }
20 public String getNama() {
21 return this.nama;
22 }
23 public String getPasword() {
24 return this.pasword;
25 }
26 public int getLevel() {
27 return this.level;
28 }
29 public String getHakAkses(){
30 if( getLevel() == 1){
31 return "SUPER ADMIN";
32 }
33 else if (getLevel() == 2){
34 return "ADMIN";
35 }
36 else{
37 return "USER BIASA";
38 }
39 }
40 public void infoUser() {
41 System.out.println("User id : "+this.nama);
42 System.out.println("Pasword : "+this.pasword);
43 System.out.printf("Level %s dan Hak Akses%s...\n\n"
,this.level,this.getHakAkses());
44 }
45 }
Nama File UjiUser.java
1 public class UjiUser {
2 public static void main(String[] args) {
3 User ahmad = new User();
4 User eljava = new User("Ejava", "elj1234");
5 User hisyam = new User("Hisyam", "hym1234", 1);
6 ahmad.infoUser();;

8
7 eljava.infoUser();
8 hisyam.infoUser();
9 }
10 }
Analisa Program
Program memuat dua class.Yang pertama, classa UjiUser sebagai class utama. Satu-
satunya tujuan class ini adalah untuk menguji class User. Ketika program ini dijalankan
system runtime JAVA akan memanggil metode main() dalam class UjiUser. Class utama
memuat metode main (baris 2) yang mencipatakan tiga objek. Sama seperti
menciptakan suatu array, operator new digunakan untuk menciptakan suatu objek
ahmad dengan menseting instan variabel nama=Ahmad, pasword=amd1234, dan
level=3 (baris 6,7,8), new User(“Eljava”,”elj1234”) menciptakan objek eljava dan
level = 2 (baris 11,12,13), dan objek hisyam menseting dengan new
User(“Eljava”,”elj1234”,1). Ketiga objek memiliki data yang berbeda tetapi metode
yang sama. Oleh karena itu class UjiUser melalui ketiga objek dapat menggunakan
metode infoUser() baris (6,7,8) pada class UjiUser. Dalam metode infoUser () pada
class User sekaligus mengakses metode getHakAkses() pada baris ke-43 yang menyeleksi
data user berdasarkan level, jika level=1 maka hak aksesnya “SUPER ADMIN” , jika
level=2 maka hak aksesnya “ADMIN”, dan jika level=3 hak aksesnya adalah “USER
BIASA”.

Keluaran Program RUN > UjiUser.java


User id : Ahmad
Pasword : amd123
Level 3 dan Hak Akses USER BIASA...

User id : Ejava
Pasword : elj1234
Level 2 dan Hak Akses ADMIN...

User id : Hisyam
Pasword : hym1234
Level 1 dan Hak Akses SUPER ADMIN...

Latihan 2 RELASI CLASS DANA KOMUNIKASI OBJEK


Deskripsi Program ini menunjukkan cara komunikasi antara
objek dan melakukan seleksi data antara dua
objek.

9
Class Diagram

Nama File Mobil.java


1 import java.util.Scanner;
2 public class Mobil {
3 public int noPlat;
4 public String warna;
5 public String manufaktur;
6 public int tahun;
7 Scanner inp = new Scanner(System.in);
8 int n;
9 Mobil[] mbl;
10 Pelanggan pl = new Pelanggan("Eljava", 12345);
11 public void inputDataMobil() {
12 System.out.print("Masukan Jumlah Mobil : ");
13 n = inp.nextInt();
14 mbl = new Mobil[n];
15 for (int i = 0; i < mbl.length; i++) {
16 mbl[i] = new Mobil();
17 System.out.println("----Data mobil ke-" + (i + 1)
+ "-----");
18 System.out.print("Nomor Plat\t:");
19 mbl[i].noPlat = inp.nextInt();
20 System.out.print("Warna\t\t:");
21 mbl[i].warna = inp.next();
22 System.out.print("Manufaktur\t:");
23 mbl[i].manufaktur = inp.next();

10
24 System.out.print("Tahun\t\t:");
25 mbl[i].tahun = inp.nextInt();
26 System.out.println("--------------------------");
27 }
28 }
29 public void infoMobil() {
30 for (int i = 0; i < n; i++) {
31 System.out.printf("%s\t\t%s\t%s\t\t%s\n",
32 mbl[i].noPlat, mbl[i].warna,
33 mbl[i].manufaktur, mbl[i].tahun);
34 }
35 }
36 public void cekMobil() {
37 for (int i = 0; i < n; i++) {
38 if (mbl[i].noPlat == pl.getKode()) {
39 pl.infoPelanggan();
40 System.out.printf("adalah pemilik Mobil %s
Warna %s\n", mbl[i].manufaktur
,mbl[i].warna);
41 }
42 }
43 }
Nama File Pelanggan.java
1 public class Pelanggan {
2 public String nama;
3 public int kode;
4 public Pelanggan(String nm , int kd){
5 this.nama = nm;
6 this.kode = kd;
7 }
8 public void infoPelanggan(){
9 System.out.printf("Nama:%s dengan Kode Pelangan :
%s\n",nama,kode);
10 }
11 }
Nama File RegistrasiMobil.java
1 public class RegistrasiMobil {
2 public static void main(String args[]) {
3 Mobil m1 = new Mobil();
4 m1.inputDataMobil();
5 System.out.println("--------DATA MOBIL------------");
6 System.out.printf("%s\t\t%s\t%s\t%s\t\n", "No.PLAT",

11
"WARNA", "PABRIKAN", "TAHUN");
7 System.out.println("------------------------------");
8 m1.infoMobil();
9 System.out.println(“------------------------------");
10 System.out.println("Proses Identifikasi....");
11 m1.cekMobil();
12 System.out.println("--------Terima Kasih----------");
13 }
14 }
Analisa Program
class Pelanggan mempunyai data atau atribut yang dideklarasikan mulai baris ke-2
sampai dengan baris ke-3. Semua atributnya mempunyai modifier private sehingga hanya
bisa diakses oleh class Pelanggan saja. Constructor Pelanggan mempunyai dua
parameter nama dan kode dan sebuah metode infoPelanggan digunakan untuk
menampilkan data nama dan kode yang dikirim melalui constructor Pelanggan().
Pada class Mobil memerlukan Class Scanner yang digunakan untuk membaca data
dari keyboard sehinggan diperlukan import java.util.Scanner.Class Mobil
mempunyai data atau atribut yang dideklarasikan mulai baris ke-2 sampai dengan baris
ke-5. Semua atributnya mempunyai modifier private sehingga hanya bisa diakses oleh
class Mobil saja. Pembuatan sebuah objek pl pada baris ke-10 Pelanggan pl = new
Pelanggan("Eljava", 12345),digunakan untuk melakukan verifikasi data pada metode
cekMobil() pada baris ke-36 sampai baris 42.
class RegistrasiMobil dimulai dari baris ke-1 sampai dengan baris ke-14, yang di
dalamnya juga terdapat metode utama yaitu public static void main(String[] args)
sehingga compilier menjalankan aplikasi atau kode program dimulai dari baris ke-3 yaitu
pembuatan sebuah objek dari class Mobil yang bernama m1. Selanjutnya melalui objek
m1, metode-metode pada class Mobil dapat diakses. Misalnya, pada baris ke-4 objek m1
memanggil metode inputDataMobil() yang memerlukan interaksi dengan pengguna
melalui keyboard. Demikian seterusnya objek m1 memanggil metode infoMobil()
kemudian memanggil metode cekMobil().Demikian seterusnya compiler akan
menterjemahkan setiap baris sampai pada baris ke-14, sehinggan menghasilkan tampilan
output seperti berikut ini.

Keluaran Program RUN > RegistrasiMobil.java

12
Masukan Jumlah Mobil : 2
------Data mobil ke-1------
Nomor Plat :12345
Warna :Abu-Abu
Manufaktur :Suzuki
Tahun :2014
---------------------------
------Data mobil ke-2------
Nomor Plat :67891
Warna :Hitam
Manufaktur :Toyota
Tahun :2017
---------------------------
------------------DATA MOBIL-------------------
No.PLAT WARNA PABRIKAN TAHUN
-----------------------------------------------
12345 Abu-Abu Suzuki 2014
67891 Hitam Toyota 2017
-----------------------------------------------
Proses Identifikasi....
Nama : Eljava dengan Kode Pelangan : 12345
adalah pemilik Mobil Suzuki Warna Abu-Abu
-----------------Terima Kasih-----------------

D. Tugas

Buatlah program Java dengan menggunakan IDE NetBeans 8.2 dengan membuat
package baru pada projek Bab5, dengan cara:
Klik Kanan → Bab5 → New → Java Package → Package Name:tugas

Tugas Projek1
Desainlah suatu class bernama KipasAngin yang memuat :

13
 Tiga konstanta bernama LAMBAT,SEDANG, dan CEPAT dengan nilai 1,2,dan 3
untuk menandai kecepatan kipas.
 Suatu atribut data privat int bernama kecepatan yang menentukan kecepatan
kipas(nilai default LAMBAT)
 Suatu atribut data privat boolean bernama hidup yang menentukan apakah kipas
hidup atau mati(nilai default false)
 Suatu bidang data privat double bernama radius yang menentukan radius kipas
(nilai default 5)
 Suatu atribut data string bernama warna yang menentukan kipas(nilai default
biru)
 Metode aksesor dan mutator untuk keempat atribut data
 Suatu konstruktor tanpa argumen untuk menciptakan suatu kipas default
 Suatu metode yang bernama keString() yang memberikan nilai balik suatu string
yang berisi deskripsi kipas. Jika kipas hidup, maka metode mengembalikan
kecepatan,warna, dan radius kipas dalam satu string. Jika kipas mati, maka
metode mengembalikan warna dan radius kipas yang digabungkan dengan string
“kipas mati”.
Buatlah suatu program uji yang menciptakan dua objek KipasAngin. Tugaskan
kecepatan maksimum, radius 10, warna kuning, dan hidupkan kipas pada objek
pertama. Tugaskan kecepatan sedang, radius 5, warna biru, dan matikan kipas pada
objek kedua. Tampilkan kedua objek dengan memanggil metode toSTring()

Class Diagram

14
Nama File KipasAngin.java, UjiKipasAngin.java

Tugas Projek2
Desainlah suatu kelas bernama Akun yang memuat
 Suatu atribut data int yang bernama id untuk merepresentasikan akun
dengan nilai default 0
 Suatu atribut data double bernama saldo dengan nilai default 0
 Suatu atribut data bernama double sukuBungaTahunan yang menyimpan
suku bunga saat ini, dengan nilai default 0. Asumsikan bahwa semua akun
memiliki suku bunga sama
 Suatu constructor tanpa argumen yang menciptakan suatu akun default
 Suatu constructor yang menciptakan suatu akun dengan id dan saldo
tertentu
 Metode aksesor dan mutator untuk untuk id, saldo, dan
sukuBungaTahunan
 Metode aksesor tanggalDiciptakan

15
 Suatu metode bernama dapatSukuBungaBulanan() yang memberikan nilai
balik suku bunga bulanan
 Suatu metode bernama tarikUang() yang menarik sejumlah uang tertentu
dari akun
Gambarkan class diagram dan implementasikan class tersebut. Tulislah suatu program
uji yang menciptakan suatu Akun dengan ID 7506, saldo Rp 100000, suku bunga tahunan
4%. Gunakan metode tarikUang() untuk menarik Rp. 50000, dan gunakan metode
tabungUang untuk menabung uang sebesar Rp 200000, kemudian tampilkan saldo,
suku bunga bulanan, tanggal akun ini diciptakan.

Gambarkan Class Diagram

Nama File Akun.java, UjiAkun.java

16
E. Rangkuman
Akses modifiers di JAVA, yaitu : public, private, protected dan default. Tiga tipe akses
pertama tertulis secara ekplisit pada kode untukmengindikasikan tipe akses, sedangkan
yang keempat yang merupakan tipe default, tidak diperlukan penulisan keyword atas tipe.
Konsep Enkapsulasi dalam pemrograman adalah pengkombinasian/pembungkusan antara
data dan prosedur ataupun fungsi (method) yang memanipulasinya ke dalam sebuah object
pada bagian yang terlindungi sehingga data-datanya tidak mudah diakses langsung dari
luar. Manfaat dari enkapsulasi ialah kode sumber dari sebuah object dapat dikelola secara
independen dari kode object yang lain.
Overloading adalah suatu keadaan dimana beberapa method sekaligus dapat mempunyai
nama yang sama, akan tetapi mempunyai fungsionalitas yang berbeda. Overloading ini
dapat terjadi pada class yang sama atau pada suatu parent class dan subclass-nya.

17
BAB VI INHERITAS

INHERITAS

A. Tujuan Pembelajaran
Setelah mengikuti kegiatan pembelajaran ini peserta didik diharapkan dapat :
 Menganalisis konsep inheritas melalui pembuatan suatu sub class dari suatu super class
berdasarkan tipe-tipe inheritas
 Melakukan praktikum membuat kode program berdasarlan hubungan antar class dengan
konsep inheritas.

B. Uraian Materi
1. Konsep Inheritas
Dalam Java semua class termasuk class yang membangun Java API, adalah sub-class dari
superclass Object. Contoh hirarki class diperlihatkan di bawah ini. Beberapa class di atas
class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di
bawah class pokok dalam hirarki class dikenal sebagai sub class dari class tersebut.

Gambar 2 Hierarki Class Swing Dalam Java


http://faculty.kutztown.edu/spiegel/csc521/Swing_Heirarchy/

18
Inheritas dapat didefinisikan sebagai proses di mana satu class memperoleh properti
(metode dan bidang data) dari yang class yang lain. Class yang mewarisi sifat-sifat lainnya
dikenal sebagai sub-class (class turunan, class anak) dan class yang propertinya diwariskan
dikenal sebagai superclass (class dasar, class induk).
Inheritas adalah keuntungan besar dalam pemrograman berbasis objekt karena suatu sifat
atau metode didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua
subclasses. Jadi, Anda dapat menuliskan kode metode hanya sekali dan mereka dapat
digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan perbedaannya
sendiri dan induknya adalah tidak lain hanya memperluas (extend) parentclass-nya.
a. Keuntungan inheritas
 Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan
superclass, hal ini memungkinkan programmer Java untuk menggunakan ulang source
code dari superclass yang telah ada.
 Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang
disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara
umum.
b. Deklarasi inheritas
Di dalam Java untuk mendeklarasikan suatu class sebagai sub class dilakukan dengan
menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti
dengan nama parentclass-nya. Kata kunci extends tersebut memberitahu compiler
Java bahwa kita ingin melakukan perluasan class.
Berikut adalah contoh deklarasi inheritance:
public class B extends A{
.....
}
Sintak di atas memberitahukan compiler Java bahwa kita ingin meng-extend class A
ke class B. Dengan kata lain, class B adalah subclass (class turunan) dari class A,
sedangkan class A adalah parent class dari class B.
c. Kapan menerapkan inheritas?
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang
dapat diperluas dari class lain.

19
Sintak class Pegawai sebagai berikut,
public class Pegawai {
public String nama;
public double gaji;
}
Sintak class Manajer sebagai berikut,
public class Manajer {
public String nama;
public double gaji;
public String departemen
}
Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik
sama dengan class Pegawai, hanya saja ada tambahan data member departemen.
Sebenarnya class Manajer merupakan perluasan dari class Pegawai dengan tambahan
data member departemen. Disini perlu memakai konsep inheritas, sehingga class
Manajer dapat kita tuliskan seperti berikut:
public class Pegawai {
public String nama;
public double gaji;
}
public class Manajer extends Pegawai {
private String departemen;
}
Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai,
maka ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian,
class Manajer mempunyai data member yang diwarisi oleh Pegawai (nama, gaji),
ditambah dengan data member yang ia punyai (departemen).
d. Menggunakan Katakunci Super
Katakunci super menunjuk kepada superclass didalamnya terdapat katakunci super.
Kegunaan katakunci super ada dua:
 Untuk memanggil suatu constructor superclass
 Untuk memanggil suatu metode superclass
1) Memanggil Constructor Superclass
Sintaks untuk memanggil suatu constructor superclass adalah

20
super();
super( parameter );
Statemen super() memanggil constructor tanpa parameter dari superclass, dan
statemen super( parameter ) memanggil constructor yang memiliki parameter
yang sesuai. Statemen super() atau super(parameter) harus diletakkan dibaris
pertama constructor subclass; ini merupakan satu-satunya cara untuk secara
eksplisit memanggil suatu constructor superclass. Sebagai perhatikan kode program
berikut ini:
public Manajer(String nama, double gaji, boolean status)
{
super( gaji , status );
this.nama = nama;
}
2) Memanggil Metode Superclass
Sintaks untuk memanggil suatu Metode superclass adalah
public class Pegawai {
public String nama;
public double gaji;
public void infoPegawai(){
System.out.println(“Nama pegawai : “+nama);
System.out.println(“Gaji pegawai : “+gaji);
}
public class Manajer extends Pegawai {
private String departemen;
super.infoPegawai();
}
e. Kontrol Pengaksesan
Pengaksesan member yang ada di parent class dari subclass-nya tidak jauh berbeda
dengan pengaksesan member subclass itu sendiri. Contoh: Suatu parent class dapat
tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu
member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari
class lain, sangat berhubungan dengan access control (control pengaksesan). Di dalam
java, kontrol pengaksesan dapat digambarkan dalam table berikut ini:

21
Tabel 3 Kontrol Pengaksesan Class

Modifier Class yang Package Subclass Class


Sama yang Sama Manapun

Private √
Default √ √
Protected √ √ √
Public √ √ √ √

2. Tipe Inheritas
Inheritas tunggal sangat mudah dimengerti. Ketika sebuah class hanya menambah satu
class lagi maka kita menyebutnya sebagai inheritas tunggal. Diagram alir di bawah
menunjukkan bahwa class B hanya mencakup satu class yaitu A. Di sini A adalah class induk
B dan B akan menjadi class anak A.
Multiple Inheritas mengacu pada konsep satu class yang memperluas atau mewarisi lebih
dari satu class induknya. Masalah multiple inheritas adalah bahwa class turunan harus
mengelola ketergantungan pada class induknya. Dalam warisan semacam itu, satu class
diwarisi oleh banyak sub-class.
Hierarki inheritas adalah ketika lebih dari satu class mewarisi class yang sama. Lebih
jelasnya disajikan dalam contoh class B dan C mewarisi class yang sama yaitu A. Class A
adalah kelas induk (atau class dasar) untuk class B dan C. Sebagai contoh kelas B dan C
memperluas class yang sama yaitu class A.

22
Gambar 3 Tipe Inheritas Dalam Pemrograman Java
https://www.tutorialspoint.com/java/java_inheritance.htm

3. Constructor Dalam Inheritas ( Rantai Constructor )


Pada saat menciptakan suatu instans dari suatu class akan menyebabkan pemanggilan
constructor dari semua superclass pada rantai pewarisan. Ketika menciptakan objek dari
suatu subclass, sebelum melaksanakan tugas, pertama-pertama memanggil constructor
superclassnya. Jika superclass tersebut diderivasi dari suatu class lain, maka constructor ke
class basisnya. Proses ini berlanjut sampai constructor terakhir disepanjang hirarki inheritas
dipanggil, hal ini disebut dengan rantai constructor.
Kode program berikut menunjukkan terjadinya rantai constructor,

public class A {
public A(){
System.out.println(“Constructor A bekerja...”);
}
}
public class B extends A {
public B(){
System.out.println(“Constructor B bekerja...”);
}
}

23
public class C extends B {
public C(){
System.out.println(“Constructor C bekerja...”);
}
}

public class D {
public static void main (String []args){
C obj = new C();
}
}

Keluaran Program
Constructor A bekerja....
Constructor B bekerja....
Constructor C bekerja....

C. Praktikum
IDE Netbeans 8.2 digunakan untuk menulis kode program Java dan easyUML digunakan
untuk menggambar class diagram. Langkah pertama membuat project baru dengan cara:
File → New Project → Project Name: Bab6
Klik Kanan → Bab6 → New → Java Class

Latihan 1 SINGLE INHERITAS


Deskripsi Program dapat menghitung tahun lahir dengan
menggunakan beberapa class built-in java.
Program mempunyai kemampuan untuk menangani
error handling jika pengguna salah memasukkan
data dari keyboard.
Class Diagram

24
Nama File Kendaraan.java
1 public class Kendaraan {
2 protected int kecepatan;
3 protected String warna;
4 protected String tipe;
5 protected int tahun;
6 protected boolean statusEngine = false;
7 public void startEngine(){
8 statusEngine = true;
9 }
10 }
Nama File Mobil.java
1 public class Mobil extends Kendaraan {
2 private String autoPesan ;
3 public Mobil() {
4 super.kecepatan = 1;
5 super.startEngine();
6 }
7 public void setDataMobil(String tipe, String warna, int tahun) {
8 this.tipe = tipe;

25
9 this.warna = warna;
10 this.tahun = tahun;
11 }
12 public void infoMobil() {
13 System.out.println("Mobil ....................................");
14 System.out.println("Tipe Mobil : " + tipe);
15 System.out.println("Warna: " + warna);
16 System.out.println("Tahun Pembuatan : " + tipe);
17 System.out.println("Melaju dengan kecepatan : " + kecepatan);
18 System.out.println("AUTO STATUS...." + this.getAutoPesan());
19 }
20 public void addKecepatan(int sk) {
21 if (statusEngine && sk <= 160) {
22 kecepatan = sk;
23 } else {
24 kecepatan = sk;
25 }
26 }
27 public String getAutoPesan() {
28 if (statusEngine && kecepatan >= 160) {
29 autoPesan = "Kecepatan Membahayakan Anda";
30 } else {
31 autoPesan = "Kecepatan Mobil Anda NORMAL";
32 }
33 return autoPesan;
34 }
35 public void stopEngine() {
36 statusEngine = false;
37 System.out.println("ENGINE OFF................................");
38 }
39 }
Nama File UjiMobil.java
1 public class UjiMobil {
2 public static void main(String[] args) {
3 Mobil m1 = new Mobil();
4 m1.setDataMobil("Sedan", "Hitam", 2017);
5 m1.addKecepatan(180);
6 m1.infoMobil();
7 m1.stopEngine();

26
8 m1.startEngine();
9 m1.addKecepatan(60);
10 m1.infoMobil();
11 }
12 }
Analisa Program
Class Kendaraan merupaan class induk dari class Mobil, yang mempunyai data
protected int kecepatan, protected String warna, protected String tipe, dan
protected int tahun. Semua data atau atributnya bermodifier protected sehingga
semua dapat diwariskan ke class Mobil sebagai class turunannya. Selain itu juga
mempunyai sebuah metode public void startEngine() sehingga class anak juga dapat
menggunakannya. Class Mobil mempunyai sebuah variabel private autoPesan yang
dapat diakses melalui metode aksesor yaitu String getAutoPesan yang berfungsi untuk
mengingatkan ke driver jika kecepatannya melebihi 160 km/jam.
Ketika program ini dijalankan system runtime JAVA akan memanggil metode main()
dalam class UjiMobil. Class utama memuat metode main (baris 2) yang menciptakan
objek yaitu m1 pada baris ke-4. Selanjutnya objek m1 memanggil beberapa metode
yang terdapat dalam class Mobil untuk membuat sekenario pengujian yang diinginkan
mulai dari baris ke-4 sampai ke-6. Pada saat objek m1 memanggil metode addKecepatan
(180), kecepatan mobil akan dicek melalui metode getAutoPesan(), jika kecepatan lebih
dari 160 maka akan ada pesan Kecepatan Membayakan Anda, demikian seterusnya objek
m1 akan bekerja sesuai dengan keinginan pengendara mobil

Keluaran Program RUN > UjiMobil.java


Mobil ....................................
Tipe Mobil : Sedan
Warna: Hitam
Tahun Pembuatan : Sedan
Melaju dengan kecepatan : 180
AUTO STATUS....Kecepatan Membahayakan Anda
ENGINE OFF................................
Mobil ....................................
Tipe Mobil : Sedan
Warna: Hitam
Tahun Pembuatan : Sedan
Melaju dengan kecepatan : 60
AUTO STATUS....Kecepatan Mobil Anda NORMAL

27
Latihan 2 MULTI LEVEL INHERITAS
Deskripsi Program dapat menghitung luas dan keliling
dari class SegiEmpat dan class Lingkaran.Class
SegiEmpat mempunyai anak yaitu class Kubus
sehinga model pewarisan semacam ini disebut
multi level inheritas.
Class Diagram

Nama File BangunDatar.java

28
1 public class BangunDatar {
2 protected String nama;
3 protected int posisiX;
4 protected int posisiY;
5 public void setPosisi(int x, int y){
6 this.posisiX = x;
7 this.posisiY = y;
8 }
9 }
Nama File SegiEmpat.java
1 public class SegiEmpat extends BangunDatar {
2 protected double panjang;
3 protected double lebar;
4 public void setData(String nama, double p, double l){
5 this.nama = nama;
6 this.panjang = p;
7 this.lebar = l;
8 }
9 public double luasSegiEmpat(){
10 return panjang * lebar;
11 }
12 public double kelilingSegiEmpat(){
13 return (2*(panjang + lebar));
14 }
15 public void infoSegiEmpat(){
16 System.out.printf("Posisi awal SEGI EMPAT pada koordinat ( %s ,
%s)\n",this.posisiX,this.posisiY);
17 System.out.printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", "NAMA", "PANJANG", "LEBAR",
"LUAS", "KELILING");
18 System.out.printf("%s\t%s\t\t%s\t\t%s\t\t%s\n", nama, panjang, lebar,
19 this.luasSegiEmpat(), this.kelilingSegiEmpat());
20 }
21 }
Nama File Lingkaran.java
1 import java.util.Scanner;
2 public class Lingkaran extends BangunDatar {
3 private double radius;
4 private final static double PI = 3.14;
5 Scanner inp = new Scanner(System.in);

29
6 Lingkaran ln[] = new Lingkaran[2];
7 public void setInput(){
8 for (int i=0 ; i<ln.length ; i++){
9 ln[i] = new Lingkaran();
10 System.out.println("Data Lingkaran ["+(i+1)+"]");
11 System.out.print("Nama lingkaran : ");
12 ln[i].nama = inp.next();
13 inp.nextLine();
14 System.out.println("Radius\t\t :");
15 ln[i].radius = inp.nextDouble();
16 }
17 }
18 public double luasLingkaran(){
19 return 2 * PI * Math.pow(radius);
20 }
21 public double kelLingkaran(){
22 return 2 * PI * radius;
23 }
24 public void infoLingkaran(){
25 System.out.printf("Posisi awal LINGKARAN pada koordinat
( %s , %s)\n",this.posisiX,this.posisiY);
26 System.out.printf("%s\t%s\t\t\t%s\t\t%s\t\t%s\n", "NO", "NAMA", "RADIUS",
"LUAS", "KELILING");
27 System.out.println("------------------------------------------------------------------------");
28 for(int i=0 ; i< ln.length ; i++){
29 System.out.printf("%s\t%s\t\t%s\t\t%.3f\t\t%.3f\n",i+1,ln[i].nama,ln[i].radius,
30 ln[i].luasLingkaran(),ln[i].kelLingkaran());
31 }
32 System.out.println("------------------------------------------------------------------------");
33 }
34 }
Nama File Kubus.java
1 public class Kubus extends SegiEmpat {
2 private double tinggi;
3 public void setDataKubus(String nama, double p, double l, double t) {
4 this.nama = nama;
5 this.panjang = p;
6 this.lebar = l;
7 this.tinggi = t;

30
8 }
9 public double volumeKubus(){
10 return panjang * lebar * tinggi;
11 }
12 public void infoKubus(){
13 System.out.printf("Posisi awal KUBUS pada koordinat ( %s , %s)\n",
this.posisiX,this.posisiY);
14 System.out.printf("%s\t%s\t\t%s\t\t%s\t\t%s\n", "NAMA", "PANJANG", "LEBAR",
15 "TINGGI", "VOLUME");
16 System.out.printf("%s\t%s\t\t%s\t\t%s\t\t%s\n", nama, panjang, lebar, tinggi,
this.volumeKubus());
17 }
18 }
Nama File MainBangunDatar.java
1 import java.util.Scanner;
2 public class MainBangunDatar {
3 public static void main(String[] args) {
4 int pilih;
5 Scanner inp = new Scanner(System.in);
6 Kubus ks = new Kubus();
7 Lingkaran ling = new Lingkaran();
8 do {
9 System.out.println("----------BANGUN DATAR----------");
10 System.out.println("1. Input Data Segi Empat");
11 System.out.println("2. Input Data Kubus");
12 System.out.println("3. Iput Data Lingkaran");
13 System.out.println("4. Info Segi Empat");
14 System.out.println("5. Info Kubus");
15 System.out.println("6. Info Lingkaran");
16 System.out.print("Pilhan Anda ? ");
17 pilih = inp.nextInt();
18 switch (pilih) {
19 case 1:
20 ks.setData("SegiEmpat", 60, 20);
21 System.out.println("DATA SUDAH BERHASIL DI ENTRY");
22 break;
23 case 2:
24 ks.setDataKubus("Kubus", 67, 23, 10);
25 System.out.println("DATA SUDAH BERHASIL DI ENTRY");

31
26 break;
27 case 3:
28 ling.setPosisi(10, 10);
29 ling.setInput();
30 break;
31 case 4:
32 ks.infoSegiEmpat();
33 break;
34 case 5:
35 ks.infoKubus();
36 break;
37 case 6:
38 ling.infoLingkaran();
39 break;
40 default:
41 break;
42 }
43 } while (true);
44 }
45 }
Analisa Program
Class BangunDatar merupakan class induk dari class SegiEmpat dan class Lingkaran.
Class SegiEmpat yang mempunyai anak class Kubus. Semua data atau atributnya
bermodifier protected sehingga semua dapat diwariskan ke class SegiEmpat dan class
Lingkaran sebagai class turunannya. Selain itu juga mempunyai sebuah metode public
void setPosisi() sehingga class anak juga dapat menggunakannya. Class Kubus
merupakan turunan dari class SegiEmpat sehingga mewarisi semua data dan metode
yang bermodifier protected atau public.
Ketika program ini dijalankan system runtime JAVA akan memanggil metode main()
dalam class MainBidangDatar. Class utama memuat metode main (baris 2) yang
menciptakan dua objek yaitu ks dan ling pada baris ke-6 dan baris ke-7. Ketika objek ks
dibuat makan yang dijalankan pertama adalh contrutor class BangunDatar kemudian
contructor class SegiEmpat dan yang terahkir menjalankan constructor class Kubus.
Program ini menggunakan menu untuk berinteraksi dengan pengguna sehingga

32
diperlukan class Scanner untuk berinteraksi dengan class SegiEmpat dan class Lingkaran.
Selengkapnya dapat dilihat dari keluaran program berikut ini,

Keluaran Program RUN > MainBangunDatar.java


----------BANGUN DATAR----------
1. Input Data Segi Empat
2. Input Data Kubus
3. Iput Data Lingkaran
4. Info Segi Empat
5. Info Kubus
6. Info Lingkaran
Pilhan Anda ? 3
Data Lingkaran [1]
Nama lingkaran : Lingkaran 1
Radius :90
Data Lingkaran [2]
Nama lingkaran : Lingkaran 2
Radius :120
----------BANGUN DATAR----------
1. Input Data Segi Empat
2. Input Data Kubus
3. Iput Data Lingkaran
4. Info Segi Empat
5. Info Kubus
6. Info Lingkaran
Pilhan Anda ? 6
Posisi awal LINGKARAN pada koordinat ( 10 , 10)
NO NAMA RADIUS LUAS KELILING
-----------------------------------------------------------------
1 Lingkaran 90.0 59.577 565.200
2 Lingkaran 120.0 68.794 753.600
-----------------------------------------------------------------
----------BANGUN DATAR----------
1. Input Data Segi Empat
2. Input Data Kubus
3. Iput Data Lingkaran
4. Info Segi Empat
5. Info Kubus
6. Info Lingkaran
Pilhan Anda ?

33
Latihan 3 MULTI LEVEL DAN HIERARKI NHERITAS
Deskripsi Program berikut ini merupakan penerapan
inhertias dengan menggunakan tipe multi level
sekaligus hierarki inheritas.
Class Diagram

Nama File Sepeda.java


1 public class Sepeda {
2 protected String jenisRoda;
3 protected String merk;
4 protected int tahunPembuatan;
5 protected int kecepatan = 0;
6 public Sepeda(String jenisRoda, String merk, int tahunPembuatan) {
7 this.jenisRoda = jenisRoda;
8 this.merk = merk;
9 this.tahunPembuatan = tahunPembuatan;
10 }
11 public String getJenisRoda() {
12 return jenisRoda;
13 }
14 public String getMerk() {
15 return merk;
16 }

34
17 public int getTahunPembuatan() {
18 return tahunPembuatan;
19 }
20 public void tambahKecepatan(){
21 if(kecepatan < 30){
22 kecepatan+=5;
23 }
24 }
25 public void rem(){
26 if(kecepatan > 0){
27 kecepatan -= 5;
28 }
29 }
30 public void infoSepeda(){
31 System.out.println("Jenis Roda\t\t:"+jenisRoda);
32 System.out.println("Merek\t\t\t:"+merk);
33 System.out.println("Tahun Pembuatan \t:"+tahunPembuatan);
34 System.out.println("Kecepatan\t\t:"+kecepatan + " km/h");
35 }
36 }
Nama File SepedaGunung.java
1 public class SepedaGunung extends Sepeda{
2 private int gir = 1;
3 public void setGir(int gir) {
4 if( gir >= 1 && gir <= 4){
5 this.gir = gir;
6 kecepatan = 20 * this.gir;
7 }
8 }
9 public int getGir() {
10 return gir;
11 }
12 public SepedaGunung(String jenisRoda, String merk, int tahunPembuatan) {
13 super(jenisRoda, merk, tahunPembuatan);
14 }
15 public void infoSepeda(){
16 super.infoSepeda();
17 System.out.println("Posisi Gir\t\t:"+gir);
18 }

35
19 }
Nama File SepedaBalap.java
1 public class SepedaBalap extends Sepeda{
2 private int timer = 0;
3 public SepedaBalap(String jenisRoda, String merk, int tahunPembuatan) {
4 super(jenisRoda, merk, tahunPembuatan);
5 }
6 public void rem(){
7 super.rem();
8 timer +=100;
9 if(kecepatan <= 0){
10 timer = 0;
11 }
12 }
13 public void tambahKecepatan() {
14 super.tambahKecepatan();
15 timer += 100;
16 }
17 public void infoSepeda(){
18 super.infoSepeda();
19 System.out.printf("Waktu\t\t\t:%s\n",timer);
20 }
21 }
Nama File SepedaMotor.java
1 public class SepedaMotor extends Sepeda {
2 protected String mesin;
3 protected boolean on = false;
4 protected int gigi = 0;
5 public SepedaMotor(String jenisRoda, String merk, int tahunPembuatan) {
6 super(jenisRoda, merk, tahunPembuatan);
7 }
8 public String getMesin() {
9 return mesin;
10 }
11 public void setMesin(String mesin) {
12 this.mesin = mesin;
13 }
14 public void setOn(){
15 on = true;

36
16 }
17 public void setOff(){
18 on = false;
19 }
20 public void masukanGigi(){
21 if(gigi < 4){
22 gigi++;
23 }
24 }
25 public void turunGigi(){
26 if(gigi > 0){
27 gigi--;
28 }
29 }
30 public void tambahKecepatan() {
31 if (on && kecepatan < 120 && gigi > 0) {
32 kecepatan += 30;
33 }
34 }
35 public void rem() {
36 if (kecepatan > 0) {
37 kecepatan -= 30;
38 }
39 }
40 public void infoSepeda() {
41 super.infoSepeda();
42 System.out.println("Mesin\t\t\t: " + mesin);
43 System.out.println("Posisi\t\t\t:" + gigi);
44 }
45 }
Nama File SepedaMotor2Tak.java
1 public class SepedaMotor2Tak extends SepedaMotor{
2 public SepedaMotor2Tak(String jenisRoda, String merk, int tahunPembuatan) {
3 super(jenisRoda, merk, tahunPembuatan);
4 }
5 public void masukanGigi(){
6 gigi++;
7 if(gigi > 0){
8 gigi=0;

37
9 }
10 }
11 }
Nama File SepedaMotor4Tak.java
1 public class SepedaMotor4Tak extends SepedaMotor {
2 public SepedaMotor4Tak(String jenisRoda, String merk, int tahunPembuatan) {
3 super(jenisRoda, merk, tahunPembuatan);
4 }
5 public void masukanGigi(){
6 if(gigi < 3){
7 gigi++;
8 }
9 }
10 }
Nama File UjiSepeda.java
1 public class UjiSepeda {
2 public static void main(String[] args) {
3 Sepeda spd = new Sepeda("Roda medium","Polygon",1987);
4 spd.infoSepeda();
5 spd.tambahKecepatan();
6 spd.tambahKecepatan();
7 spd.tambahKecepatan();
8 spd.rem();
9 spd.infoSepeda();
10 System.out.println("DATA SEPEDA GUNUNG");
11 SepedaGunung sg = new SepedaGunung("Roda Keras","Polygon 47",2017);
12 sg.setGir(3);
13 sg.setGir(2);
14 sg.infoSepeda();
15 System.out.println("DATA SEPEDA BALAP");
16 SepedaBalap sb = new SepedaBalap("Roda Medium","Police 7r",2000);
17 sb.tambahKecepatan();
18 sb.tambahKecepatan();
19 sb.rem();
20 sb.infoSepeda();
21 System.out.println("DATA SEPEDA MOTOR");
22 SepedaMotor mtr = new SepedaMotor("Roda RCC","Honda",2017);
23 mtr.setMesin("Suzuki");
24 mtr.setOn();

38
25 mtr.masukanGigi();
26 mtr.tambahKecepatan();
27 mtr.tambahKecepatan();
28 mtr.setOff();
29 mtr.infoSepeda();
30 }
31 }
Analisa Program
Class Sepeda merupakan class induk dari class SepdahGunung, class SepedaBalap,
dan class SepedaMotor. Class SepdaMotor yang mempunyai dua anak class
SepedaMotor4Tak dan class SepedaMotor2Tak. Semua data atau atributnya yang
bermodifier protected dapat diwariskan semua class yang menjadi turunannya.
Ketika program ini dijalankan system runtime JAVA akan memanggil metode main()
dalam class UjiSepeda. Class utama memuat metode main (baris 2) yang menciptakan
beberapa objek yaitu spd,sb,sg dan mtr. Metode tambahKecepatan(), metode void
rem() dan metode infoSepeda() merupakan metode yang akan di-overide oleh class-
class turunannya.

Keluaran Program RUN > UjiSepeda.java


Jenis Roda :Roda medium
Merek :Polygon
Tahun Pembuatan :1987
Kecepatan :0 km/h
Jenis Roda :Roda medium
Merek :Polygon
Tahun Pembuatan :1987
Kecepatan :10 km/h
DATA SEPEDA GUNUNG
Jenis Roda :Roda Keras
Merek :Polygon 47
Tahun Pembuatan :2017
Kecepatan :40 km/h
Posisi Gir :2
DATA SEPEDA BALAP
Jenis Roda :Roda Medium
Merek :Police 7r
Tahun Pembuatan :2000
Kecepatan :5 km/h
Waktu :300
DATA SEPEDA MOTOR
Jenis Roda :Roda RCC
Merek :Honda

39
Tahun Pembuatan :2017
Kecepatan :60 km/h
Mesin : Suzuki
Posisi :1

D. Tugas Projek

Buatlah program Java dengan menggunakan IDE NetBeans 8.2 dengan membuat
package baru pada projek Bab10, dengan cara:
Klik Kanan → Bab12 → New → Java Package → Package Name:tugas

Tugas Projek1
Buatlah program dengan konsep inheritas berdasarkan class diagram berikut,

Class Diagram

40
Nama File Pegawai.java
Manajer.java
Sekertaris.java
Staff.java
EksekutifManajer.java

41
E. Rangkuman
Inheritas dapat didefinisikan sebagai proses di mana satu class memperoleh properti
(metode dan bidang data) dari yang class yang lain. Class yang mewarisi sifat-sifat lainnya
dikenal sebagai sub-class (class turunan, class anak) dan class yang propertinya diwariskan
dikenal sebagai superclass (class dasar, class induk).
Inheritas adalah keuntungan besar dalam pemrograman berbasis objekt karena suatu sifat
atau metode didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua
subclasses. Jadi, Anda dapat menuliskan kode metode hanya sekali dan mereka dapat
digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan perbedaannya
sendiri dan induknya adalah tidak lain hanya memperluas (extend) parentclass-nya.

42
PENULIS

Eko Subiyantoro adalah widyaiswara di BBPPMPV BOE-VEDC Malang di


Departemen Teknologi Informasi. Lahir di Banyuwangi
pada tahun 1975. Pendidikan SD, SMP, dan STM
(sekarang SMK) diselesaikan di kota kelahirannya.
Selanjutnya ia menyelesaikan S1 di Program Studi
Pendidikan Teknik Elektronika FPTK IKIP Yogyakarta
(sekarang UNY) pada tahun 1998. Sarjana Sains Terapan
(SST) diperolehnya melalui program beasiswa Dikmenjur
(sekarang Direktorat Pembinaan Sekolah Menengah
Kejuruan) di PENS ITS Surabaya pada tahun 2002 pada
Prodi Teknologi Informasi dengan predikat cum laude.
Magister Teknik diperolehnya melalui program beasiswa unggulan BPKLN di ITS
Surabaya Program Studi Teknik Elektro konsentrasi Jaringan Cerdas Multimedia
pada tahun 2009 juga dengan predikat cum laude. Doktor diperolehnya juga
melalui beasiswa unggulan bagi pegawai Kemdikbud di Prodi S3 Ilmu Komputer
FMIPA Universitas Gadjah Mada.
Pengalaman luar negeri diperolehnya melalui program Inwent dari pemerintah
Jerman pada tahun 2003 dalam program Advance Automation Training. Selain itu,
pada tahun 2006 mengikuti Expert Program Maintenance and Repair di Abha
College Kingdom of Saudi Arabia (KSA). Selanjutnya pada tahun 2013 melalui IGI
kerja sama Indonesia–Jerman diikutkan dalam program Modern Management
School di Kassel Jerman.
Penulis memiliki pengalaman kerja di PPPPTK BOE/VEDC Malang sebagai Kepala
Departemen Teknologi Informasi selama 2 periode 2010–2013 dan 2013–2015.
Selain itu juga sebagai tim pengembang Java Education Network Indonesia (JENI),
sebuah sistem yang diinisiasi BPKLN Kemdikbud dalam kurun waktu tahun 2007–
2009. Sertifikasi yang diperoleh dalam bidang pemrograman adalah Sun Certified
Java Programmer (SCJP) pada tahun 2008.
Eko Subiyantoro dapat dihubungi melalui alamat e-mail ekovedc@gmail.com

Daftar Pustaka

43
Budi Laksaono Putro dkk, Pemrograman Berorientasi Obyek. Politeknik Telkom

Christian Musnter, Java 2 JDK 5 –Grundlagen , Herdt – Verlag forbildungsmedien


Gagh, Bodenheilm, 2006

C. Thomas wu, An Introduction to Object- Oriented Programming with Java,


McGraw Hill 2001

Deitel, Java : How to Program , Prentice Hall, New jersey, 2002

Joyce Avestro , Introduction Programming 1, Java Education Development Initiatif,


2003

Joyce Avestro , Introduction Programming 2, Java Education Development Initiatif,


2003

Patric Noughton , The Java Handbook, McGrawHill, Inc, 2006

R.H.Sianipar , Teori dan Implementasi Java, Informatika Bandung, 2013

Yusril Maulidan Raji dkk, Modul Praktikum Objek Oriented Programming, Telkom
University

44

Anda mungkin juga menyukai