Anda di halaman 1dari 65

“OBJECT ORIENTED PROGRAMMING (OOP)”

DI AJUKAN SEBAGAI TUGAS TERSTRUKTUR PADA MATA KULIAH


PEMROGRAMAN BERORIENTASI OBJEK

DOSEN PENGAMPU : Agus Suryadi, M.Kom.

OLEH:

ANITA OKTARINI

17220354

SI-3K

STMIK ROYAL

KISARAN

2018/2019

1
KATA PENGANTAR

Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa karena dengan rahmat,
karunia, serta taufik dan hidayah-Nya kami dapat menyelesaikan makalah tentang
pemrograman Berorientasi Objek ini dengan baik meskipun banyak kekurangan didalamnya.

Kami sangat berharap makalah ini dapat berguna dalam rangka menambah wawasan
serta pengetahuan kita mengenai kegunaan dari pemrograman Berorientasi dan juga
mengenal lebih dalam materi tersebut. Kami juga menyadari sepenuhnya bahwa di dalam
makalah ini terdapat kekurangan dan jauh dari kata sempurna. Oleh sebab itu, kami berharap
adanya kritik, saran dan usulan demi perbaikan makalah yang telah kami buat di masa yang
akan datang, mengingat tidak ada sesuatu yang sempurna tanpa saran yang membangun.

Semoga makalah sederhana ini dapat dipahami bagi siapapun yang membacanya.
Sekiranya laporan yang telah disusun ini dapat berguna bagi kami sendiri maupun orang yang
membacanya. Sebelumnya kami mohon maaf apabila terdapat kesalahan kata-kata yang
kurang berkenan dan kami memohon kritik dan saran yang membangun demi perbaikan di
masa depan.

Kisaran, Januari 2019

Penyusun

2
DAFTAR ISI
Halaman Judul ................................................................................................................... 1

Kata Pengantar ................................................................................................................... 2

Daftar isi ............................................................................................................................. 3

BAB I PENDAHULUAN .................................................................................................. 5

A. Latar Belakang ......................................................................................................... 5


B. Rumusan Masalah .................................................................................................... 5
C. Tujuan ...................................................................................................................... 6

BAB II PEMBAHASAN .................................................................................................... 7

A. Pengertian OOP ........................................................................................................ 7


B. Sejarah OOP ............................................................................................................. 7
C. Konsep Dasar OOP ................................................................................................... 8
D. Kelebihan dan Kekurangan OOP .............................................................................. 9
E. Karakteristik OOP pada Java .................................................................................... 9
F. Contoh Program OOP .............................................................................................. 10
G. OOP Fundamental .................................................................................................... 15
1. Class ................................................................................................................... 15
2. Attributs .............................................................................................................. 15
3. Object ................................................................................................................. 16
4. Method ............................................................................................................... 17
5. Parameter ........................................................................................................... 19
6. Package .............................................................................................................. 21
7. Keyword This .................................................................................................... 25
8. Akses Modifier (Hak Akses) ............................................................................. 26
9. Overloading ....................................................................................................... 28
10. Construktor ........................................................................................................ 30
11. Keyword Static ................................................................................................... 38
12. Encapsulation ..................................................................................................... 40
13. Java Beans .......................................................................................................... 43
14. Inheritance .......................................................................................................... 43
3
15. Overriding dan Super ........................................................................................ 45
16. Polymorphism ................................................................................................... 49
17. Kelas Abstrak dan Method Abstrak ................................................................. 56
18. Interface ............................................................................................................ 59
19. Pewarisan Interface ........................................................................................... 61

BAB III PENUTUP ........................................................................................................... 64

A. Kesimpulan .............................................................................................................. 64
B. Saran ........................................................................................................................ 64

DAFTAR PUSTAKA ........................................................................................................ 65

4
BAB I PENDAHULUAN
A. Latar Belakang

Pemrograman Berorientasi Objek (Object Oriented Programming atau OOP)


merupakan paradigma pemrograman yang berorientasikan kepada objek. Objek adalah
struktur data yang terdiri dari bidang data dan metode bersama dengan interaksi mereka
untuk merancang aplikasi dan program komputer. Semua data dan fungsi di dalam paradigma
ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman
terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke
objek lainnya. Pada jaman sekarang, banyak bahasa pemrograman yang mendukung OOP.

OOP adalah paradigma pemrograman yang cukup dominan saat ini, karena mampu
memberikan solusi kaidah pemrograman modern. Meskipun demikian, bukan berarti bahwa
pemrograman prosedural sudah tidak layak lagi. OOP diciptakan karena dirasakan masih
adanya keterbatasan pada bahasa pemrograman tradisional. Konsep dari OOP sendiri adalah
semua pemecahan masalah dibagi ke dalam objek. Dalam OOP data dan fungsi-fungsi yang
akan mengoperasikannya digabungkan menjadi satu kesatuan yang dapat disebut sebagai
objek. Proses perancangan atau desain dalam suatu pemrograman merupakan proses yang
tidak terpisah dari proses yang mendahului, yaitu analisis dan proses yang mengikutinya.
Pembahasan mengenai orientasi objek tidak akan terlepas dari konsep objek seperti
inheritance atau penurunan, encapsulation atau pembungkusan, dan polymorphism atau
kebanyakrupaan. Konsep-konsep ini merupakan fundamental dalam orientasi objek yang
perlu sekali dipahami serta digunakan dengan baik, dan menghindari penggunaannya yang
tidak tepat.

Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih,
kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar.
Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula
dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan
dan dirawat.

B. Rumusan Masalah

1. Pengertian OOP (Object Oriented Programming)?

2. Bagaimana Sejarah OOP ?

5
3. Bagaimanakah konsep dasar dari OOP?

4. Apa sajakah kelebihan dan kekurangan dari OOP?

5. Bagaimanakah karakteristik OOP pada Java?

6. Bagaimana contoh program OOP?

7. Apa saja yang termasuk OOP Fundamental ?

C. Tujuan

1. Dapat Mengetahui pengertian dari OOP.

2. Dapat Mengetahui sejarah dari OOP.

3. Dapat mengetahui konsep dasar dari OOP.

4. Dapat mengetahui kelebihan dan kekurangan dari OOP.

5. Dapat mengetahui karakteristik OOP pada Java.

6. Dapat mengetahui contoh program OOP.

7. Dapat menegtahui apa saja yang termasuk dari OOP Fundamental.

6
BAB II PEMBAHASAN

A. Pengertian OOP

OOP adalah sebuah metodologi atau cara berpikir dalam melakukan pemrograman
dimana pendefinisian tipe data disertai dengan pendefinisian fungsi. Struktur data yang
seperti ini disebut dengan istilah object. Paradigma pemrograman OOP dapat dilihat sebagai
interaksi sebuah object dalam melakukan tugasnya.

Segelas teh tentunya memiliki berbagai spesifikasi seperti volume air, rasa,
temperatur dan sebagainya. Pada pemrograman, spesifikasi-spesifikasi tersebut merupakan
variabel yang dideklarasikan beserta tipe data. Pada OOP, sebuah object Teh juga
memiliki method berupa fungsi yang dapat dipanggil untuk merubah kelakuan atau
spesifikasi teh tersebut. Method minumTeh dapat dideklarasikan sebagai fungsi yang dapat
dipanggil untuk mengurangi nilai variabel Volume.

Di samping itu, sebuah object dapat memiliki relasi terhadap object lainnya. Sebagai
contoh, sebuah object dapat berupa keturunan dari object lain.

