Tugas 5 PBO C Tech Support System
Nama : Dewangga Dharmawan
NRP : 05111940000029
Dosen : Fajar Baskoro
Grafik hubungan antar class Tech Support System
Class Support System
/**
* Program utama yang menjawab pertanyaan yang dimasukkan
* (Utama karena yang pertama kali di inputkan adalah
* class ini)
*
* @author (Dewangga Dharmawan)
* @version (10/11/2020)
*/
//Library semua fungsi java
import java.util.*;
public class SupportSystem
{
//Variabel privat dengan class lainnya
private InputReader reader;
private Responder responder;
//Mendeklarasikan variabel pertanyaan dan jawaban
public SupportSystem()
{
reader = new InputReader();
responder = new Responder();
}
//Methode yang berisi loop untuk
//Membaca pertanyaan pengguna
//Dan mengeluarkan jawabannya
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();
}
//Methode privat untuk menyapa pengguna
private void printWelcome()
{
System.out.println("Halo, ada urusan apa?");
System.out.println("Tekan 'bye' untuk mengakhiri program");
}
//Methode privat untuk menyampaikan
//Kepada pengguna bahwa
//Programnya telah selesai
private void printGoodbye()
{
System.out.println("Sampai jumpa juga\n");
}
}
Class Input Reader
/**
* Class kedua untuk membaca input kalimat pengguna
*
* @author (Dewangga Dharmawan)
* @version (10/11/2020)
*/
//Library semua fungsi java
import java.util.*;
public class InputReader
{
//Variabel privat untuk menampung scan
private Scanner reader;
//Mendeklarasikan fungsi scan
public InputReader()
{
reader = new Scanner(System.in);
}
//Membaca pertanyaan
public HashSet<String> getInput()
{
System.out.print("> ");
String inputLine = reader.nextLine().trim().toLowerCase();
String[] wordArray = inputLine.split(" ");
HashSet<String> words = new HashSet<String>();
for(String word : wordArray)
{
words.add(word);
}
return words;
}
}
Class Responder
/**
* Class untuk memberikan jawaban pertanyaan pengguna
*
* @author (Dewangga Dharmawan)
* @version (10/11/2020)
*/
//Library semua fungsi Java
import java.util.*;
public class Responder
{
//Variabel privat jawaban dan angka acak
private Random randomGenerator;
private ArrayList<String> defaultResponses;
private HashMap<String, String> responseMap;
//Deklarasi beberapa fungsi dan variabel
public Responder()
{
defaultResponses = new ArrayList<String>();
responseMap = new HashMap<String, String>();
fillResponsesMap();
fillDefaultResponse();
randomGenerator = new Random();
}
//Methode untuk menampilkan jawaban
public String generateResponse(HashSet<String> words)
{
for(String word : words)
{
String response = responseMap.get(word);
if(response != null)
{return response;}
}
return pickDefaultResponse();
}
//Methode untuk menampung jawaban
//Yang ada pertanyaannya
private void fillResponsesMap()
{
responseMap.put("bug", "Mungkin bisa dicoba debugger. Atau baygon");
responseMap.put("virus", "Maaf, saya TechSupport, bukan dokter");
responseMap.put("halo", "Halo juga");
responseMap.put("slow", "Jangan diajak lari, tapi tunggu saja, dia bukan orang!");
responseMap.put("universe", "101010, 52, 2A");
responseMap.put("rusak", "Mengapa kau tanya aku kalau komputermu rusak?");
responseMap.put("putus", "Pakai selotip, jangan lem. Aliran listriknya tidak akan bisa mengalir kalau pakai lem");
}
//Methode untuk menampung jawaban
//Yang tidak ada pertanyaannya
private void fillDefaultResponse()
{
defaultResponses.add("Nggak tau apa maksudmu?");
defaultResponses.add("Bisa diulang apa maksudmu?");
defaultResponses.add("Coba lagi");
defaultResponses.add("Mungkin yang kapital atau spasinya");
defaultResponses.add("Nggak tau apa maksudmu? Ini yang kedua");
}
//Methode untuk memilih jawaban
//Secara acak
private String pickDefaultResponse()
{
int index = randomGenerator.nextInt(defaultResponses.size());
return defaultResponses.get(index);
}
}
Implementasi (Class Support System terdahulu)
Komentar
Posting Komentar