Nama: Dimas Miftahul Huda
NIM: 10118087
Kelas: CCDP-1
- Buat package
channel Channel.javadi dalam package channelEmail.javadi dalam package channelWhatsApp.javadi dalam package channelApp.javadi luar package
| import channel.Email; | |
| import channel.Channel; | |
| import channel.WhatsApp; | |
| import java.io.BufferedReader; | |
| import java.io.IOException; | |
| import java.io.InputStreamReader; | |
| public class App { | |
| public static void main(String[] args) throws IOException { | |
| BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); | |
| Channel channel = null; | |
| System.out.print("Masukkan nama pengguna: "); | |
| String nama = reader.readLine(); | |
| System.out.print("Masukkan kata sandi: "); | |
| String sandi = reader.readLine(); | |
| System.out.print("Masukkan pesan: "); | |
| String pesan = reader.readLine(); | |
| System.out.println(""" | |
| Pilih channel yang digunakan untuk mengirim pesan. | |
| 1 - Email | |
| 2 - WhatsApp"""); | |
| int pilihan = Integer.parseInt(reader.readLine()); | |
| if (pilihan == 1) { | |
| channel = new Email(nama, sandi); | |
| } else if (pilihan == 2) { | |
| channel = new WhatsApp(nama, sandi); | |
| } | |
| channel.post(pesan); | |
| } | |
| } |
| package channel; | |
| public abstract class Channel { | |
| String nama; | |
| String sandi; | |
| Channel() {} | |
| public boolean post(String pesan) { | |
| if (logIn(this.nama, this.sandi)) { | |
| boolean result = sendData(pesan.getBytes()); | |
| logOut(); | |
| return result; | |
| } | |
| return false; | |
| } | |
| abstract boolean logIn(String nama, String sandi); | |
| abstract boolean sendData(byte[] data); | |
| abstract void logOut(); | |
| } |
| package channel; | |
| public class Email extends Channel { | |
| public Email(String nama, String sandi) { | |
| this.nama = nama; | |
| this.sandi = sandi; | |
| } | |
| public boolean logIn(String nama, String sandi) { | |
| System.out.println("\nMemeriksa identitas pengguna"); | |
| System.out.println("Nama: " + this.nama); | |
| System.out.print("Sandi: "); | |
| for (int i = 0; i < this.sandi.length(); i++) { | |
| System.out.print("*"); | |
| } | |
| simulateNetworkLatency(); | |
| System.out.println("\n\nLogin Email berhasil"); | |
| return true; | |
| } | |
| public boolean sendData(byte[] data) { | |
| boolean messagePosted = true; | |
| if (messagePosted) { | |
| System.out.println("Pesan: '" + new String(data) + "' telah terkirim melalui Email"); | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| } | |
| public void logOut() { | |
| System.out.println("Pengguna: '" + nama + "'telah logout dari Email"); | |
| } | |
| private void simulateNetworkLatency() { | |
| try { | |
| int i = 0; | |
| System.out.println(); | |
| while (i < 10) { | |
| System.out.print("."); | |
| Thread.sleep(500); | |
| i++; | |
| } | |
| } catch (InterruptedException ex) { | |
| ex.printStackTrace(); | |
| } | |
| } | |
| } |
| package channel; | |
| public class WhatsApp extends Channel { | |
| public WhatsApp(String nama, String sandi) { | |
| this.nama = nama; | |
| this.sandi = sandi; | |
| } | |
| public boolean logIn(String nama, String sandi) { | |
| System.out.println("\nMemeriksa identitas pengguna"); | |
| System.out.println("Nama: " + this.nama); | |
| System.out.print("Sandi: "); | |
| for (int i = 0; i < this.sandi.length(); i++) { | |
| System.out.print("*"); | |
| } | |
| simulateNetworkLatency(); | |
| System.out.println("\n\nLogin WhatsApp berhasil"); | |
| return true; | |
| } | |
| public boolean sendData(byte[] data) { | |
| boolean messagePosted = true; | |
| if (messagePosted) { | |
| System.out.println("Pesan: '" + new String(data) + "' telah terkirim melalui WhatsApp"); | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| } | |
| public void logOut() { | |
| System.out.println("Pengguna: '" + nama + "' telah logout dari WhatsApp"); | |
| } | |
| private void simulateNetworkLatency() { | |
| try { | |
| int i = 0; | |
| System.out.println(); | |
| while (i < 10) { | |
| System.out.print("."); | |
| Thread.sleep(500); | |
| i++; | |
| } | |
| } catch (InterruptedException ex) { | |
| ex.printStackTrace(); | |
| } | |
| } | |
| } |