B. Sejarah OOP

Konsep OOP bermula pada era 1960-an. Sebuah bahasa


pemrograman Simula memperkenalkan berbagai konsep yang mendasari OOP
dengan SIMULA I (1962-65) dan Simula 67 (1967). Kemudian pada tahun 70-an, bahasa
pemrograman Smalltalk menjadi yang pertama kali disebut object-oriented.

Pada tahun 1980-an, dua bahasa pemrograman ADA (US Department of Defense) dan
PROLOG (the Japanese “Fifth Generation Computer Project”) dipercayai akan bersaing ketat
sebagai bahasa pemrograman yang paling dominan. Namun justru OOP yang menjadi
paradigma pemrograman yang paling dominan sampai sekarang. Bahasa pemrograman
yang object-oriented seperti C++ pada tahun 80-an menjadi populer. Pada tahun 90-an,
bahasa-bahasa pemrograman seperti Java mulai menerapkan OOP. Sampai pada
2002, Microsoft Visual Studio memperkenalkan bahasa object-oriented baru yang diberi
nama C#. Disusul VB.NET yang merupakan penyempurnaan Visual Basic 6.0 yang tidak
mendukung OOP.

7
Object–Oriented Programming (OOP) adalah sebuah pendekatan untuk
pengembangan / development suatu software dimana dalam struktur software tersebut
didasarkan kepada interaksi object dalam penyelesaian suatu proses / tugas. Interaksi tersebut
mengambil form dari pesan-pesan dan mengirimkannya kembali antar object
tersebut. Object akan merespon pesan tersebut menjadi sebuah tindakan / action atau metode.
Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan mengetahui
bahwa kita berinteraksi dalam sebuah object–oriented world. Jika akan bepergian kita pasti
berinteraksi dengan object mobil. Sebagai sebuah object, mobil berisi object-object lain yang
berinteraksi untuk melakukan tugasnya membawa kita.

C. Konsep Dasar OOP

Jika ingin mempelajari OOP java, tentu kita harus mengetahui terlebih dahulu
mengenai konsep oop pada java. Konsep ini adalah dasar dari OOP. Berikut ini merupakan
Konsep OOP pada java:

a. Class = Sebuah konsep OOP yang digunakan untuk mengkapsulasi atau membungkus
data dan abstraksi prosedural yang diperlukan dalam Gambaran isi dan tingkah laku
sebagai entitas.
b. Object = Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah
program. Merupakan dasar dari modularitas dan struktur dalam sebuah OOP.
c. Abstraksi = Proses representasi data dan program dalam bentuk sama dengan
pengertiannya (semantik) dengan menyembunyikan rincian atau detail implementasi.
d. Encapsulation = Merupakan pembungkus, artinya membungkus class dan menjaga
apa saja yang ada didalam class tersebut. Baik method ataupun atribut. Agar tidak
bisa diakses oleh class lainnya.
e. Polimorfisme = Merupakan suatu kejadian ketika object dapat mengungkapkan
banyak hal melalui suatu cara yang sama,
f. Inheritance = Pewarisan. artinya sebuah class dapat menurunkan property dan method
yang dimilikinya kepada class lain.

8
D. Kelebihan dan kekurangan OOP

OOP memiliki beberapa keuntungan dalam pemrograman, di antaranya:

1. OOP menyediakan struktur modular yang jelas untuk program sehingga OOP sangat
bagus digunakan untuk mendefinisikan tipe data abstrak di mana detil
implementasinya tersembunyi.
2. OOP akan mempermudah dalam memaintain dan memodifikasi kode yang sudah ada.
Objek yang baru dapat dibuat tanpa mengubah kode yang sudah ada.
3. OOP menyediakan framework untuk library kode di mana komponen software yang
tersedia dapat dengan mudah diadaptasi dan dimodifikasi oleh programmer. Hal ini
sangat berguna untuk mengembangkan GUI (Graphical User Interfaces).

Sedangkan beberapa kelemahan OOP antara lain adalah sebagai berikut:

1. Tidak memperbolehkan implementasi yang kuat pada reuse


2. Properti software tidak terikat dalam satu unit fungsional, sehingga harus crosscut di
antara komponennya.
3. Crosscut tersebut mengakibatkan sulitnya pengembangan dan pemeliharaan.

E. Karakteristik OOP Pada Java

a. Semua adalah objek.


b. Komputasi dilakukan dengan komunikasi antar objek. Setiap objek berkomunikasi
dengan objek yang lain melalui pengiriman dan penerimaan pesan.
c. Sebuah pesan merupakan permintaan atas sekumpulan aksi dengan semua argumen
yang diperlukan untuk menyelesaikan suatu tugas tertentu.
d. Setiap objek memiliki memori sendiri, yang dapat terdiri dari objek-objek lainnya.
e. Setiap objek adalah wakil atau representasi dari suatu kelas. Sebuah kelas dapat
mewakili sekelompok objek yang sama.
f. Kelas merupakan kumpulan tingkah laku yang berkaitan dengan suatu objek. Jadi,
semua objek yang merupakan wakil dari kelas yang sama dapat melakukan aksi yang
sama pula.
g. Kelas-kelas diorganisasikan ke dalam struktur pohon yang berakar tunggal, yang
dinamakan dengan jenjang pewarisan (inheritance hierarchy).

9
h. Setiap objek pada umumnya memiliki tiga sifat, yaitu keadaan, operasi dan identitas
objek.
i. Operasi merupakan tindakan yang dapat dilakukan oleh sebuah objek.
j. Keadaan objek merupakan koleksi dari seluruh informasi yang dimiliki oleh objek
pada suatu saat.
k. Informasi yang terkandung pada objek tersebut pada akhirnya memberikan identitas
khusus yang membedakan suatu objek dengan objek lainnya.

F. Contoh Program OOP


Kita akan menggunakan Netbeans, silahkan buat project baru.

Isi nama project-nya dengan “BelajarOOP” dan jangan centang “Create Main Class”.

10
Setelah itu, silahkan buat package baru. Klik kanan pada <default package>, lalu pilih New-
>Java Package.

Isi nama package dengan “dasar”:

11
Setelah itu, di dalam package dasar, silahkan buat class baru bernama Player.java Klik kanan
pada package dasar lalu pilih New->Java Class. Setelah itu, isi namanya dengan Player.java.

Silahkan tulis kode pada Player.java seperti ini:

package dasar;

