-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCar.java
More file actions
117 lines (109 loc) · 4.28 KB
/
Car.java
File metadata and controls
117 lines (109 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.io.*;
public class Car {
private static final int MAX_AC = 4;
private static final int MIN_AC = 0;
private static final int MAX_GEAR = 6;
private static final int MIN_GEAR = 1;
private String fuel;
private int gear;
private int ac_power;
private boolean on;
// Ctor
// Menginisiasi jenis fuel dengan t_fuel, gear = 0, ac_power = 0 dan on = false.
public Car(String t_fuel){
this.fuel = t_fuel;
gear = 0;
ac_power = 0;
on = false;
}
// Getter
public String getFuel(){
return this.fuel;
}
public int getGear(){
return this.gear;
}
public int getAcPower(){
return this.ac_power;
}
public boolean isOn(){
return this.on;
}
/*
Melakukan isi bensin terhadap mobil
Melakukan pengecekan jenis bensin masukan apakah sesuai dengan jenis bensin mobil.
Bila tidak sesuai lakukan throw FuelException dengan parameter masukan t_fuel
Bila sesuai, akan menghasilkan keluaran "Berhasil isi bensin sebanyak (nilai amount_in_liter) liter" diakhiri newline dan abaikan tanda '()'
*/
public void fillingFuel(String t_fuel, int amount_in_liter){
if (t_fuel.equals(this.fuel)) {
System.out.println("Berhasil isi bensin sebanyak "+ amount_in_liter +" liter ");
} else {
throw new FuelException(t_fuel);
}
}
/*
Melakukan pergantian gigi mobil
Melakukan pengecekan t_gear sebagai masukan gigi apakah berada pada range MIN_GEAR<=X<=MAX_GEAR.
Bila tidak sesuai range lakukan throw InvalidInputCarException dengan parameter masukan t_gear.
Bila sesuai, akan merubah nilai gear si mobil dan
menghasilkan keluaran "Berhasil mengubah gigi menjadi gigi (nilai t_gear)" diakhiri newline dan abaikan tanda '()'.
*/
public void changeGear(int t_gear){
if ((t_gear<MIN_GEAR) || (t_gear>MAX_GEAR)) {
throw new InvalidInputCarException(t_gear);
} else {
System.out.println("Berhasil mengubah gigi menjadi gigi "+ t_gear);
}
}
/*
Melakukan pergantian power ac pada mobil
Melakukan pengecekan t_ac_power sebagai masukan power ac apakah berada pada range MIN_AC<=X<=MAX_AC.
Bila tidak sesuai range lakukan throw InvalidInputCarException dengan parameter masukan t_ac_power.
Bila sesuai, akan merubah nilai ac_power si mobil dan
menghasilkan keluaran "Berhasil mengubah power ac menjadi (nilai t_ac_power)" diakhiri newline dan abaikan tanda '()'.
*/
public void changeAcPower(int t_ac_power){
if ((t_ac_power>= this.MIN_AC) & (t_ac_power<= this.MAX_AC)) {
System.out.println("Berhasil mengubah power ac menjadi "+ t_ac_power);
} else {
throw new InvalidInputCarException(t_ac_power);
}
}
/*
Melakukan starter/ menyalakan mobil
Melakukan pengecekan apakah mobil sudah dalam kondisi menyala atau belum ketika fungsi start dipanggil.
Bila mobil sudah menyala lakukan throw TheCarIsOnException.
Bila mobil belum menyala akan merubah nilai on mobil menjadi true dan
menghasilkan keluaran "Berhasil melakukan starter mobil" diakhiri newline.
*/
public void start(){
if (on) {
throw new TheCarIsOnException();
} else {
this.on = true;
System.out.println("Berhasil melakukan starter mobil");
}
}
/*
Melakukan pergantian pengecekan seluruh fitur pada mobil
Pengecekan fitur dilakukan dengan cara pemanggilan fungsi dengan urutan
start -> fillingFuel dengan menggunakan parameter masukan pertama dan kedua
-> changeGear dengan menggunakan parameter masukan ketiga
-> changeAcPower dengan menggunakan parameter masukan keempat.
Implementasikan prosedur ini menggunakan try catch, dengan multiple catch, total tiga jenis catch.
Untuk setiap Exception yang dicatch, cetak "[(nama_exception)] (message_exception)" diakhiri newline dan abaikan tanda '()'.
Contoh:
[TheCarIsOnException] Mobil sudah menyala
*/
public void service(String t_fuel, int amount_in_liter, int t_gear, int t_ac_power){
try {
start();
fillingFuel(t_fuel, amount_in_liter);
changeGear(t_gear);
changeAcPower(t_ac_power);
} catch (FuelException | InvalidInputCarException | TheCarIsOnException e){
System.out.println("["+e.getClass().getName()+"] " + e.getMessage());
}
}
}