Nama: Dimas Miftahul Huda
NIM: 10118087
Kelas: CCDP-1
- Buat package
channel
Channel.java
di dalam package channelEmail.java
di dalam package channelWhatsApp.java
di dalam package channelApp.java
di 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(); | |
} | |
} | |
} |