Polimorfisme dalam inheritance memungkinkan objek dari
subclass digunakan di mana pun objek superclass diharapkan, dan memungkinkan
metode yang sama untuk berperilaku berbeda tergantung pada kelas objek yang
memanggilnya. Polimorfisme memberikan fleksibilitas pada kode sehingga metode
yang sama bisa diimplementasikan secara berbeda di kelas yang berbeda, namun
tetap bisa dipanggil melalui referensi superclass.
Penjelasan Polimorfisme
Dalam inheritance, polimorfisme memungkinkan satu metode
yang sama di superclass di-override (ditimpa) di subclass untuk
memberikan perilaku yang sesuai dengan subclass tersebut. Ini memungkinkan kode
yang memanggil metode di superclass tetap bisa menggunakan metode dengan nama
yang sama di subclass. Ini mengurangi kebutuhan untuk menulis kode tambahan
untuk memeriksa tipe objek atau memanggil metode spesifik berdasarkan tipe.
Dengan polimorfisme:
- Kita
dapat menambah jenis display baru dengan mudah tanpa harus mengubah kode
yang memanggil display().
- Kode
menjadi lebih modular dan mudah dibaca karena menggunakan metode yang sama
(display()) namun sesuai konteks.
- Menghindari
kondisi if-else untuk memeriksa tipe Post, sehingga kode lebih bersih dan
ringkas.
Polimorfisme memudahkan penulisan kode yang fleksibel dan
mudah di-maintain dalam sistem yang mengandung hierarki kelas yang beragam.
Overriding
Overriding adalah fitur dalam pemrograman
berorientasi objek yang memungkinkan subclass untuk menyediakan implementasi
spesifik dari suatu metode yang sudah didefinisikan di superclass.
Ciri-ciri utama Overriding:
- Nama,
Parameter, dan Tipe Pengembalian yang Sama: Metode di subclass harus
memiliki nama, parameter, dan tipe pengembalian yang sama dengan metode di
superclass.
- Dukungan
Polimorfisme: Overriding memungkinkan penggunaan polimorfisme, di mana
objek dari subclass dapat diperlakukan sebagai objek dari superclass,
tetapi tetap menjalankan versi metode yang di-override di subclass.
- Annotations:
Dalam Java, keyword @Override biasanya ditambahkan sebelum metode yang di-override
untuk memastikan bahwa metode tersebut memang merupakan overriding dari
superclass. Ini membantu menghindari kesalahan penulisan atau penamaan
yang mungkin tidak cocok dengan metode di superclass.
Manfaat Overriding:
- Spesialisasi
Metode untuk Subclass: Subclass dapat memiliki metode dengan perilaku
khusus, yang mungkin tidak relevan bagi superclass.
- Pemanfaatan
Polimorfisme: Memungkinkan satu metode yang sama untuk berperilaku
berbeda sesuai tipe objek yang memanggilnya.
- Modular
dan Extensible: Dengan overriding, kode menjadi modular karena kita
tidak perlu memodifikasi kode superclass untuk mengubah perilaku dalam
subclass.
Contoh Studi Kasus Overriding: Sistem Pengelolaan
Kendaraan di Rental Mobil
Misalkan kita mengelola sistem rental mobil yang mendukung
beberapa jenis kendaraan seperti mobil biasa, truk, dan kendaraan mewah. Setiap
kendaraan memiliki cara yang berbeda dalam menghitung tarif sewa berdasarkan
jenisnya. Kita bisa menggunakan overriding untuk menyediakan metode calculateRentalCost()
yang spesifik untuk setiap jenis kendaraan.
1. Membuat Superclass Vehicle
java
class Vehicle {
protected double
baseRate;
this.baseRate
= baseRate;
}
public double calculateRentalCost(int
days) {
return
baseRate * days;
}
}
- Vehicle
memiliki metode calculateRentalCost() yang menghitung tarif berdasarkan
tarif dasar (baseRate) dikalikan dengan jumlah hari (days).
- Subclass
nanti akan meng-override metode ini untuk menyesuaikan tarif sesuai
jenis kendaraannya.
2. Menggunakan Overriding dalam Subclass Car, Truck, dan LuxuryCar
java
class Car extends Vehicle {
public Car(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Mobil biasa
tanpa biaya tambahan
return
baseRate * days;
}
}
class Truck extends Vehicle {
public Truck(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Truk
memiliki biaya tambahan untuk penggunaan berat
double heavyDutyFee
= 50.0;
return
(baseRate * days) + heavyDutyFee;
}
}
class LuxuryCar extends Vehicle {
public LuxuryCar(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Kendaraan
mewah memiliki tarif tambahan untuk layanan premium
double luxuryFee
= 100.0;
return
(baseRate * days) + luxuryFee;
}
}
- Car:
calculateRentalCost() menggunakan tarif dasar saja tanpa tambahan.
- Truck:
calculateRentalCost() menambahkan biaya heavyDutyFee karena truk
memerlukan biaya tambahan untuk penggunaan berat.
- LuxuryCar:
calculateRentalCost() menambahkan luxuryFee untuk layanan premium.
3. Menggunakan Polimorfisme dengan Overriding
Karena Car, Truck, dan LuxuryCar adalah subclass dari Vehicle,
kita bisa menggunakan polimorfisme untuk memanggil calculateRentalCost() pada
objek dari tipe Vehicle namun hasilnya sesuai dengan tipe objek aslinya.
java
public class Main {
public static void
main(String[] args) {
Vehicle myCar =
new Car(200);
Vehicle myTruck
= new Truck(300);
Vehicle myLuxuryCar
= new LuxuryCar(500);
// Output: Car
rental cost for 3 days: 600.0
// Output:
Truck rental cost for 3 days: 950.0
// Output:
Luxury Car rental cost for 3 days: 1600.0
}
}
Penjelasan:
Pada contoh ini:
- myCar.calculateRentalCost(rentalDays)
memanggil versi metode calculateRentalCost() di kelas Car, yang hanya
mengalikan tarif dasar dengan jumlah hari.
- myTruck.calculateRentalCost(rentalDays)
memanggil versi calculateRentalCost() di Truck, yang menambahkan heavyDutyFee.
- myLuxuryCar.calculateRentalCost(rentalDays)
memanggil versi calculateRentalCost() di LuxuryCar, yang menambahkan luxuryFee.
Materi
Sourcecode
Pengumpulan Tugas
Form Monitoring Tugas
Latihan :
Buatlah sistem reservasi tiket pesawat
yang mendukung tiga jenis kelas penerbangan:
- Ekonomi
- Bisnis
- First
Class
Setiap kelas penerbangan memiliki perhitungan tarif yang
berbeda-beda. Selain itu, setiap kelas juga memiliki kebijakan khusus, seperti
fasilitas tambahan, batas bagasi, atau layanan yang disediakan.
Struktur Kelas:
- Kelas
Ticket adalah kelas dasar atau superclass yang berfungsi sebagai kelas
umum untuk semua jenis reservasi tiket pesawat.
- Kelas
EconomyTicket, BusinessTicket, dan FirstClassTicket adalah subclass yang
mewarisi dari Ticket. Setiap subclass mengoverride metode calculateFare()
untuk menentukan tarif sesuai kelas penerbangan.
- Ketentuan
Diskon ticket
· EconomyTicket memberikan diskon 10%.
· BusinessTicket menambahkan biaya 25%.
· FirstClassTicket menambahkan biaya 50%.
64 komentar
komentarNama : Bastian Farandy
ReplyNRP : 05111740000190
Kelas : PBO A
Link : Fox and Rabbits project
Nama : Bobbi Aditya
ReplyNRP : 05111740000099
Kelas : PBO A
Link :ini linknya
Nama : Samuel Marcellinus
ReplyNRP : 05111740000134
Kelas : PBO A
Link : Link
Nama : Ifta Jihan N
ReplyNRP : 05111740000034
Kelas : PBO A
Link : Tugas
Nama : Sherly Rosa Anggraeni
ReplyNRP : 05111740000018
Kelas : PBO A
Link : Tugas
Nama: Indira Nursyamsina Hazimi
ReplyNRP: 05111740000082
Kelas: PBO A
Link: Tugass
Nama: Bima S. Ramadhan
ReplyNRP: 05111740000081
Kelas: PBO A
Link: click me
Nama: Reza Adipatria Maranatha
ReplyNRP: 05111740000186
Kelas: PBO A
Link: Link
Nama: Donny Fitrado
ReplyNRP: 05111740000171
Kelas: PBO A
Link: Link Tugas
Nama : Yuki Yanuar Ratna
ReplyNRP : 05111740000023
Kelas : PBO A
Link : Rabbit And Fox
Nama: Ayu Mutiara Sari
ReplyNRP: 05111740000149
Kelas: PBO A
Link: Rabbit Fox
Nama : Yudhistiro Adi Nugroho
ReplyNRP : 05111740000165
Kelas : PBO A
Link : Rabbit And Fox
Nama : Nitama Nurlingga Yotifa
ReplyNRP : 05111740000059
Kelas : PBO A
Link : The Foxes and Rabbits Simulator
Nama : Karina Soraya P
ReplyNRP : 05111740000003
Kelas : PBO - B
Link : Foxes and Rabbits
Nama: Paramastri Ardiningrum
ReplyNRP: 05111740000019
Kelas: PBO-B
Link: Membuat Foxes and Rabbits Simulator
Nama: Carlo Win Marshal
ReplyNRP: 05111740000098
Kelas: PBO-B
Link: Simulasi fox and rabbit https://enlightechtc.blogspot.com/2018/11/tugas-pbo-b-fox-and-rabbit.html
Nama: Satria Ade Veda Karuniawan
ReplyNRP: 05111740000130
Kelas: PBO - A
Link: Fox and Rabbit
Nama: Muhammad Fadhlan Min Robby
ReplyNRP : 05111740000123
Kelas : PBO - B
Link : RUbah dan SErigala
Nama : Isnaini Nurul KurniaSari
ReplyNRP : 05111740000010
Kelas: PBO-B
Link : Foxes and Rabbits Simulator
Nama : Zahrul Zizki Dinanto
ReplyNRP : 05111740000168
Kelas : PBO-B
Link : fox and rabbit
Nama : Mohammad Rizaldi Huzein Prastomo
ReplyNRP : 05111740000024
Kelas : PBO-B
Link : Link tugas
Nama : Hendra Ramadani
ReplyNRP : 05111740000055
Kelas : PBO-B
Link : Fox And Rabbit
Nama : Chaniyah Zulfa Mukhlishah
ReplyNRP : 05111740000115
Kelas: PBO-B
Link : Simulasi_Fox_And_Rabbit
Nama : Putri Endah Puspitasari
ReplyNRP : 05111740000039
KElas: PBO - B
Link : Foxes and Rabbits
Nama: Arino Jenynof
ReplyNRP: 05111740000096
Kelas: PBO B
Link: Fox and Rabbit
Nama: Vinsensius Yuda Pratama
ReplyNRP: 05111740000156
Kelas: PBO B
Link: Foxes and Rabbits Simulator
Nama : Wasilatul Dewi Ningrum
ReplyNRP : 05111740000004
Kelas : PBO B
Link : Foxes and Rabbits
Nama; Muhammad Naufal Refadi
ReplyNRP: 05111740000097
Kelas: PBO-A
Link: Fox and Rabbit
Nama: Muhammad Aufa Wibowo
ReplyNRP: 05111640000184
Kelas: PBO-A
Link: Fox and Rabbit
Nama: Annas Nuril Iman
ReplyNRP: 05111740000042
Kelas: PBO-B
Link: Fox and Rabbit
Nama: Ismail Arifin
ReplyNRP: 05111740007007
Kelas: PBO B
Link: fox and rabbit
Nama : M Thalut Nadhil Q
ReplyNRP : 05111740000143
Kelas : PBO-B
Link : Fox and Rabbit
Nama: Zico Ritonda Bahen
ReplyNRP: 05111740000064
Kelas: PBO A
Link: Link
Nama: Ghannie Wijaya
ReplyNRP: 05111640000048
Kelas: PBO-B
Link: Foxes and Rabbits Simulator
Nama : Yasinta Yusniawati
ReplyNRP : 05111740000054
Kelas : PBO B
Link : Link tugas
Nama: Mohammad Nafis Naufally
ReplyNRP: 05111640000038
Kelas: PBO B
Link: Di sini
Nama : Krisna Badru Wijaya
ReplyNRP : 05111740000048
Kelas : PBO B
Link : foxes and rabbits
Nama : Haikal Almaz Said
ReplyNRP : 05111740000068
Kelas : PBO A
Link : Fox and Rabbits Simulator
Nama :Puguh Santosa D
ReplyNRP :5116100049
Kelas :PBO-A
Link : Polymorphism
Fox and Rabbit
Nama :Lutfiyanti
ReplyNRP :05111740000036
Kelas :PBO-B
Link : Foxes And Rabbits
Nama : Atika Rizki Nurakhmah
ReplyNRP : 05111740000015
Kelas : PBO - A
Link : Foxes and rabbits
Nama : Timothyus Tanner
ReplyNRP : 05111740000103
Kelas : PBO-A
Link Tugas
Nama : Nandha Himawan
ReplyNRP : 05111740000180
Kelas : PBO A
Link : Foxes and rabbit
Nama: I Gede Agung Krisna Pamungkas
ReplyNRP: 05111740000135
Kelas: PBO A
Link: Simulator Fox dan Rabbit
Nama: Yemima Sutanto
ReplyNRP: 05111740000049
Kelas: PBO A
LINK: Fox and Rabbit Simulator
Nama : Arini Puspitasari
ReplyNRP : 05111740000040
Kelas: PBO-B
Link : Fox and Rabbit
Nama : Edgar Andrew hutauruk
ReplyNRP : 05111740000166
Kelas : PBO B
Link : Fox and Rabbit
ReplyNama :Hafidz Firman Asqalany
NRP : 05111740000195
Kelas: PBO A
Link :ini linknya
Nama :Ahmad Syauqi
ReplyNRP : 05111740000093
Kelas: PBO B
Link : Link
Nama : Fadhlan Aulia
ReplyNRP: 05111640000125
Kelas : PBO B
Link : Fox dan Rabbit
Nama : Chrisnady Anggaiswara
ReplyNRP: 05111640000153
Kelas : PBO B
Link : Fox n Rabbit
Nama : Budiman Akbar Radhiansyah
ReplyNRP : 05111740000179
Kelas : PBO A
Link : Link Tugas Fox and Rabbit
Nama: Elkana Hans Widersen
ReplyNRP: 05111740000127
Kelas: PBO A
Link: Fox and Rabbit
Nama: Moh. Iman Afandy
ReplyNRP: 05111740000129
Kelas: PBO B
Link: Tugas Fox and Rabbit
Nama: Nadia Hasna
ReplyNRP : 05111740000077
Kelas: PBO A
Link : Fox and Rabbit
Nama: Shawn Timothy Mulya Putra
ReplyNRP : 05111740000095
Kelas: PBO A
Link : jawaban
Nama: Akmal Darari Rafif B
ReplyNRP: 05111640000148
Kelas: PBO A
Link: https://darariakmal.blogspot.com/2018/11/tugas-7-pbo-fox-rabbit-simulator.html
Mohon maaf, seharusnya saya posting disini (Saya salah posting di kolom komentar PBO-Memperbaiki Struktur dengan Inheritance)
Nama : Fachry Amir
ReplyNRP : 05111740000084
Kelas : PBO B
Link : Tugas Foxes and Rabbits
Nama : Ahmad Yahya Abdul Aziz
ReplyNRP : 05111740000128
Kelas : PBO - A
Link : Fox and Rabbit
Nama : Muhammad Husni Ridhart Azzikry
ReplyNRP : 05111740000122
Kelas: PBO - B
Link : Fox and Rabbit
Nama : Muh. Shafwatallah Wahid
ReplyNRP : 05111740007002
Kelas: PBO - B
Link : Fox and Rabbit
Nama : Christine Amelia
ReplyNRP : 05111740000174
Kelas : PBO B
Link : https://chrstnamelia.blogspot.com/2018/12/tugas-pbo-b.html