Object Oriented Programming | Week 7: Tech Support System
Pada minggu ke-7 saya belajar untuk membuat program dengan menggunakan kelas‑kelas pustaka (library classes) yang lebih canggih, struktur data tambahan seperti Maps dan Sets, serta fitur Java seperti static, final, serta autoboxing. Untuk memperkuat pemahaman, saya langsung melakukan praktek dengan membuat aplikasi Tech Support System.
Struktur Classnya dapat dilihat pada gambar di atas, di mana terdapat Class responder untuk generasi respon yang sesuai dengan keyword dari input pengguna dengan menggunakan bantuan dari struktur data HashMap. Selain itu, terdapat pula class InputReader yang berfungsi untuk mengambil input dari pengguna berupa string, dan memecahnya menjadi set per kata dengan menggunakan HashSet. Terdapat pula class utama untuk menjalankan program yaitu class SupportSystem yang menjembatani fungsi-fungsi yang terdapat pada class Responder dan juga InputReader.
InputReader.java:
/**
* Write a description of class InputReader here.
*
* @author Muhammad Zaky Zein
* @version 07.10.2025
*/
import java.util.Scanner;
import java.util.HashSet;
public class InputReader
{
private Scanner scanner;
public InputReader() {
scanner = new Scanner(System.in);
}
public HashSet<String> getInput() {
System.out.print("> ");
String inputLine = scanner.nextLine().trim().toLowerCase();
String[] wordArray = inputLine.split("\\s+");
HashSet<String> words = new HashSet<String>();
for(String word : wordArray) {
words.add(word);
}
return words;
}
}
Class InputReader melalui fungsi getInput() akan mengambil input berupa string dari user, lalu mengubahnya menjadi lowercase dan memisahkannya berdasarkan regex "\\s+" sehingga akan memisahkan string berdasarkan whitespace (spasi, tab, endline). Setelah stringnya dipisah-pisah, masing-masing substring akan dimasukkan kedalam HashSet untuk memastikan tidak ada string yang tersimpan dua kali.
Responder.java:
/**
* Write a description of class Responder here.
*
* @author Muhammad Zaky Zein
* @version 07.10.2025
*/
import java.util.Random;
import java.util.HashMap;
import java.util.HashSet;
public class Responder
{
private HashMap<String, String> responses;
private Random random;
public Responder() {
responses = new HashMap<>();
random = new Random();
fillResponse();
}
private void fillResponse() {
responses.put("error", "Apakah Anda menerima pesan kesalahan? Coba refresh laman FRS.");
responses.put("help", "Apa yang bisa saya bantu?");
responses.put("crash", "Kapan crash terjadi? Apakah ada pesan spesifik?");
responses.put("server", "Sistem sedang tidak dapat diakses. Coba beberapa menit lagi atau periksa koneksi internet kamu.");
responses.put("loading", "Sistem sedang lambat. Pastikan koneksi stabil dan coba muat ulang halaman.");
responses.put("login", "Gagal login. Pastikan username dan password benar, lalu coba lagi. Jika tetap gagal, reset password.");
responses.put("session", "Sesi kamu telah berakhir. Silakan login kembali untuk melanjutkan pengisian FRS.");
responses.put("blank", "Halaman tidak menampilkan data. Coba muat ulang atau buka menggunakan browser lain.");
responses.put("data", "Data mahasiswa tidak ditemukan atau tidak sesuai. Coba keluar dan masuk kembali ke sistem.");
responses.put("browser", "Ada kemungkinan browser tidak kompatibel. Coba gunakan Chrome versi terbaru atau Firefox.");
responses.put("captcha", "Komponen verifikasi tidak muncul. Coba muat ulang halaman atau nonaktifkan ekstensi pemblokir iklan.");
responses.put("matkul", "Daftar mata kuliah belum muncul. Coba periksa jadwal periode FRS atau muat ulang halaman.");
responses.put("jadwal", "Ada konflik jadwal antar mata kuliah. Pilih kelas lain yang tidak bentrok.");
responses.put("penuh", "Kelas yang kamu pilih sudah penuh. Pilih kelas lain atau tunggu kuota tambahan.");
responses.put("prasyarat", "Prasyarat mata kuliah belum terpenuhi. Periksa kembali nilai mata kuliah sebelumnya.");
responses.put("simpan", "Data FRS gagal disimpan. Coba klik simpan lagi atau periksa koneksi internet.");
responses.put("duplikat", "Mata kuliah yang sama sudah ada di daftar FRS kamu. Hapus salah satunya untuk melanjutkan.");
responses.put("periode", "Periode FRS belum dibuka. Coba lagi sesuai jadwal yang ditetapkan fakultas.");
responses.put("approval", "FRS belum disetujui oleh dosen wali. Hubungi dosen wali untuk konfirmasi.");
responses.put("kurikulum", "Mata kuliah tidak sesuai kurikulum angkatan kamu. Pilih mata kuliah yang sesuai tahun masuk.");
responses.put("status", "Status mahasiswa kamu tidak aktif. Hubungi bagian akademik untuk verifikasi.");
responses.put("hilang", "Data FRS kamu tidak tersimpan. Pastikan klik tombol “Simpan” sebelum keluar dari halaman.");
responses.put("sinkron", "Data akademik belum tersinkron. Coba logout dan login ulang setelah beberapa menit.");
}
private String pickDefaultResponse() {
String[] generic = {
"Coba jelaskan lebih rinci.",
"Saya belum mengerti, bisa ulangi?",
"Bisakah Anda memberi detail lebih lanjut?"
};
return generic[random.nextInt(generic.length)];
}
public String generateResponse(HashSet<String> words) {
for(String word : words) {
String response = responses.get(word);
if(response != null) {
return response;
}
}
return pickDefaultResponse();
}
}
Dengan menggunakan HashMap, kita dapat memetakan keyword-keyword tertentu menjadi respons yang sesuai. Jika tidak ada keyword yang sesuai, program akan mengeluarkan respons default yang akan meminta penjelasan lebih detail kepada user.
SupportSystem.java:
/**
* Write a description of class SupportSystem here.
*
* @author Muhammad Zaky Zein
* @version 07.10.2025
*/
import java.util.HashSet;
public class SupportSystem
{
private InputReader reader;
private Responder responder;
public SupportSystem() {
reader = new InputReader();
responder = new Responder();
}
public void start() {
boolean finished = false;
printWelcome();
while(!finished) {
HashSet<String> input = reader.getInput();
if(input.contains("bye")) {
finished = true;
} else {
String response = responder.generateResponse(input);
System.out.println(response);
}
}
printGoodbye();
}
private void printWelcome() {
System.out.println("Selamat datang di aplikasi FRS TechSupport");
System.out.println("Jelaskan masalah yang dialami.");
System.out.println("Ketik 'bye' untuk keluar dari sistem.");
}
private void printGoodbye() {
System.out.println("Bye...");
}
}
Saat program dijalankan, akan menampilkan program commandline seperti berikut:
Demikian latihan saya membuat aplikasi Support System untuk FRS.
Muhammad Zaky Zein
5025241148

Comments
Post a Comment