Implementasi Polymorphism Pada Sistem Reservasi Tiket Pesawat
Nama : Rafaela Shyra Ashma' Ramadhani
NRP : 5025231217
Kelas : Pemrograman Berorientasi Objek - G
Tugas 12 - Pertemuan 12
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%.
Jawaban :
Source Code : GitHub
Penjalasan Kode :
Class Ticket
Ticket adalah kelas abstrak (abstract class) yang berfungsi sebagai superclass untuk semua jenis tiket. Kelas ini memiliki atribut baseFare, yang menyimpan tarif dasar tiket, dan dua metode abstrak, calculateFare() dan getDetails(). Metode-metode ini wajib diimplementasikan oleh subclass untuk menghitung tarif total tiket sesuai dengan kelas penerbangan dan memberikan detail tiket. Kelas ini menjadi fondasi umum untuk mengelola berbagai tipe tiket.
Class EconomyTicket
EconomyTicket adalah subclass dari Ticket yang mewakili tiket kelas ekonomi. Kelas ini mengimplementasikan metode calculateFare() dengan memberikan diskon sebesar 10% pada tarif dasar, yaitu baseFare * 0.9. Metode getDetails() memberikan deskripsi fasilitas tiket kelas ekonomi, seperti bagasi 20 kg dan makanan ringan. Kelas ini menunjukkan spesifikasi tiket untuk kategori paling terjangkau.
Class BusinessTicket
BusinessTicket adalah subclass dari Ticket yang mewakili tiket kelas bisnis. Kelas ini mengimplementasikan metode calculateFare() dengan menambahkan biaya sebesar 25% pada tarif dasar, yaitu baseFare * 1.25. Metode getDetails() menjelaskan fasilitas yang diberikan, seperti bagasi 30 kg, makanan premium, dan akses ke lounge. Kelas ini merepresentasikan tiket dengan tingkat kenyamanan menengah.
Class FirstClassTicket
FirstClassTicket adalah subclass dari Ticket yang mewakili tiket kelas First Class. Kelas ini mengimplementasikan metode calculateFare() dengan menambahkan biaya sebesar 50% pada tarif dasar, yaitu baseFare * 1.5. Metode getDetails() memberikan informasi tentang layanan mewah, termasuk bagasi 40 kg, makanan eksklusif, kursi tidur, dan akses lounge VIP. Kelas ini mencerminkan tiket dengan fasilitas premium tertinggi.
Class Paseenger
Passenger adalah kelas tambahan untuk mengelola biodata pemesan tiket, mencakup atribut name, phone, dan email. Kelas ini memiliki konstruktor untuk inisialisasi data dan metode toString() untuk menyusun informasi pemesan dalam format teks yang rapi. Kelas ini digunakan untuk menyimpan informasi pribadi pemesan yang ditampilkan dalam ringkasan pesanan.
Class TicketReservation
TicketReservation adalah kelas utama yang menjalankan keseluruhan sistem reservasi tiket. Kelas ini meminta biodata pemesan menggunakan input dari pengguna, memungkinkan pemesanan beberapa tiket dengan memilih jenis kelas penerbangan (ekonomi, bisnis, atau First Class), dan menambahkan tiket ke dalam daftar pesanan. Setelah selesai, program menampilkan ringkasan pesanan, termasuk biodata pemesan, detail setiap tiket, dan total biaya. Kelas ini bertindak sebagai penghubung antara pengguna dan sistem tiket, memberikan pengalaman reservasi yang interaktif.
Diagram Class :
Output :
Komentar
Posting Komentar