public class Player {

// definisi atribut

String name;

int speed;

int healthPoin;

// definisi method run

void run(){

System.out.println(name +" is running...");

System.out.println("Speed: "+ speed);

12
}

// definisi method isDead untuk mengecek nilai kesehatan (healthPoin)

boolean isDead(){

if(healthPoin <= 0) return true;

return false;

Berikutnya, buat class baru lagi bernama Game.java dan isi kodenya seperti ini:

package dasar;

public class Game {

public static void main(String[] args){

// membuat objek player

Player petani = new Player();

// mengisi atribut player

petani.name = "Petani Kode";

petani.speed = 78;

petani.healthPoin = 100;

13
// menjalankan method

petani.run();

if(petani.isDead()){

System.out.println("Game Over!");

Coba eksekusi Game.java dengan klik kanan pada Game.java lalu pilih Run File. Maka
hasilnya:

14
G. OOP FUNDAMENTAL

1. Class

Adalah struktur dasar dari OOP (Object Oriented Programming). Terdiri dari dua tipe
yaitu : field (attribute/property) dan method (behavior). Class digunakan untuk
mendeklarasikan sebuah variabel yang berupa objek atau dinamakan “referensi objek (object
reference)”

Membuat sebuah class :

a. Nama kelas harus sama dengan nama file


b. Nama kelas tidak boleh mengandung suatu simbol, whitespace (spasi,enter,tab)
Class NamaKelas{
//isi kelas
}
Contoh:
class LuasPersegiPanjang(){
}

2. Attributes

Merupakan nilai data yang terdapat pada suatu object yang berasal dari class. Attributes
merepresentasikan karakteristik dari suatu object.

Contoh : pada Class Buah terdapat attribute : warna, rasa . Pada object mangga : warna
berisi kuning dan rasa asam, pada object apel : warna berisi merah dan rasa manis.

Membuat suatu attribut:

a. Atribut merupakan data pendukung yang dimiliki oleh kelas


b. Atribut dibuat seperti membuat suatu variabel
Class NamaClass{
tipeData namaAtribut;
tipeData namaAtribut;
}

15
Contoh :
class LuasPersegiPanjang(){
//atribut
int panjang;
int lebar
}

3. Object

Setiap Object (obyek) dibangun dari sekumpulan data (atribut) yang disebut "variabel"
(untuk menjabarkan karakteristik khusus dari obyek) dan juga terdiri dari sekumpulan
method (menjabarkan tingkah laku dari obyek) atau Obyek adalah = sebuah perangkat lunak
yg berisi sekumpulan variabel dan method yg berhubungan. Obyek merupakan sebuah
instance (keturunan) dari class. Variabel dan method diketahui sebagai Variable instance dan
method instance. Semua atribut / variabel yang ada di dalam kelas bisa kita panggil di kelas
yang lain menggunakan objek. Untuk membuat objek di java, bisa kita menggunakan
perintah keyword new, untuk memanggil atribut yang ada di dalam sebuah kelas kita
menggunakan titik (.). Variabel / atribut, method yang dipanggil via objek,hanya yang di
deklarasikan dalam kelas.

Cara membuat objek untuk memanggil variabel yang ada dalam kelas :

NamaKelas objek = new NamaKelas();

Objek.namaAtribut;

Objek.namaAtribut = value;

Contoh sebuah Objek:

class panggil_mobil{

private Mobil m;

private String nama;

16
private String jenis;

private String warna;

private String merk;

4. Method
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta
berbagai operasi yang dapat dilakukan objek sepanjang hidupnya. Metode memiliki 4 (empat)
bagian dasar :

· Nama metode

· Tipe Objek atau tipe primitive yang dikembalikan metode.

· Daftar parameter.

· Badan atau isi metode

Tiga bagian pertama mengindikasikan informasi penting tentang metode itu sendiri. Dengan
kata lain, nama metode tersebut = metode lain dalam program.

Di dalam Bahasa Pemrograman Java terdapa dua buah jenis method, yaitu :
1. Function

Merupakan Method yang memiliki nilai balik bila method tersebut di panggil, cara
pembuatannya dengan menentukan nilai baliknya, lalu menentukan Method nya. Method
function hanya menghasilkan 1 value, di deklarasikan hanya 1 perintah dan di ikutin
menggunakan tipedata serta diikuti nama function nya, sebuah function untuk menghasilkan
nilai(value).

Contoh :

public class Orang {


String nama ;

String AmbilNama() {
// untuk mengembalikan nilai

17
return nama ;
}
}
Method AmbilNama merupakan sebuah Fungsi karena mengembalikan nilai String.

Dalam sebuah Method Fungsi untuk mengembalikan nilainya harus menggunakan


kata kunci return, dan di ikuti dengan nilai yang dikembalikannya. untuk mengambil nilai
balik dari Fungsi Sebagai berikut :

Orang orang = new Orang() ;


orang.nama = "Idriez Gienanjair" ;

//Mengambil nilai Fungsi


String nama = orang.AmbilNama() ;

2. Prosedure

Prosedure merupakan Method yang tidak memiliki nilai balik, Cara pembuatannya sama
dengan Function, tapi nilai baliknya menggunakan kata kunci void. Method procedure di
deklarasikan dengan menggunakan keyword void dan diikuti nama pricedure nya. Dapat
menjalankan lebih dari satu perintah.
Contoh :

public class Orang {


String nama ;

void HapusNama() {
nama = "" ;
}
}
Method Hapus Nama merupakan sebuah Prosedur karena tidak mengembalikan nilai.

18
5. Parameter

Parameter adalah Data yang dapat ditambahkan dari luar Method, contoh : ketika kita
membuat sebuah Method untuk mengubah nama pada kelas Orang, Oleh karena itu kita kita
membutuhkan sebuah Parameter baru untuk menggantikan nama tersebut. Contoh Parameter
sebagai berikut :

public class Orang {


String nama ;

//Method dengan Parameter


void UbahNama(String NamaBaru) {
nama = NamaBaru ;
}

String AmbilNama() {
return nama ;
}

void HapusNama() {
nama = "" ;
}
}

Contoh penggunaanya :

Orang orang = new Orang() ;


orang.UbahNama("Idriez Gienanjar")
;
String nama = orang.AmbilNama();

Saat kode diatas dieksekusi maka variabel nama akan bernilah "Idriez Gienanjair", sesuai
nama baru yang telah ditambahkan melalui Method UbahNama(NamaBaru) ;

19
Dalam sebuah Method dapat memiliki satu atau lebih Parameter, dan untuk menambahkan
Parameter, Pisahkan Parameter menggunakan koma ( , ). Berikut Contohnya :

public class Orang {

String nama,kota ;

//Method dengan 2 Parameter


void UbahData(String NamaBaru, String KotaBaru ) {
nama = NamaBaru ;
kota = KotaBaru ;
}

String AmbilNama() {
return nama ;
}

void HapusNama() {
nama = "" ;
}
}

Contoh Penggunaannya :

Orang orang = new Orang() ;


orang.UbahData("Idriez Gienanjar" , "Cirebon") ;

Jika kode diatas di eksekusi, maka variabel nama akan bernilai "Idriez Gienanjair"
dan variabel kota akan bernilai "Cirebon".

20
6. Package

Package digunakan untuk mengelompokkan atau mengatur letak sebuah class di java.
Package berupa folder atau sub folder yang berada di projek aplikasi java kita.

Memanggil kelas dari file beda package

a. Untuk menggunakan (memanggil) kelas yang berbeda package, maka


perlu kasih tahu letak package alamat kelas yang kita panggil.
b. Untuk menggunakan atau memanggil kelas yang berbeda letak package
nya, perlu di import kelas nya alamat package nya di setai file class nya.
c. Gunakan keyword :
Import namaPackage.subPackage.namaKelas.
Contoh : import informasi.data.Mahasiswa;

Berikut adalah contoh program package mencari gaji karyawan berdasarka golongan,

Super Class (karyawan)

package karyawan;

/**

* @author USER

*/

import karyawan.gol1;

import karyawan.gol2;

import karyawan.gol3;

import javax.swing.*;

public class karyawan

21
public static void main(String[]args)

do

Intpil =
Integer.parseInt(JOptionPane.showInputDialog("*******KARYAWAN*******\n\n1.
Golongan 1\n2. Golongan 2\n3. Golongan 3\n4. Keluar\n\nMasukkan Golongan Anda [1..3] :
"));

switch(pil

case 1:

gol1 golongan = new gol1();

golongan.gaji();

break;

case 2:

gol2 golongan2 = new gol2();

golongan2.gaji();

break;

case 3:

gol3 golongan3 = new gol3();

golongan3.gaji();

break;

case 4:

22
System.exit(0);

while(true);

Sub Class (Golongan 1)

import javax.swing.*;

public class gol1 {

public static void gaji()

float gaji = 20000000;

float kurs = gaji/9000;

JOptionPane.showMessageDialog(null,"(((((GOL1)))))\nGaji = Rp 20.000.000,-\nKurs dalam


dolar = $"+kurs);

Sub Class (Golongan 2)

import javax.swing.*;

public class gol2

public static void gaji()

23
float gaji = 15000000;

float kurs = gaji/9000;

JOptionPane.showMessageDialog(null,"(((((GOL2)))))\nGaji = Rp 15.000.000,-\nKurs dalam


dolar = $"+kurs);

Sub Class (Golongan 3)

import javax.swing.*;

public class gol3 {

public static void gaji()

float gaji = 10000000;

float kurs = gaji/9000;

JOptionPane.showMessageDialog(null,"(((((GOL3)))))\nGaji = Rp 10.000.000,-\nKurs dalam


dolar = $"+kurs);

Dari kesimpulan di atas ditampilkan hasil dari gaji karyawan berdasarkan


golongannya, program ini menggunakan ( import javax.swing.*;) yaitu untuk menampilkan
textbox pada saat menjalankan program. Dengan menginputkan pilihan-pilihan yang
disediakan di textbox, maka kita dapat mengetahui hasil dari gaji karyawan menurut
golongan masing-masing.

24
7. Keyword This

Jika diartikan kata this ke dalam bahasa indonesia yaitu berarti "ini". Dan keyword this
ini digunakan di dalam pemrograman yaitu biasanya digunakan menunjukkan bahwa atribut
class yang saat ini di akses atau yang sedang digunakan. Penggunaan keyword “this” yaitu
digunakan untuk mengakses kelas itu sendiri. Biasanya digunakan untuk mengakses atribut
pada kelas.

Membuat This:

Class namaKelas{

String nama;

Void cariNama (String nama){

$this.nama = nama;

Contoh This;

// Deklarasi kelas

class Warna {

// Deklarasi variabel kelas (data field)

int merah = 7;

static double biru = 2;

// Deklarasi metoda

void setMerah(int merah) {

this.merah = merah;

25
}

// Deklarasi metoda static

static void setBiru( double biru) {

Warna.biru = biru;

Misalnya c1 adalah variabel acuan yang mengacu ke obyek kelas Warna. Memanggil
metoda menggunakan pernyataan c1.setMerah(5) sama dengan mengeksekusi c1.merah = 5,
dimana kata kunci this diganti dengan c1. Baris nomor 10 adalah pernyataan pemberian yaitu
memberikan nilai parameter merah ke data field merah dari obyek pemanggil (misalnya c1).
Sedangkan di baris nomor 15, pernyataan tersebut mempunyai arti bahwa nilai di parameter
biru diberikan ke data field statik biru dari kelas Warna.

8. Akses Modifier (Hak akses)

Di bahasa JAVA sendiri ada 4 jenis access modifier yang dapat digunakan :

1.Public

Access modifier public mempunyai hak akses paling luas dibanding yang lainnya.
Karena aksesnya sangat luas, maka access modifier ini biasanya digunakan untuk method
setter getter sesuai konsep OOP.

public class Hewan {

private int jumlahKaki;

private String namaHewan;

public int getJumlahKaki() {

return jumlahKaki;

26
public void setJumlahKaki(int jumlahKaki) {

this.jumlahKaki = jumlahKaki;

public String getNamaHewan() {

return namaHewan;

public void setNamaHewan(String namaHewan) {

this.namaHewan = namaHewan;

2. Protected

Access modifier protected biasanya digunakan untuk mewariskan variabel yang ada di
super class terhadap child class.

public class User{

protected String nama;

protected String jabatan;

3. No Access Modifier (Default)

Sesuai namanya, hak akses yang satu ini tidak perlu dituliskan di method/variabelnya.
Dengan hak akses ini, variabel/method dapat diakses dari class lain asalkan masih dalam satu
package yang sama.

27
public class Kendaraan {

int jumlahRoda;

String warna;

4. Private

Access modifier private bersifat tertutup. Sesuai dengan konsep OOP Encapsulation,
maka setiap variabel wajib untuk dilindungi hak aksesnya secara langsung dari luar. Oleh
karena itu, variabel diberikan hak akses private dan untuk melakukan pengaksesan/perubahan
data digunakan setter getter.

public class Hewan {

private int jumlahKaki;

private String namaHewan;

9. Overloading

Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class


mempunyai 2 atau lebih method dengan nama yang sama, yang membedakan adalah
parameternya. Bisa juga Method sama jumlahnya, namun tipe data nya berbeda, inti pokok
nya tidak boleh sama persis, bila ada yang berbeda di parameter nya, maka itu diperbolehkan.

Pada method overloading perbedaan parameter mencakup :

a. Jumlah parameter
b. Tipe data dari parameter

28
c. Urutan dari tipe data parameter
Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini
contoh Class yang melakukan Overloading.

public class ContohOverloading {

public void jumlah (int a, int b){

System.out.println("Jumlah 2 angka ="+ (a + b));

//oveloading perbedaan jumlah parameter

public void jumlah (int a, int b, int c){

System.out.println("Jumlah 3 angka =" + (a + b + c));

//overloading perbedaan tipe data parameter

public void jumlah (double a, int b){

System.out.println("Jumlah 2 angka (double+int) = "+ (a + b));

//overloading perbedaan urutan tipe data parameter

public void jumlah (int b, double a){

System.out.println("Jumlah 2 angka (int+double) = "+ (a + b));

29
Penggunaan pada class utama :

public class PenggunaanOverloading {

public static void main(String[] args) {


ContohOverloading co = new ContohOverloading();
co.jumlah(83,32);
co.jumlah(34,454,432);
co.jumlah(34.43,34);
co.jumlah(28,33.23);
}
}

10. Constructor

Constructor adalah suatu method , yang namanya menyerupai nama class yg ditempati
oleh constructor itu sendiri. gunanya , untuk menginisialisasi jika class tersebut dijadikan
object. Constructor memiliki parameter dan dapat juga di overloading.

Sifat construktor :

· Nama konstruktor sama dengan nama class

· Tidak memiliki nilai balik dan tidak boleh ada kata kunci void

Memanggil Constructor

Namakelas objek = new NamaConstructor();

NamaKelas objek = new NamaConstructor(“Parameter”);

Berikut ialah contoh sederhananya.

* Konstruktor

*/

30
public class BelajarKonstruktor

public static void main(String[] args)

// Buat Objek dari class Percetakan

// Dengan membuat objek dari class Percetakan berarti,

// sekaligus memanggil konstruktor dari class tersebut.

Percetakan cetak = new Percetakan();

// Buat Objek dari class Belajar

Belajar pelajar = new Belajar(3, "Saya belajar Konstruktor di Java");

class Percetakan

// Konstruktor class Percetakan

public Percetakan()

System.out.println("Hello World!");

31
class Belajar

// Konstruktor dengan parameter

public Belajar(int a, String str)

for(int x = 1; x <= a; x++)

System.out.println(str);

-Overloading konstruktor

Overloading konstruktor merupakan suatu mekanisme pembuatan konstruktor yang


memiliki bentuk lebih dari satu. Dalam hal ini pembeda antara satu konstruktor dengan
konstruktor yang lain berupa jumlah parameter atau tipe parameter

Berikut contoh pengimplementasian Class, Method, Atribut, Constructor:

package TUGAS1;

/**

* @author Anita

*/

public class Anita { //nama class

// deklarasi atribut

String hidung;

32
String mata;

String warnakulit;

String rambut;

//construktor berisi parameter

public void set(String hidung, String mata, String warnakulit, String rambut) {

this.hidung = hidung;

this.mata = mata;

this.warnakulit = warnakulit;

this.rambut = rambut;

//method mencetak

public void lihat() {

System.out.println("Ciri - Ciri Fahmi" + " \n");

System.out.println("Hidung : " + hidung);

System.out.println("Mata : " + mata);

System.out.println("Warna kulit : " + warnakulit);

System.out.println("Rambut : " + rambut);

// pembuatan object

class ciri {

33
public static void main(String[] args) {

Anita AB = new Anita();

AB.set("Kecil", "Sipit", "Sawo Matang", "Pendek");

AB.lihat();

Contoh pengimplementasian Overloading Constructor pada penghitungan Luas Bangun Datar

package TUGAS1;

/**

* @author Anita

*/

public class BANGUN_DATAR {

// deklarasi atribut

int sisi1, sisi2;

int panjang;

int lebar;

double alas;

double tinggi;

//overload konstruktor

//Luas persegi

34
public BANGUN_DATAR(int sisi) {

this.sisi1 = sisi;

System.out.println("Luas Persegi = " + sisi * sisi);

//Luas persegi panjang

public BANGUN_DATAR(int panjang, int lebar) {

this.panjang = panjang;

this.lebar = lebar;

System.out.println("Luas Persegi Panjang = " + panjang * lebar);

//Luas segi tiga

public BANGUN_DATAR(double alas, double tinggi) {

this.alas = alas;

this.tinggi = tinggi;

System.out.println("Luas Segi Tiga = " + alas * tinggi * 0.5);

//Luas trapesium

public BANGUN_DATAR(int sisi1, int sisi2, double tinggi) {

this.sisi1 = sisi1;

this.sisi2 = sisi2;

this.tinggi = tinggi;

System.out.println("Luas Trapesium = " + 0.5 * (sisi1 + sisi2) * tinggi);

35
// Pembuatan object

public static void main(String[] args) {

System.out.println("LUAS BANGUN DATAR"+"\n");

BANGUN_DATAR LuasPersegi = new BANGUN_DATAR(25);

BANGUN_DATAR LuasPersegiPanjang = new BANGUN_DATAR(12, 13);

BANGUN_DATAR LuasSegitiga = new BANGUN_DATAR(3, 12);

BANGUN_DATAR LuasTrapesium = new BANGUN_DATAR(2, 5, 14);

Contoh pengimplementasian Overloading Method pada Operasi Matematika

package TUGAS1;

/**

* @author Anita

*/

public class OPERASI_MTK {

//overloading method

//perkalian

public int OPERASI(int A, int B, int C) {

return (A*B*C);

36
//penjumlahan

public int OPERASI(int A,int B,int C,int D,int E) {

return (A+B+C+D+E);

//pembagian

public int OPERASI(int A, int B) {

return (A/B);

// pembuatan object

class HITUNG{

public static void main(String[] args) {

OPERASI_MTK MTK = new OPERASI_MTK();

System.out.println("OPERASI MTK OVERLOAD METHOD"+"\n");

System.out.println("Operasi Perkalian = "+MTK.OPERASI(3, 4, 5));

System.out.println("Operasi Penjumlahan = "+MTK.OPERASI(2, 4, 6, 7, 9));

System.out.println("Operasi Pembagian = "+MTK.OPERASI(6, 2));

37
11. Keyword Static

Keyword Static di java digunakan untuk mengakses member baik variable ataupun
method ( prosedur atau fungsi ) pada class tertentu tanpa harus membuat suatu objek dari
class itu. Umumnya untuk mengakses member dari kelas lain kita harus membuat objek kelas
itu tapi dengan menggunakan keyword static kita dapat langsung menggunakan member
kelas lain. Keyword static bisa digunakan untuk variable ataupun method dan nested class
(inner class) atau kelas dalam kelas. Atribut (variabel) method, dan nested class (inner class)
yang diberi keyword static, maka dapat langsung di akses tanpa membuat objek nya, data
yang akan kita ambil juga mesti diubah menjadi static agar kita bisa mengakses data tersebut.

Seperti contoh code dibawah ini.

public class StaticDemo {


int x;
int y;
int hasil;

int jumlah(){
hasil = x + y;

return hasil;
}
}

public class RunStaticKu {


public static void main(String args[]){
StaticDemo a = new StaticDemo();

a.x = 4;
a.y = 5;

System.out.println("Hasil penjumlahan : "+a.jumlah());


}

38
}

Kita ketahui bahwa code diatas terdapat 2 kelas, pada kelas StaticDemo terdapat 3
variabel dan 1 method. Pada kelas RunStaticKu terdapat main (program utama) dan akses ke
kelas StaticDemo. Untuk mengkakses Kelas StaticDemo, Kelas RunStaticKu harus membuat
objek dari kelas StaticDemo dengan perintah.

StaticDemo a = new StaticDemo();</blockquote>


Dengan perintah ini, maka kelas RunStaticKu dapat mengakses member yang ada
pada kelas StaticDemo, dengan perintah
a.jumlah();

atau

a.x = 4;
a.y = 5;

Nah dengan keyword static, kita tidak harus membuat objek kelas StaticDemo dengan
perintah

StaticDemo a = new StaticDemo();


Dengan static keyword, kita cukup memanggil misalkan variable x dengan perintah
StaticDemo.x = 5;
Contoh jelasnya bisa dilihat di code ini :

public class StaticDemo {


static int x;
static int y;
static int hasil;

39
static int jumlah(){
hasil = x + y;

return hasil;
}

public class RunStaticKu {


public static void main(String args[]){

StaticDemo.x = 4;

StaticDemo.y = 5;

System.out.println("Hasil penjumlahan : "+StaticDemo.jumlah());


}
}

Kelihatan kan tanpa harus membuat objek, kita dapat mengakses langsung kelas
StaticDemo di kelas RunStaticKu. Kelemahannya kita tidak bisa menggunakan keyword
“this” bila variable dibuat dengan keyword static.

12. Encapsulation

Dalam pemrograman Java yang berorientasi murni Object ini, program hanya dipusatkan
pada aspek internal tidak melihat aspek ekternal masing-masing Object, sehingga pembuatan
program tidak perlu memikirkan terlalu susah, bagaimana program berjalan. Hal ini yang
disebut dengan Encapsulation atau data dan perilaku menjadi dalam satu program.
Contoh program memakai konsep encapsultation ini adalah program hak akses. Masing-
masing data member memakai hak akses baik private, public maupun protected.

40
Karena itu dibutuhkan yang disebut dengan package atau paket. Paket adalah bagian
implicit standar Java untuk mengelompokan class dengan interface menjadi suatu unit, yaitu
koleksi dari class dengan nama tertentu. Tujuan mengelompokkan class dalam paket adalah
memudahkan dalam menambahkan class ke dalam program. Dengan bergitu penerapan hak
akses terhadap suatu variable dan Object.

Enkapsulasi data dapat dilakukan dengan cara:


1. Mendeklarasikan instance variable sebagai private
2. Mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut

Proses Encapsulation:
a. Deklarasikan attributnya menggunakan hak akses private
b. Buatlah 2 method (per attibut) untuk mengambil value attibut (variabel) dan untuk
mengubah/modifikasi value dari attibut (variabel)

Fungsi Encapsulation:
a. Bisa digunakan untuk melalukan sebuah perintah tertentu sebelum method dijalankan.
b. Di dalam method, kita dapat melakukan control apapun sebelum data di simpan.
c. Biasanya digunakan untuk melakukan validasi didalam method tersebut.
d. Lebih secure, karena attibutnya di bungkus kedalam suatu method dan di method kita bisa
lebih leluasa melakukan modifikasi perintah tertentu.

Contoh Encapsulation:

public class Mobil{

private String nama;


private String jenis;
private String merk;
private String warna;

public String getNama() {


return nama;
}

41
public void setNama(String nama) {
this.nama = nama;
}

public String getJenis() {


return jenis;
}

public void setJenis(String jenis) {


this.jenis = jenis;
}

public String getMerk() {


return merk;
}

public void setMerk(String merk) {


this.merk = merk;
}

public String getWarna() {


return warna;
}

public void setWarna(String warna) {


this.warna = warna;
}

public Mobil {
System.out.println("Memanggil class Mobil. Ini adalah Constructor");
}

42
Pada program diatas, kita bisa lihat terdapat dua model program (getXX dan setXX).
get sendiri berfungsi untuk mengambil data, sedangkan set berfungsi untuk menambah data.
Pada encapsulation, Diwujudkan dalam bentuk class, dan didalam class sendiri terdapat
method yang memiliki hak akses tertentu terhadap enviroment/ lingkungkannya. Hak akses
ini disebut Acces Modifier. Yang terdiri dari private, protected, dan public.

private = Memberikan hak akses hanya kepada class tersebut.

protected = Memberikan hak akses kepada anggota classnya dan turunannya.

public = memberikan hak akses kepada property dan method agar dapat digunakan di luar
class tersebut.

13. Java Beans

Java Beans Merupakan implementasi dari encapsulation, bedanya hanya java beans sudah
di set dalam pembuatan methodnya, menggunakan getNamaAtribut (untuk mengambil data)
dan setNamaAtribut (untuk memodifikasi data). Kecuali untuk attibut tipe data boolean,
menggunakan isiNamaAtribut (untuk ambil atribut) dan setNamaAtribut (memodifikasi
atribut) untuk pembuatan methodnya. Dalam pembuatan atributnya sama seperti
encapsulation, semua atribut dibuat menggunakan hak akses private.

14. Inheritance

Pewarisan merupakan salah satu karakteristik dari OOP. Mendefinisikan class


berdasarkan class yang ada disebut penurunan. Class baru atau class turunan berhubungan
langsung dengan class diatasnya. Class asal disebut superclass.Suatu class dapat mewariskan
atribut dan method kepada class lain (subclass), serta membentuk class hierarchy.Penting
untuk Reusability. Menggunakan key word EXTENDS.
Inheritance merupakan suatu proses menurunkan sifat (atribut,method) dari kelas utama
ke kelas lain nya, atau bisa dibilang kelas orang tua mewarisi atribut dan method ke suatu

43
kelas anaknya. Setiap kelas utama (orang tua) dapat mewarisi lebih dari satu kelas anak.
Namun, setiap kelas anak, hanya dapat mewarisi satu kelas orang tua.
Contoh kelas Orang Tua:
Public class OrangTua{
Public void makan(){
System.out.println(“Makan lauk sate”)
}
}

Contoh kelas Anak:


Public class Anak extends OrangTua{
//maka semua sifat kelas Orang Tua (method makan)
Sudah diwarisi ke kelas anak.
}

Contoh kasus dibawah ini adalah telepon merupakan alat yang menjadi inspirasi
dibuatnya HP. Dengan beberapa fungsi tambahan. Disini fungsi tambahannya hanya
melakukan sms. Anda dapat mengembangkan dengan fungsi infrared, Bluetooth, kamera, 3G
dan lain- lain.

Telepon

Berbicara()

HP

Berbicara()
SMS()

Contoh Programnya:

class telepon{ // super class


void berbicara(){

44
System.out.println(“Tekan nomor tujuan, panggil”);
System.out.println(“Berbicara dengan lawan bicara”);
System.out.println(“Setelah selesai, tutup”);
}
}

class HP extends telepon{ //subclass dengan pewarisan superclass dari telepon


void SMS(){
System.out.println(“Ketik pesan yang hendak dikirimkan”);
System.out.println(“Kirim ke nomor yang dituju”);
System.out.println(“Tunggu balasan”);
}

public static void main(String[] args){


HP handphone = new HP();
System.out.println(“Fungsi dasar telepon”);
handphone.berbicara();
System.out.println(“Fungsi baru pada telepon tanpa kabel”);
handphone.SMS();
}

15. Overriding dan super

Overriding adalah sebuah fungsi atau mathod dari superclass (kelas induk) yang ditulis
kembali pada subclassnya (kelas anak), ada beberapa aturan pada fungsi Overriding yang
perlu kalian ketahui:

Parameter pada fungsi atau mothod overriding di subclass/kelas anak harus sama dengan
parameter yang terdapat pada superclass/kelas induka. Aturan hak akses pada fungsi
overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method atau
fungsi pada class induk.

45
Misalnya pada contoh berikut ini kita mempunyai 2 buah class yaitu class hewan
(superclass) dan class karnivora (subclass), pada program tersebut class karnivora mewarisi
semua sifat pada class hewan, jadi semua atribut yang terdapat pada class hewan bisa di akses
oleh class karnivora.

Untuk persiapan, pada class hewan secara default sudah terpasang beberapa atribut yang
diperlukan seperti variable dan method. dan pada class karnivora juga, terdapat sebuah
instance atau objek dari class tersebut.

//Superclass/Class Induk

class hewan{

//Variable (Default)

String jenis = "Kucing";

int umur = 3;

//Method Get (Default)

String getJenis(){

return jenis;

int getUmur(){

return umur;

//Subclass/Kelas Anak

public class karnivora extends hewan{

public static void main(String[] args){

46
karnivora data = new karnivora();

Pada souce code tersebut, class kanivora mewarisi semua sifat yang ada pada class
hewan, jika kita membuat variable atau method pada class karnivora dengan nama yang sama
seperti pada class hewan, lalu mengubah nilainnya, seperti berikut ini:

public class karnivora extends hewan{

String jenis = "Anjing";

int umur = 5;

public static void main(String[] args){

karnivora data = new karnivora();

System.out.println("Jenis Hewan: "+data.getJenis());

System.out.println("Usia Hewan: "+data.getUmur());

@Override

String getJenis(){

return jenis;

@Override

int getUmur(){

return umur;

47
}

Contoh Penggunaan Method Overriding pada Java

Hasil yang ditampilkan adalah "Anjing" dan 5, bukan "Kucing" dan 3, itu karena
program secara otomatis hanya akan menjalankan fungsi yang terdapat pada classnya sendiri
terlebih dahu.

a. Penggunaan Kata Kunci super pada Java

Sebelumya kita sudah mengetahui apa itu Overriding pada java, pada program
sebelumnya jika kita menggunakan nama method yang sama dengan yang ada pada
superclass kita, saat program dijalankan maka fungsi yang berada pada classnya sendiri lah
yang akan dijalankan lebih dulu. Dengan menggunakan kata kunci super, kita dapat
mengakses nilai yang berada pada superclass/kelas induk walaupun nama variable atau
methodnya sama, contohnya kita bisa menggunakan kata kunci super pada sebuah variable,
seperti berikut ini

public class karnivora extends hewan{

String jenis = "Anjing";

int umur = 5;

public static void main(String[] args){

karnivora data = new karnivora();

System.out.println("Jenis Hewan: "+data.getJenis());

System.out.println("Usia Hewan: "+data.getUmur());

@Override

String getJenis(){

48
return super.jenis;

@Override

int getUmur(){

return super.umur;

16. Polymorphism

Polymorphism, suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu


keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon
terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Atau Polymorphism
dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method,
yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga
memiliki kelakuan yang berbeda.

Polymorphism dapat disamakan dengan Method Overloading, dimana di dalam


sebuah class terdapat beberapa method dengan nama sama. Sebuah Method bernama
CetakData() yang misalnya berfungsi menampilkan data String, tentu tidak bisa menangani
masukan berupa data numerik, boolean, ataupun karakter, demikian juga sebaliknya. Solusi
yang bisa dilakukan adalah dengan menyediakan beberapa Method CetakData() yang akan
menangani setiap tipe data, sehingga data apapun yang diberikan sebagai parameter tetap bisa
diproses. Polymorphism pada konsep Object Oriented Programming merupakan proses untuk
merepresentasikan satu bentuk ke dalam banyak bentuk. Ini mungkin terdengar sangat
membingungkan, tapi dengan coding, semuanya akan jelas.

Contoh Polymorphism:

Untuk mudahnya, misalkan anda menulis kode seperti ini:

49
public class Manusia {

void makan(){

void tidur(){

void bergerak(){

Pada kode di atas, objek Manusia dapat melakukan 3 jenis aktivitas yaitu makan, tidur
dan bergerak.

Namun, perlu diingat, aktivitas itu bisa dilakukan juga oleh objek sub class dari class
Manusia ataupun class apa saja yang di atasnya terdapat class Manusia yang terkait dalam
hirarki inheritance.

Selanjutnya perhatikan kode di bawah ini:

public class Siswa extends Manusia {

public class Test {

public static void main(String[] args) {

Siswa siswa_A = new Siswa();

50
Pada kode di atas, karena class Siswa extends dari class Manusia, maka siswa juga
adalah manusia, atau Siswa IS-A Manusia, dan objek siswa ini bisa juga makan, tidur dan
bergerak.

Kemudian ketika objek siswa dibuat dengan pernyataan:

Siswa siswa_A = new Siswa();

Artinya, siswa_A merupakan variabel referensi objek dengan tipe Siswa, demikian juga
dengan objek yang dibuat merupakan objek Siswa, dinyatakan dengan new Siswa();.

Namun, dengan polymorphism, tipe variabel referensi objek dan tipe objek bisa berbeda.

Contoh:

Manusia siswa_A = new Siswa();

Apa artinya?

Artinya, tipe variabel referensi merupakan Manusia, sedangkan objek yang dibuat
adalah tipe Siswa yang dinyatakan dengan new Siswa(). Dengan kata lain, ini adalah dua tipe
yang berbeda!.

Dengan menggunakan polymorphism maka tipe variabel referensi dari tipe objek
aktual bisa menggunakan super class.

Perhatikan kode simpel yang terdiri dari beberapa class berikut ini, maka anda akan
lebih memahami polymorphism.

//Superclass

public class Manusia {

void makan(){

System.out.println("Manusia makan");

void tidur(){

System.out.println("Manusia tidur");

51
}

void bergerak(){

System.out.println("Manusia bergerak");

public class Siswa extends Manusia {

@Override

void makan(){

System.out.println("Siswa makan");

@Override

void tidur(){

System.out.println("Siswa tidur");

@Override

void bergerak(){

System.out.println("Siswa bergerak");

public class Karyawan extends Manusia {

@Override

void makan(){

System.out.println("Karyawan makan");

52
}

@Override

void tidur(){

System.out.println("Karyawan tidur");

@Override

void bergerak(){

System.out.println("Karyawan bergerak");

public class Programmer extends Manusia{

@Override

void makan(){

System.out.println("Programmer makan");

@Override

void tidur(){

System.out.println("Programmer tidur");

@Override

void bergerak(){

System.out.println("Programmer bergerak");

53
}

public class Professor extends Manusia {

@Override

void makan(){

System.out.println("Professor makan");

@Override

void tidur(){

System.out.println("Professor tidur");

@Override

void bergerak(){

System.out.println("Professor bergerak");

//Class Test untuk mendemonstrasikan polymorphism

public class Test {

public static void main(String[] args) {

//Mendeklarasikan array dengan tipe Manusia.

//Dengan kata lain sebagai array yang memegang objek dari

//tipe manusia

Manusia [] manusia = new Manusia [4];

54
//Perhatikan, anda bisa menyimpan subclass apa saja dari

//tipe Manusia di dalam array Manusia.

manusia[0] = new Siswa();

manusia[1] = new Karyawan();

manusia[2] = new Programmer();

manusia[3] = new Professor();

//Sekarang, ketika anda melakukan loop

//terhadap array tersebut, dan memanggil method dari class Manusia

//maka setiap objek akan melakukan hal yang benar atau

//objek akan menggunakan method yang ada di classnya masing-masing!

for (int i = 0; i < manusia.length; i++){

manusia[i].makan();

manusia[i].tidur();

manusia[i].bergerak();

System.out.println();

Output:

Siswa makan

Siswa tidur

Siswa bergerak

55
Karyawan makan

Karyawan tidur

Karyawan bergerak

Programmer makan

Programmer tidur

Programmer bergerak

Professor makan

Professor tidur

Professor bergerak

Perhatikanlah kekuatan polymorphism ini, hanya dengan sedikit kode, anda bisa
melakukan banyak hal. Dan contoh di atas adalah merupakan array dari polymorphism.

17. Kelas Abstrak dan Method Abstrak

Pada Class abstract kita buat contoh seperti membuat superclass bernama LivingThing.
class ini mempunyai method tertentu seperti eat, sleep, dan walk. Akan tetapi, ada beberapa
method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh,
method walk. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia
sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti sapi
berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa,
itulah kenapa kita inginkan membuat superclass umum dalam hal ini. Kita dapat membuat
superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain
tidak. Class jenis ini yang disebut dengan class abstract.

56
Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di
atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang
mungkin pada object dari seluruh subclasses dalam class. Bentuk umumnya sebagai berikut :

abstract class namaKelas{

//badan kelas }

Ada beberapa aturan dalam penulisan class abstract :

Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.

Sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.

Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari
kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari
methodnya.

Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu
menulis ulang method yang abstrak.

Method dalam class abstract yang tidak mempunyai implementasi dinamakan method
abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh
class dan digunakan menggunakan kata kunci abstract. Bentuk umumnya sebagai berikut :

abstract tipe namaMethod(daftar-parameter);

contoh :

public abstract void someMethod();

Sekarang mari membuat contoh class abstract.

public abstract class LivingThing {

public void breath(){

System.out.println(“Living Thing breathing…”); }

public void eat(){

System.out.println(“Living Thing eating…”); }

57
/**

* abstract method walk

* Kita ingin method ini di-overridden oleh subclasses */

public abstract void walk(); }

Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override


method abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena
itu tidak dapat di-instantiate. Contohnya,

public class Human extends LivingThing

public void walk(){

System.out.println(“Human walks…”);

Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error
berikut ini,

Human.java:1: Human is not abstract and does not override abstract method walk() in
LivingThing

public class Human extends LivingThing

^1 error

Petunjuk penulisan program:

Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi
pada hirarki pemrograman berbasis object, dan gunakan subclassesnya untuk menyediakan
rincian dari class abstract.

58
18. Interface

a. Pengertian Interface

Interface adalah wadah dari kumpulan method yang bersifat abstrak atau tidak
memiliki implementasi. Sedangkan method yang didefinisikan di dalam interface tersebut
akan diimplementasikan oleh class yang mengimplementasikan interface tersebut. Interface
merupakan bentuk perluasan dari kelas abstrak. Selain method, interface juga dapat berisi
sekumpulan variable, namun variable yang dideklarasikan di dalam interface harus bersifat
final(nilainya tidak dapat diubah /konstan).

Sebagai contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja
sebagai tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut
selain harus memiliki method standard sebagai seorang manusia, juga harus memiliki method
yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat objek manusia yang
bekerja sebagai penyanyi, harus dibuat kelas yang merupakan turunan kelas manusia yang
meng-implementasikan interface penyanyi.

Ciri-ciri dari interface

Method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta
dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka
didefinisikan secara independent. Tidak bisa membuat instance atau objek baru dari sebuah
interface.

Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method.
Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class
memiliki salah satunya.

Beberapa perbedaan Interface dan Abstract Class :

– Interface hanya bisa mendefinisikan Method, tidak bisa mengimplementasikan, sedangkan


Abstrat Class bisa mengimplementasikan Method

– Interface tidak boleh terdiri dari field atau property, Abstract Class bias

– Interface tidak boleh terdiri dari konstruktor dan destruktor, sedangkan Abstract class bisa:

Perbedaan class abstract dan interface

59
Abstract Class dikatakan Abstract karena class tersebut tidak diimplementasikan
secara langsung di class tersebut. Melainkan diimplementasikan di class lain yang merupakan
class anak dari abstract class itu. Itulah sebabnya dinamakan abstract class. Berikut perbedaan
antara class abstract dengan interface:

Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface
tipe datanya hanya berupa konstanta

Method pada abstract class dapat berupa method kongkrit dan method abstract.
Sedangkan pada interface semua method harus berupa method abstract.

Interface Class jelas berbeda dengan abstract class. Karena class ini
mengimplementasikan methodnya di class lain dihubungkan dengan kata “implements”.
Method class interface tadi diimplementasikan dengan nama method yang sama di class yang
diimplementasikan.

Contoh Abstract Class :

public abstract class MahlukHidup {

protected boolean BisaTerbang = false;

protected String Nama;

abstract void bernafas ( ) ;

Dari contoh di atas dapat kita lihat bahwa pada abstract class Mahluk hidup terdapat 1
method yang tidak memiliki implementasi. Implementasi method bernafas nanti akan
diimplementasikan di class anak karena biasanya class abstract dapat menjadi class induk.
Contoh Interface Class :

interface Pekerjaan {

public void namaPekerjaan ( ) ;

Pada contoh interface class di atas dapat dilihat perbedaan antara abstract class dan
interface class. Interface class memiliki method yang tidak memiliki implementasi.

60
19. Pewarisan Interface

Sebuah kelas dapat mewarisi interface dengan menggunakan kata kunci implements,
dimana kelas tersebut dapat mewarisi beberapa interface.

Contoh Mewarisi Interface

public class NamaKelas

implements NamaInterface {

public void namaProsedur(){

// isi prosedur }

public TipeData namaFungsi(){

// isi fungsi }}

Pewarisan Antar Interface Interface dapat mewarisi interface lainnya menggunakan


kata kunci extends. Interface dapat mewarisi lebih dari satu interface. Contoh Pewarisan
Antar Interface

public interface NamaInterface

extends InterfaceLain, InterfaceDua {

// isi interface }Contoh Program Interface

Contoh Program 1

Kelas Interfacenya

public interface OpsiSenjata{

public void tembakSenjata();

public void reloadSenjata();

public void tukarSenjata(int kodesenjata);

61
Kelas yang mengimplementasi interface diatas

public class Senjata implements OpsiSenjata {

int pelor = 0;

String[] senjata= {“M532”, “Magnum”, “M16”, “AK47”, “Kriss”, “Panzerfaust”}; 4.


Senjata(int pelor){

this.pelor = pelor;

public void tukarSenjata(int kodesenjata) {

System.out.println(“Senjata tukar ke ke : ” + this.senjata[kodesenjata]);

public void tembakSenjata() {

if (pelor != 0) {

System.out.println(“Dor dor dor!”);

this.pelor = pelor -1;

} else {

System.out.println(“Sisa Pelor Habis”);

public void reloadSenjata() {

System.out.println(“Senjata di reload”);

this.pelor = pelor + 7;

62
Tester

public class Tester {

public static void main(String[] args) {

Senjata Gun1 = new Senjata(7);

Gun1.tembakSenjata();

Gun1.tembakSenjata();

Gun1.reloadSenjata();

Gun1.tukarSenjata(2);

63
BAB III PENUTUP
A. Kesimpulan

Object Oriented Programming (OOP) merupakan suatu pendekatan pemrograman


yang menggunakan object dan class. Dalam OOP, setiap bagian dari program adalah
object. Sebuah object mewakili suatu bagian program yang akan diselesaikan. Program
dalam OOP membungkus (encapsulate) data dan fungsi (atau prosedur) dalam suatu
obyek yang umumnya diimplementasikan sebagai suatu kelas (class). Dari penjelasan konsep
OOP di atas, maka dapat ditarik kesimpulan sebagai berikut :

1. OOP sebagai suatu santapan wajib bagi mahasiswa maupun developer sebagai
dasar untuk penguasaan bahasa pemrograman yang berorientasi objek, seperti Java.

2. Salah satu keuntungan program didefinisikan dengan konsep OOP adalah


adanya pengkapsulan (encapsulation) program dalam class dan object, dimana
programmer yang menggunakan class tidak perlu mengetahui isi dan jalannya class
secara detail, hanya perlu tahu bagaimana cara menggunakannya.

3. OOP bukanlah sekedar cara penulisan sintaks program yang berbeda, namun lebih
dari itu, OOP merupakan cara pandang dalam menganalisa sistem dan permasalahan
pemrograman. OOP menyediakan model dimana program merupakan kumpulan obyek yang
berinteraksi satu sama lain.

B. Saran

Setelah mengetahui pengertian dan seluk beluk semua tentang OOP, kita dapat
mengambil segi positif dari penggunaan OOP dalam pemrograman, walaupun masih terdapat
kelemahan-kelemahan OOP dalam pemrograman.

64
DAFTAR PUSTAKA

https://hendraenda.wordpress.com/2013/04/01/konsep-dasar-oop-pada-pemrograman-java/

http://mr-fahmi.blogspot.com/2014/03/mengenal-class-object-method-attribute.html

http://bahasa-pemrograman-java.blogspot.com/2014/03/class-di-java.html

https://www.mahirkoding.com/mengenal-access-modifier-pada-bahasa-java/

http://jagocoding.com/snippets/1152/Konstruktor_di_Java

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

https://defablogblog.wordpress.com/2017/01/26/kelebihan-dan-kekurangan-oop-dan-pdo/

https://www.wildantechnoart.net/2017/11/belajar-overriding-dan-super-pada-java.html

http://www.bahasajava.com/2017/11/polymorphism-dalam-belajar-bahasa-pemrograman-
Java.html

https://friskameilani001.wordpress.com/2016/03/03/class-abstract-dan-method-abstract/

https://www.petanikode.com/java-oop/

65

Anda mungkin juga menyukai