Skip to content

Instantly share code, notes, and snippets.

@dimasmiftah
Created August 4, 2022 16:24
Show Gist options
  • Save dimasmiftah/edd3a6871dd4b7ec9bfdf35f36e95aef to your computer and use it in GitHub Desktop.
Save dimasmiftah/edd3a6871dd4b7ec9bfdf35f36e95aef to your computer and use it in GitHub Desktop.
CCDP - Prototype Pattern

CCDP - Prototype Pattern

Nama: Dimas Miftahul Huda

NIM: 10118087

Kelas: CCDP-1

Langkah Pembuatan

  1. Buat kelas Mahasiswa.java
  2. Buat kelas Regular.java
  3. Buat kelas Karyawan.java
  4. Buat kelas App.java

Prototype Pattern drawio

import java.util.ArrayList;
import java.util.List;
public class App {
public static void main(String[] args) {
List<Mahasiswa> mahasiswas = new ArrayList<>();
List<Mahasiswa> mahasiswasCopy = new ArrayList<>();
Karyawan karyawan = new Karyawan();
karyawan.NIM = "10118080";
karyawan.Nama = "Anya Geraldine";
karyawan.Pekerjaan = "Selebgram";
karyawan.Jurusan = "Ilmu Komunikasi";
mahasiswas.add(karyawan);
Karyawan anotherKaryawan = (Karyawan) karyawan.clone();
mahasiswas.add(anotherKaryawan);
Regular regular = new Regular();
regular.Divisi = "CodeLabs";
regular.UKM = "English Club";
regular.Jurusan = "Teknik Informatika";
mahasiswas.add(regular);
cloneAndCompare(mahasiswas, mahasiswasCopy);
}
private static void cloneAndCompare(List<Mahasiswa> mahasiswas, List<Mahasiswa> mahasiswasCopy) {
for (Mahasiswa mahasiswa : mahasiswas) {
mahasiswasCopy.add(mahasiswa.clone());
}
for (int i = 0; i < mahasiswas.size(); i++) {
if (mahasiswas.get(i) != mahasiswasCopy.get(i)) {
System.out.println(i + ": Mahasiswa merupakan objek yang berbeda (yay!)");
if (mahasiswas.get(i).equals(mahasiswasCopy.get(i))) {
System.out.println(i + ": Namun bersifat identik. (yay!)");
} else {
System.out.println(i + ": Namun tidak bersifat identik (booo!)");
}
} else {
System.out.println(i + ": Mahasiswa merupakan objek yang sama (booo!)");
}
}
}
}
import java.util.Objects;
public class Karyawan extends Mahasiswa {
public String Pekerjaan;
public Karyawan() {
}
public Karyawan(Karyawan target) {
super(target);
if (target != null) {
this.Pekerjaan = target.Pekerjaan;
}
}
@Override
public Mahasiswa clone() {
return new Karyawan(this);
}
@Override
public boolean equals(Object object2) {
if (!(object2 instanceof Karyawan shape2) || !super.equals(object2)) return false;
return Objects.equals(shape2.Pekerjaan, Pekerjaan);
}
}
import java.util.Objects;
public abstract class Mahasiswa {
public String NIM;
public String Nama;
public String Jurusan;
public Mahasiswa() {
}
public Mahasiswa(Mahasiswa target) {
if (target != null) {
this.NIM = target.NIM;
this.Nama = target.Nama;
this.Jurusan = target.Jurusan;
}
}
public abstract Mahasiswa clone();
@Override
public boolean equals(Object object2) {
if (!(object2 instanceof Mahasiswa mahasiswa2)) return false;
return Objects.equals(mahasiswa2.NIM, NIM) && Objects.equals(mahasiswa2.Nama, Nama) && Objects.equals(mahasiswa2.Jurusan, Jurusan);
}
}
import java.util.Objects;
public class Regular extends Mahasiswa {
public String Divisi;
public String UKM;
public Regular() {
}
public Regular(Regular target) {
super(target);
if (target != null) {
this.Divisi = target.Divisi;
this.UKM = target.UKM;
}
}
@Override
public Mahasiswa clone() {
return new Regular(this);
}
@Override
public boolean equals(Object object2) {
if (!(object2 instanceof Regular shape2) || !super.equals(object2)) return false;
return Objects.equals(shape2.Divisi, Divisi) && Objects.equals(shape2.UKM, UKM);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment