Skip to content

Instantly share code, notes, and snippets.

@dimasmiftah
Created August 4, 2022 19:34
Show Gist options
  • Save dimasmiftah/fcda212c7fbc3cefa18b6d1b5f23964e to your computer and use it in GitHub Desktop.
Save dimasmiftah/fcda212c7fbc3cefa18b6d1b5f23964e to your computer and use it in GitHub Desktop.
CCDP - Bridge Pattern

CCDP - Bridge Pattern

Nama: Dimas Miftahul Huda

NIM: 10118087

Kelas: CCDP-1

Langkah Pembuatan

  1. Buat package prodi
  2. Prodi.java di dalam package prodi
  3. IlmuKomunikasi.java di dalam package prodi
  4. TeknikInformatika.java di dalam package prodi
  5. Buat package fakultas
  6. Fakultas.java di dalam package fakultas
  7. Sarjana.java di dalam package fakultas
  8. Pascasarjana.java di dalam package fakultas
  9. App di luar package

Bridge Pattern drawio

import fakultas.Pascasarjana;
import fakultas.Sarjana;
import prodi.Prodi;
import prodi.TeknikInformatika;
import prodi.IlmuKomunikasi;
public class App {
public static void main(String[] args) {
testProdi(new IlmuKomunikasi());
testProdi(new TeknikInformatika());
}
public static void testProdi(Prodi prodi) {
System.out.println("Tests Fakultas Sarjana.");
Sarjana fakultasSarjana = new Sarjana(prodi);
fakultasSarjana.bukaPendaftaran();
prodi.printStatus();
System.out.println("Tests Fakultas Pascasarjana.");
Pascasarjana fakultasPascasarjana = new Pascasarjana(prodi);
fakultasPascasarjana.bukaPendaftaran();
fakultasPascasarjana.tutupSementara();
prodi.printStatus();
}
}
package fakultas;
public interface Fakultas {
void bukaPendaftaran();
void kurangiDosen();
void tambahDosen();
void kurangiMahasiswa();
void tambahMahasiswa();
}
package prodi;
public class IlmuKomunikasi implements Prodi {
private boolean bukaPendaftaran = false;
private int jumlahDosen = 30;
private int jumlahMahasiswa = 1200;
@Override
public boolean isBukaPendaftaran() {
return bukaPendaftaran;
}
@Override
public void bukaPendaftaran() {
bukaPendaftaran = true;
}
@Override
public void tutupPendaftaran() {
bukaPendaftaran = false;
}
@Override
public int getJumlahDosen() {
return jumlahDosen;
}
@Override
public void setJumlahDosen(int jumlahDosen) {
if (jumlahDosen > 100) {
this.jumlahDosen = 100;
} else this.jumlahDosen = Math.max(jumlahDosen, 0);
}
@Override
public int getJumlahMahasiswa() {
return jumlahMahasiswa;
}
@Override
public void setJumlahMahasiswa(int jumlahMahasiswa) {
this.jumlahMahasiswa = jumlahMahasiswa;
}
@Override
public void printStatus() {
System.out.println("------------------------------------");
System.out.println("| Program Studi Ilmu Komunikasi.");
System.out.println("| Pendaftaran " + (bukaPendaftaran ? "dibuka" : "ditutup"));
System.out.println("| Jumlah dosen aktif saat ini adalah " + jumlahDosen + " orang");
System.out.println("| Jumlah mahasiswa aktif saat ini adalah " + jumlahMahasiswa + " orang");
System.out.println("------------------------------------\n");
}
}
package fakultas;
import prodi.Prodi;
public class Pascasarjana extends Sarjana {
public Pascasarjana(Prodi prodi) {
super.prodi = prodi;
}
public void tutupSementara() {
System.out.println("Fakultas: tutup sementara");
prodi.tutupPendaftaran();
prodi.setJumlahDosen(0);
prodi.setJumlahMahasiswa(0);
}
}
package prodi;
public interface Prodi {
boolean isBukaPendaftaran();
void bukaPendaftaran();
void tutupPendaftaran();
int getJumlahDosen();
void setJumlahDosen(int jumlahDosen);
int getJumlahMahasiswa();
void setJumlahMahasiswa(int jumlahMahasiswa);
void printStatus();
}
package fakultas;
import prodi.Prodi;
public class Sarjana implements Fakultas {
protected Prodi prodi;
public Sarjana() {}
public Sarjana(Prodi prodi) {
this.prodi = prodi;
}
@Override
public void bukaPendaftaran() {
System.out.println("Fakultas: ubah status pendaftaran");
if (prodi.isBukaPendaftaran()) {
prodi.tutupPendaftaran();
} else {
prodi.bukaPendaftaran();
}
}
@Override
public void kurangiDosen() {
System.out.println("Fakultas: kurangi jumlah dosen");
prodi.setJumlahDosen(prodi.getJumlahDosen() - 10);
}
@Override
public void tambahDosen() {
System.out.println("Fakultas: tambah jumlah dosen");
prodi.setJumlahDosen(prodi.getJumlahDosen() + 10);
}
@Override
public void kurangiMahasiswa() {
System.out.println("Fakultas: kurangi jumlah mahasiswa");
prodi.setJumlahMahasiswa(prodi.getJumlahMahasiswa() - 100);
}
@Override
public void tambahMahasiswa() {
System.out.println("Fakultas: tambah jumlah mahasiswa");
prodi.setJumlahMahasiswa(prodi.getJumlahMahasiswa() + 100);
}
}
package prodi;
public class TeknikInformatika implements Prodi {
private boolean bukaPendaftaran = false;
private int jumlahDosen = 60;
private int jumlahMahasiswa = 2500;
@Override
public boolean isBukaPendaftaran() {
return bukaPendaftaran;
}
@Override
public void bukaPendaftaran() {
bukaPendaftaran = true;
}
@Override
public void tutupPendaftaran() {
bukaPendaftaran = false;
}
@Override
public int getJumlahDosen() {
return jumlahDosen;
}
@Override
public void setJumlahDosen(int jumlahDosen) {
if (jumlahDosen > 100) {
this.jumlahDosen = 100;
} else this.jumlahDosen = Math.max(jumlahDosen, 0);
}
@Override
public int getJumlahMahasiswa() {
return jumlahMahasiswa;
}
@Override
public void setJumlahMahasiswa(int jumlahMahasiswa) {
this.jumlahMahasiswa = jumlahMahasiswa;
}
@Override
public void printStatus() {
System.out.println("------------------------------------");
System.out.println("| Program Studi Teknik Informatika.");
System.out.println("| Pendaftaran " + (bukaPendaftaran ? "dibuka" : "ditutup"));
System.out.println("| Jumlah dosen aktif saat ini adalah " + jumlahDosen + " orang");
System.out.println("| Jumlah mahasiswa aktif saat ini adalah " + jumlahMahasiswa + " orang");
System.out.println("------------------------------------\n");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment