Naufal Daffa Alfa Zain
5025241066
Pemrograman Berorientasi Objek - A
Pada pertemuan ke-5, kami belajar mengenai bagaimana interaksi antar objek yang saling mempengaruhi dan membutuhkan untuk membuat sebuah projek yang kompleks. Pada tugas kali ini, saya mengimplementasikan konsep tersebut melalui pembuatan proyek simulasi pengambilan matkul menggunakan bahasa Java di BlueJ.
Disini, saya juga menggunakan GUI agar lebih menarik dan lebih mudah untuk digunakan. terutama lebih mudah untuk berpindah antar menu
Ketika program dijalankan akan terlihat seperti berikut
Berikut adalah Source Codenya :
Main.Java
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
public class Main {
private static Mahasiswa mhs;
private static ArrayList<Matkul> daftarMatkul;
public static void main(String[] args) {
// Data dosen & matkul sesuai daftar
daftarMatkul = new ArrayList<>();
daftarMatkul.add(new Matkul("IF201", "Pemrograman Web", 3, 40, new Dosen("Fajar Baskoro, S.Kom., M.T.", "001")));
daftarMatkul.add(new Matkul("IF202", "Pemrograman Berorientasi Objek", 3, 40, new Dosen("Fajar Baskoro, S.Kom., M.T.", "002")));
daftarMatkul.add(new Matkul("IF203", "Jaringan Komputer", 3, 40, new Dosen("Ir. Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D.", "003")));
daftarMatkul.add(new Matkul("IF204", "Teori Graf", 3, 40, new Dosen("Victor Hariadi, S.Si., M.Kom.", "004")));
daftarMatkul.add(new Matkul("IF205", "Matematika Diskrit", 3, 40, new Dosen("Muhamad Hilmil Muchtar Aditya Pradana, S.Kom., M.Sc., Ph.D.", "005")));
daftarMatkul.add(new Matkul("IF206", "Konsep Pengembangan Perangkat Lunak", 3, 40, new Dosen("Dr. Sarwosri, S.Kom., M.T.", "006")));
daftarMatkul.add(new Matkul("IF207", "Konsep Kecerdasan Artifisial", 3, 40, new Dosen("Imam Mustafa Kamal, S.ST., Ph.D.", "007")));
daftarMatkul.add(new Matkul("IF208", "Pengantar Teknologi Elektro dan Informatika Cerdas", 2, 40, new Dosen("Ir. Suhadi Lili, M.T.I.", "008")));
daftarMatkul.add(new Matkul("IF209", "Struktur Data", 3, 40, new Dosen("Dr. Yudhi Purwananto, S.Kom., M.Kom.", "009")));
daftarMatkul.add(new Matkul("IF210", "Sistem Operasi", 3, 40, new Dosen("Ir. Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D.", "010")));
daftarMatkul.add(new Matkul("IF211", "Organisasi Komputer", 3, 40, new Dosen("Dr. Wahyu Suadi, S.Kom., MM., M.Kom.", "011")));
daftarMatkul.add(new Matkul("IF212", "Komputasi Numerik", 3, 40, new Dosen("Dr. Bilqis Amaliah, S.Kom., M.Kom.", "012")));
// Input mahasiswa via dialog
String nama = JOptionPane.showInputDialog("Masukkan Nama Mahasiswa:");
String nrp = JOptionPane.showInputDialog("Masukkan NRP:");
mhs = new Mahasiswa(nama, nrp);
// Buat frame utama
JFrame frame = new JFrame("Sistem Akademik - " + mhs.getNama());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 500);
frame.setLayout(new BorderLayout());
JTextArea output = new JTextArea();
output.setEditable(false);
JScrollPane scroll = new JScrollPane(output);
JPanel panelButton = new JPanel();
panelButton.setLayout(new GridLayout(1, 5));
JButton btn1 = new JButton("Daftar Matkul");
JButton btn2 = new JButton("Matkul Diambil");
JButton btn3 = new JButton("Ambil");
JButton btn4 = new JButton("Drop");
JButton btn5 = new JButton("Keluar");
panelButton.add(btn1);
panelButton.add(btn2);
panelButton.add(btn3);
panelButton.add(btn4);
panelButton.add(btn5);
// Event handling
btn1.addActionListener(e -> {
StringBuilder sb = new StringBuilder("--- DAFTAR MATA KULIAH ---\n");
for (Matkul mk : daftarMatkul) {
sb.append(mk.tampilkanInfo()).append("\n");
}
output.setText(sb.toString());
});
btn2.addActionListener(e -> {
output.setText(mhs.tampilkanMatkulDiambil());
});
btn3.addActionListener(e -> {
String kode = JOptionPane.showInputDialog("Masukkan kode kelas:");
Matkul mk = cariMatkul(kode);
if (mk != null) {
mhs.ambilMatkul(mk);
output.setText("✅ Ambil matkul berhasil!\n\n" + mhs.tampilkanMatkulDiambil());
} else {
output.setText("⚠️ Matkul tidak ditemukan!");
}
});
btn4.addActionListener(e -> {
String kode = JOptionPane.showInputDialog("Masukkan kode kelas untuk drop:");
Matkul mk = cariMatkul(kode);
if (mk != null) {
mhs.dropMatkul(mk);
output.setText("✅ Drop matkul berhasil!\n\n" + mhs.tampilkanMatkulDiambil());
} else {
output.setText("⚠️ Matkul tidak ditemukan!");
}
});
btn5.addActionListener(e -> {
JOptionPane.showMessageDialog(frame, "Terima kasih! Program selesai.");
System.exit(0);
});
frame.add(scroll, BorderLayout.CENTER);
frame.add(panelButton, BorderLayout.SOUTH);
frame.setVisible(true);
}
private static Matkul cariMatkul(String kode) {
for (Matkul mk : daftarMatkul) {
if (mk.getKodeKelas().equalsIgnoreCase(kode)) {
return mk;
}
}
return null;
}
}
Mahasiswa.Java
import java.util.ArrayList;
public class Mahasiswa {
private String nama;
private String nrp;
private ArrayList<Matkul> matkulDiambil;
public Mahasiswa(String nama, String nrp) {
this.nama = nama;
this.nrp = nrp;
this.matkulDiambil = new ArrayList<>();
}
public String getNama() {
return nama;
}
public String getNrp() {
return nrp;
}
public ArrayList<Matkul> getMatkulDiambil() {
return matkulDiambil;
}
public void ambilMatkul(Matkul mk) {
if (!matkulDiambil.contains(mk) && mk.getDaftarMahasiswa().size() < mk.getKapasitas()) {
matkulDiambil.add(mk);
mk.tambahMahasiswa(this);
}
}
public void dropMatkul(Matkul mk) {
if (matkulDiambil.remove(mk)) {
mk.hapusMahasiswa(this);
}
}
public String tampilkanMatkulDiambil() {
if (matkulDiambil.isEmpty()) {
return "Belum ada mata kuliah yang diambil.\n";
}
StringBuilder sb = new StringBuilder("Mata kuliah yang diambil:\n");
for (Matkul mk : matkulDiambil) {
sb.append("- ").append(mk.getKodeKelas()).append(" | ")
.append(mk.getNamaMatkul()).append(" (")
.append(mk.getSks()).append(" SKS) - Dosen: ")
.append(mk.getDosenPengampu().getNama()).append("\n");
}
return sb.toString();
}
}
Dosen.java
public class Dosen {
private String nama;
private String nip;
public Dosen(String nama, String nip) {
this.nama = nama;
this.nip = nip;
}
public String getNama() {
return nama;
}
public String getNip() {
return nip;
}
}
Matkul.Java
import java.util.ArrayList;
public class Matkul {
private String kodeKelas;
private String namaMatkul;
private int sks;
private int kapasitas;
private Dosen dosenPengampu;
private ArrayList<Mahasiswa> daftarMahasiswa;
public Matkul(String kodeKelas, String namaMatkul, int sks, int kapasitas, Dosen dosenPengampu) {
this.kodeKelas = kodeKelas;
this.namaMatkul = namaMatkul;
this.sks = sks;
this.kapasitas = kapasitas;
this.dosenPengampu = dosenPengampu;
this.daftarMahasiswa = new ArrayList<>();
}
public String getKodeKelas() { return kodeKelas; }
public String getNamaMatkul() { return namaMatkul; }
public int getSks() { return sks; }
public int getKapasitas() { return kapasitas; }
public Dosen getDosenPengampu() { return dosenPengampu; }
public ArrayList<Mahasiswa> getDaftarMahasiswa() { return daftarMahasiswa; }
public void tambahMahasiswa(Mahasiswa m) { daftarMahasiswa.add(m); }
public void hapusMahasiswa(Mahasiswa m) { daftarMahasiswa.remove(m); }
public String tampilkanInfo() {
return kodeKelas + " | " + namaMatkul + " (" + sks + " SKS)\n" +
"Dosen: " + dosenPengampu.getNama() + "\n" +
"Kapasitas: " + daftarMahasiswa.size() + "/" + kapasitas + "\n";
}
}