TUGAS KELOMPOK
APLIKASI PENGELOLA KENDARAAN
OLEH :
I GEDE SATYA ARIYA SANGJAYA (2205551040) I DEWA GD DHARMA PAWITRA (2205551041)
MADE ANGGA DANAN JAYA (2205551086)
PROGRAM STUDI TEKNOLOGI INFORMASI FAKULTAS TEKNIK
UNIVERSITAS UDAYANA
2023
1. Kelas Abstrak “Kendaraan” :
abstract class Kendaraan { protected String merk;
protected int tahunProduksi;
public Kendaraan(String merk, int tahunProduksi) { this.merk = merk;
this.tahunProduksi = tahunProduksi;
}
public abstract double hitungNilaiJual();
}
Kode Program 1.1 Class Abstrak Kendaraan
Kelas abstrak "Kendaraan" memiliki atribut merk dan tahunProduksi yang digunakan untuk menyimpan informasi tentang merk kendaraan dan tahun produksinya. Selain itu, terdapat juga method abstrak hitungNilaiJual() yang tidak memiliki implementasi di dalam kelas tersebut. Method ini akan diimplementasikan oleh subclass-subclass dari "Kendaraan" untuk menghitung nilai jual kendaraan berdasarkan aturan yang berlaku.
2. Kelas Turunan “Mobil” :
import java.util.Calendar;
class Mobil extends Kendaraan { protected String warna;
public Mobil(String merk, int tahunProduksi, String warna) { super(merk, tahunProduksi);
this.warna = warna;
}
public double hitungNilaiJual() {
int tahunSekarang =
Calendar.getInstance().get(Calendar.YEAR);
int umur = tahunSekarang - tahunProduksi;
double nilaiJual = 8000000 - (umur * 50000);
return nilaiJual;
} // ...
}
Kode Program 1.2 Class Turunan Mobil
Class "Mobil" adalah subclass dari abstract class "Kendaraan" yang memiliki
atribut tambahan yaitu "warna". Class ini mengimplementasikan method
"hitungNilaiJual()" yang menghitung nilai jual mobil berdasarkan perhitungan tertentu menggunakan tahun produksi dan faktor penurunan nilai.
3. Kelas Turunan “Sedan” :
import java.util.Calendar;
class Sedan extends Mobil {
protected int kapasitasMesin;
public Sedan(String merk, int tahunProduksi, String warna, int kapasitasMesin) {
super(merk, tahunProduksi, warna);
this.kapasitasMesin = kapasitasMesin;
}
public double hitungNilaiJual() { int tahunSekarang =
Calendar.getInstance().get(Calendar.YEAR);
int umur = tahunSekarang - tahunProduksi;
double nilaiJual = 5000000 - (umur * 7500) - (kapasitasMesin * 2000);
return nilaiJual;
}
public void informasiSedan() {
System.out.println("Merk: " + merk);
System.out.println("Tahun Produksi: " + tahunProduksi);
System.out.println("Warna: " + warna);
System.out.println("Nilai Jual: " + hitungNilaiJual());
System.out.println("Kapasitas Mesin: " + kapasitasMesin);
} }
Kode Program 1.3 Class Turunan Sedan
Class "Sedan" adalah subclass dari class "Mobil" dengan tambahan atribut
"kapasitasMesin". Class ini mengimplementasikan method "hitungNilaiJual()"
untuk menghitung nilai jual sedan berdasarkan perhitungan yang melibatkan tahun produksi, faktor penurunan nilai, dan kapasitas mesin. Method "informasiSedan()"
mencetak informasi lengkap tentang sedan, termasuk merk, tahun produksi, warna, nilai jual, dan kapasitas mesin.
4. Kelas Turunan “SUV” :
import java.util.Calendar;
class SUV extends Mobil {
protected int kapasitasPenumpang;
public SUV(String merk, int tahunProduksi, String warna, int kapasitasPenumpang) {
super(merk, tahunProduksi, warna);
this.kapasitasPenumpang = kapasitasPenumpang;
}
public double hitungNilaiJual() { int tahunSekarang =
Calendar.getInstance().get(Calendar.YEAR);
int umur = tahunSekarang - tahunProduksi;
double nilaiJual = 8000000 - (umur * 50000) - (kapasitasPenumpang * 10000);
return nilaiJual;
}
public void informasiSUV() {
System.out.println("Merk: " + merk);
System.out.println("Tahun Produksi: " + tahunProduksi);
System.out.println("Warna: " + warna);
System.out.println("Nilai Jual: " + hitungNilaiJual());
System.out.println("Kapasitas Penumpang: " + kapasitasPenumpang);
} }
Kode Program 1.4 Class Turunan SUV
Class "SUV" adalah subclass dari class "Mobil" yang memiliki tambahan atribut "kapasitasPenumpang" (kapasitas penumpang SUV). Class ini mengimplementasikan method "hitungNilaiJual()" untuk menghitung nilai jual SUV berdasarkan perhitungan yang melibatkan tahun produksi, faktor penurunan nilai, dan kapasitas penumpang. Selain itu, class "SUV" juga memiliki method
"informasiSUV()" yang mencetak informasi lengkap tentang SUV, termasuk merk, tahun produksi, warna, nilai jual, dan kapasitas penumpang.
5. Kelas Turunan “Truk” :
import java.util.Calendar;
class Truk extends Kendaraan implements Maintenance { protected int tonase;
public Truk(String merk, int tahunProduksi, int tonase) { super(merk, tahunProduksi);
this.tonase = tonase;
}
public double hitungNilaiJual() { int tahunSekarang =
Calendar.getInstance().get(Calendar.YEAR);
int umur = tahunSekarang - tahunProduksi;
double nilaiJual = 3000000 - (umur * 25000);
return nilaiJual;
}
public void informasiTruk() {
System.out.println("Merk: " + merk);
System.out.println("Tahun Produksi: " + tahunProduksi);
System.out.println("Tonase: " + tonase);
System.out.println("Nilai Jual: " + hitungNilaiJual());
}
@Override
public void lakukanMaintenance() { System.out.println("");
System.out.println("============================================
==========");
System.out.println("Maintenance truk telah dilakukan");
System.out.println("");
} }
Kode Program 1.5 Class Turunan Truk
Class "Truk" adalah subclass dari class "Kendaraan" dan mengimplementasikan interface "Maintenance". Class ini memiliki atribut "tonase"
yang merupakan kapasitas angkut truk. Method "hitungNilaiJual()" menghitung nilai jual truk berdasarkan perhitungan tertentu menggunakan tahun produksi dan faktor penurunan nilai. Method "informasiTruk()" mencetak informasi lengkap tentang truk, termasuk merk, tahun produksi, tonase, dan nilai jual. Selain itu, class
"Truk" juga memiliki method "lakukanMaintenance()" yang diimplementasikan dari interface "Maintenance" untuk melakukan maintenance pada truk.
6. Kelas Turunan “Trailer” :
import java.util.Calendar;
class Trailer extends Truk { protected int panjangTrailer;
public Trailer(String merk, int tahunProduksi, int tonase, int panjangTrailer) {
super(merk, tahunProduksi, tonase);
this.panjangTrailer = panjangTrailer;
}
public double hitungNilaiJual() { int tahunSekarang =
Calendar.getInstance().get(Calendar.YEAR);
int umur = tahunSekarang - tahunProduksi;
double nilaiJual = 6500000 - (umur * 25000) - (panjangTrailer * 10000);
return nilaiJual;
}
public void informasiTrailer() {
System.out.println("Merk: " + merk);
System.out.println("Tahun Produksi: " + tahunProduksi);
System.out.println("Tonase: " + tonase);
System.out.println("Panjang Trailer: " + panjangTrailer);
System.out.println("Nilai Jual: " + hitungNilaiJual());
}
public void lakukanMaintenance() { System.out.println("");
System.out.println("============================================
==========");
System.out.println("Maintenance trailer telah dilakukan");
System.out.println("");
} }
Kode Program 1.6 Class Turunan Truk
Class "Trailer" adalah subclass dari class "Truk". Class ini memiliki atribut tambahan yaitu "panjangTrailer" (panjang trailer truk). Method "hitungNilaiJual()"
menghitung nilai jual trailer berdasarkan perhitungan tertentu menggunakan tahun produksi, faktor penurunan nilai, dan panjang trailer. Method "informasiTrailer()"
mencetak informasi lengkap tentang trailer, termasuk merk, tahun produksi, tonase, panjang trailer, dan nilai jual. Selain itu, class "Trailer" juga memiliki method
"lakukanMaintenance()" yang mengimplementasikan method dari interface
"Maintenance" untuk melakukan maintenance pada trailer.
7. Interface “Maintenance” :
interface Maintenance {
void lakukanMaintenance();
}
Kode Program 1.7 Class Turuanan
Interface “Maintenance” :
Interface "Maintenance" memiliki satu method yaitu
"lakukanMaintenance()" yang harus diimplementasikan oleh kelas-kelas yang mengimplementasikan interface ini. Interface ini digunakan untuk mendefinisikan kontrak bahwa kelas-kelas tersebut harus memiliki kemampuan untuk melakukan maintenance. Dengan menggunakan interface "Maintenance", kelas-kelas yang mengimplementasikannya dapat memberikan implementasi khusus untuk method
"lakukanMaintenance()" sesuai dengan kebutuhan mereka. Interface ini memungkinkan kelas-kelas tersebut untuk memiliki perilaku maintenance yang berbeda-beda, sambil memastikan bahwa mereka memenuhi kontrak dari interface "Maintenance".
8. Kelas “Bengkel” :
class Bengkel {
public static void cekKondisiKendaraan(Maintenance maintenance) {
maintenance.lakukanMaintenance();
} }
Kode Program 1.8 Class Turuanan
Bengkel
Kelas "Bengkel" memiliki sebuah method statis yaitu
"cekKondisiKendaraan()" yang menerima parameter bertipe "Maintenance".
Method ini digunakan untuk memeriksa kondisi kendaraan dengan melakukan maintenance. Dalam implementasinya, method "cekKondisiKendaraan()"
memanggil method "lakukanMaintenance()" yang ada pada objek yang diterima sebagai parameter. Dengan demikian, kelas-kelas yang mengimplementasikan interface "Maintenance" dapat menggunakan method "cekKondisiKendaraan()"
untuk melakukan maintenance pada kendaraan mereka. Ini memungkinkan fleksibilitas dalam melakukan maintenance, di mana kendaraan-kendaraan dengan jenis yang berbeda dapat melakukan maintenance sesuai dengan implementasi khusus yang mereka miliki.
9. Kelas Utama “Main” :
import java.util.Scanner;
public class Main {
public static void main(String[] args) { System.out.print("\033[H\033[2J");
System.out.flush();
Scanner scanner = new Scanner(System.in);
System.out.println("============================================
==========");
System.out.println("TEKNOLOGI INFORMASI - PEMROGRAMAN BERORIENTASI OBJEK");
System.out.println("");
System.out.println("2205551040 - I Gede Satya Ariya Putra Sangjaya");
System.out.println("2205551041 - I Dewa Gd Dharma Pawitra");
System.out.println("2205551086 - Made Angga Danan Jaya");
System.out.println("============================================
==========");
System.out.println("Silahkan Masukkan Semua Informasi Kendaraan! (ENTER)");
scanner.nextLine();
System.out.print("\033[H\033[2J");
System.out.flush();
System.out.println("Masukkan informasi Sedan:");
System.out.print("Merk: ");
String merkSedan = scanner.nextLine();
System.out.print("Tahun Produksi: ");
int tahunProduksiSedan = scanner.nextInt();
scanner.nextLine();
System.out.print("Warna: ");
String warnaSedan = scanner.nextLine();
System.out.print("Kapasitas Mesin: ");
int kapasitasMesinSedan = scanner.nextInt();
scanner.nextLine();
Sedan sedan = new Sedan(merkSedan, tahunProduksiSedan, warnaSedan, kapasitasMesinSedan);
System.out.println("\nMasukkan informasi SUV:");
System.out.print("Merk: ");
String merkSUV = scanner.nextLine();
System.out.print("Tahun Produksi: ");
int tahunProduksiSUV = scanner.nextInt();
scanner.nextLine();
System.out.print("Warna: ");
String warnaSUV = scanner.nextLine();
System.out.print("Kapasitas Penumpang: ");
int kapasitasPenumpangSUV = scanner.nextInt();
scanner.nextLine();
SUV suv = new SUV(merkSUV, tahunProduksiSUV, warnaSUV, kapasitasPenumpangSUV);
System.out.println("\nMasukkan informasi Trailer:");
System.out.print("Merk: ");
String merkTrailer = scanner.nextLine();
System.out.print("Tahun Produksi: ");
int tahunProduksiTrailer = scanner.nextInt();
scanner.nextLine();
System.out.print("Tonase: ");
int tonaseTrailer = scanner.nextInt();
scanner.nextLine();
System.out.print("Panjang Trailer: ");
int panjangTrailer = scanner.nextInt();
scanner.nextLine();
Trailer trailer = new Trailer(merkTrailer, tahunProduksiTrailer, tonaseTrailer, panjangTrailer);
scanner.close();
System.out.print("\033[H\033[2J");
System.out.flush();
System.out.println("============================================
==========");
System.out.println("TEKNOLOGI INFORMASI - PEMROGRAMAN BERORIENTASI OBJEK");
System.out.println("");
System.out.println("2205551040 - I Gede Satya Ariya Putra Sangjaya");
System.out.println("2205551041 - I Dewa Gd Dharma Pawitra");
System.out.println("2205551086 - Made Angga Danan Jaya");
System.out.println("============================================
==========");
System.out.println("\nNilai Jual Sedan: " + sedan.hitungNilaiJual());
sedan.informasiSedan();
System.out.println("\nNilai Jual SUV: " + suv.hitungNilaiJual());
suv.informasiSUV();
System.out.println("\nNilai Jual Trailer: " + trailer.hitungNilaiJual());
trailer.informasiTrailer();
Bengkel.cekKondisiKendaraan(trailer);
} }
Kode Program 1.9 Class Main