forked from abdFal/hacktbr1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatx.ts
73 lines (59 loc) · 1.77 KB
/
atx.ts
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
class Kota {
constructor(public nama: string) {}
}
class Negara {
private kota: Kota[] = [];
constructor(public nama: string) {}
tambahKota(namaKota: string) {
const kotaBaru = new Kota(namaKota);
this.kota.push(kotaBaru);
}
daftarKota() {
console.log(`Kota-kota di ${this.nama}:`);
this.kota.forEach((kota, index) => {
console.log(`${index + 1}. ${kota.nama}`);
});
}
}
class Program {
private negara: Negara[] = [];
tambahNegara(namaNegara: string) {
const negaraBaru = new Negara(namaNegara);
this.negara.push(negaraBaru);
}
tambahKota(namaNegara: string, namaKota: string) {
const negara = this.cariNegara(namaNegara);
if (negara) {
negara.tambahKota(namaKota);
} else {
console.log(`Negara ${namaNegara} tidak ditemukan.`);
}
}
daftarNegara() {
console.log("Daftar Negara:");
this.negara.forEach((negara, index) => {
console.log(`${index + 1}. ${negara.nama}`);
});
}
daftarKota(namaNegara: string) {
const negara = this.cariNegara(namaNegara);
if (negara) {
negara.daftarKota();
} else {
console.log(`Negara ${namaNegara} tidak ditemukan.`);
}
}
private cariNegara(namaNegara: string): Negara | undefined {
return this.negara.find((negara) => negara.nama === namaNegara);
}
}
const program = new Program();
program.tambahNegara("Indonesia");
program.tambahNegara("Amerika Serikat");
program.tambahKota("Indonesia", "Jakarta");
program.tambahKota("Indonesia", "Surabaya");
program.tambahKota("Amerika Serikat", "New York");
program.tambahKota("Amerika Serikat", "Los Angeles");
program.daftarNegara();
program.daftarKota("Indonesia");
program.daftarKota("Amerika Serikat");