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.
Penyusun
2
DAFTAR ISI
Halaman Judul ................................................................................................................... 1
A. Kesimpulan .............................................................................................................. 64
B. Saran ........................................................................................................................ 64
4
BAB I PENDAHULUAN
A. Latar Belakang
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
5
3. Bagaimanakah konsep dasar dari OOP?
C. Tujuan
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
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.
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
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).
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.
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.
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.
package dasar;
// definisi atribut
String name;
int speed;
int healthPoin;
void run(){
12
}
boolean isDead(){
return false;
Berikutnya, buat class baru lagi bernama Game.java dan isi kodenya seperti ini:
package dasar;
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)”
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.
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 :
Objek.namaAtribut;
Objek.namaAtribut = value;
class panggil_mobil{
private Mobil m;
16
private String jenis;
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
· Daftar parameter.
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 :
String AmbilNama() {
// untuk mengembalikan nilai
17
return nama ;
}
}
Method AmbilNama merupakan sebuah Fungsi karena mengembalikan nilai String.
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 :
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 :
String AmbilNama() {
return nama ;
}
void HapusNama() {
nama = "" ;
}
}
Contoh penggunaanya :
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 :
String nama,kota ;
String AmbilNama() {
return nama ;
}
void HapusNama() {
nama = "" ;
}
}
Contoh Penggunaannya :
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.
Berikut adalah contoh program package mencari gaji karyawan berdasarka golongan,
package karyawan;
/**
* @author USER
*/
import karyawan.gol1;
import karyawan.gol2;
import karyawan.gol3;
import javax.swing.*;
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:
golongan.gaji();
break;
case 2:
golongan2.gaji();
break;
case 3:
golongan3.gaji();
break;
case 4:
22
System.exit(0);
while(true);
import javax.swing.*;
import javax.swing.*;
23
float gaji = 15000000;
import javax.swing.*;
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;
$this.nama = nama;
Contoh This;
// Deklarasi kelas
class Warna {
int merah = 7;
// Deklarasi metoda
this.merah = merah;
25
}
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.
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.
return jumlahKaki;
26
public void setJumlahKaki(int jumlahKaki) {
this.jumlahKaki = jumlahKaki;
return namaHewan;
this.namaHewan = namaHewan;
2. Protected
Access modifier protected biasanya digunakan untuk mewariskan variabel yang ada di
super class terhadap child class.
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.
9. Overloading
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.
29
Penggunaan pada class utama :
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 :
· Tidak memiliki nilai balik dan tidak boleh ada kata kunci void
Memanggil Constructor
* Konstruktor
*/
30
public class BelajarKonstruktor
class Percetakan
public Percetakan()
System.out.println("Hello World!");
31
class Belajar
System.out.println(str);
-Overloading konstruktor
package TUGAS1;
/**
* @author Anita
*/
// deklarasi atribut
String hidung;
32
String mata;
String warnakulit;
String rambut;
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
// pembuatan object
class ciri {
33
public static void main(String[] args) {
AB.lihat();
package TUGAS1;
/**
* @author Anita
*/
// deklarasi atribut
int panjang;
int lebar;
double alas;
double tinggi;
//overload konstruktor
//Luas persegi
34
public BANGUN_DATAR(int sisi) {
this.sisi1 = sisi;
this.panjang = panjang;
this.lebar = lebar;
this.alas = alas;
this.tinggi = tinggi;
//Luas trapesium
this.sisi1 = sisi1;
this.sisi2 = sisi2;
this.tinggi = tinggi;
35
// Pembuatan object
package TUGAS1;
/**
* @author Anita
*/
//overloading method
//perkalian
return (A*B*C);
36
//penjumlahan
return (A+B+C+D+E);
//pembagian
return (A/B);
// pembuatan object
class HITUNG{
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.
int jumlah(){
hasil = x + y;
return hasil;
}
}
a.x = 4;
a.y = 5;
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.
atau
a.x = 4;
a.y = 5;
Nah dengan keyword static, kita tidak harus membuat objek kelas StaticDemo dengan
perintah
39
static int jumlah(){
hasil = x + y;
return hasil;
}
StaticDemo.x = 4;
StaticDemo.y = 5;
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.
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:
41
public void setNama(String nama) {
this.nama = nama;
}
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.
public = memberikan hak akses kepada property dan method agar dapat digunakan di luar
class tersebut.
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
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 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:
44
System.out.println(“Tekan nomor tujuan, panggil”);
System.out.println(“Berbicara dengan lawan bicara”);
System.out.println(“Setelah selesai, tutup”);
}
}
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)
int umur = 3;
String getJenis(){
return jenis;
int getUmur(){
return umur;
//Subclass/Kelas Anak
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:
int umur = 5;
@Override
String getJenis(){
return jenis;
@Override
int getUmur(){
return umur;
47
}
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.
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
int umur = 5;
@Override
String getJenis(){
48
return super.jenis;
@Override
int getUmur(){
return super.umur;
16. Polymorphism
Contoh Polymorphism:
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.
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.
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:
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
void makan(){
System.out.println("Manusia makan");
void tidur(){
System.out.println("Manusia tidur");
51
}
void bergerak(){
System.out.println("Manusia bergerak");
@Override
void makan(){
System.out.println("Siswa makan");
@Override
void tidur(){
System.out.println("Siswa tidur");
@Override
void bergerak(){
System.out.println("Siswa bergerak");
@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");
@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
}
@Override
void makan(){
System.out.println("Professor makan");
@Override
void tidur(){
System.out.println("Professor tidur");
@Override
void bergerak(){
System.out.println("Professor bergerak");
//tipe manusia
54
//Perhatikan, anda bisa menyimpan subclass apa saja dari
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.
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 :
//badan kelas }
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 :
contoh :
57
/**
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
^1 error
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.
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.
– Interface tidak boleh terdiri dari field atau property, Abstract Class bias
– Interface tidak boleh terdiri dari konstruktor dan destruktor, sedangkan Abstract class bisa:
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.
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 {
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.
implements NamaInterface {
// isi prosedur }
// isi fungsi }}
Contoh Program 1
Kelas Interfacenya
61
Kelas yang mengimplementasi interface diatas
int pelor = 0;
this.pelor = pelor;
if (pelor != 0) {
} else {
System.out.println(“Senjata di reload”);
this.pelor = pelor + 7;
62
Tester
Gun1.tembakSenjata();
Gun1.tembakSenjata();
Gun1.reloadSenjata();
Gun1.tukarSenjata(2);
63
BAB III PENUTUP
A. Kesimpulan
1. OOP sebagai suatu santapan wajib bagi mahasiswa maupun developer sebagai
dasar untuk penguasaan bahasa pemrograman yang berorientasi objek, seperti Java.
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