Evaluasi Akhir Semester
Nama: Azka Rizqullah Ramadhani
NRP: 5025231148
Kelas: Pemrograman Berbasis Object (A)
Soal 1
Apa yang dimaksud dengan Package Library dalam Java. Jelaskan kegunaan dan contoh penggunaannya dalam pemrograman
Jawaban
Package Library dalam java adalah library yang sudah disiapkan java itu sendiri.
import java.util.List;
List<Menu> menus = JSONHandler.getAllMenuItems();
for (Menu menu : menus) {
menuListArea.append(menu.toString() + "\n");
}
java.util.List adalah packagenya dan dibawahnya adalah contoh penggunaannya
Soal 2
Buatlah Rancangan Aplikasi yang diambil dalam Final Project
Jawaban
1. Kelas MainFrame
Tanggung Jawab:
- Mengatur antarmuka pengguna (GUI).
- Menyediakan tombol untuk menambah, mengubah, dan menghapus aktivitas.
- Mengelola interaksi antara pengguna dan data (melalui ActivityManager).
Komponen Utama:
Field:
- activityManager: Instance dari ActivityManager, bertanggung jawab mengelola data aktivitas.
- listModel: Objek DefaultListModel yang digunakan untuk mengelola daftar aktivitas yang ditampilkan di JList.
- activityList: Objek JList yang menampilkan daftar aktivitas di GUI.
Metode Utama:
- addActivity(): Memunculkan dialog input untuk menambahkan aktivitas baru. Jika aktivitas valid, memanggil activityManager.addActivity().
- updateActivity(): Memunculkan dialog input untuk memperbarui aktivitas yang dipilih. Waktu aktivitas diperbarui secara otomatis setelah diperbarui.
- deleteActivity(): Menghapus aktivitas yang dipilih dari daftar.
- refreshActivityList(): Memperbarui tampilan daftar aktivitas di GUI berdasarkan data terbaru dari ActivityManager.
Catatan:
- GUI dirancang dengan antarmuka minimalis menggunakan JList dan tombol-tombol sederhana.
- Kelas ini bertindak sebagai penghubung antara pengguna dan data aktivitas.
2. Kelas ActivityManager
Tanggung Jawab:
- Mengelola data aktivitas, termasuk operasi CRUD.
- Menyediakan abstraksi yang memisahkan pengelolaan data dari antarmuka pengguna.
- Komponen Utama:
Field:
activities: ArrayList<Activity> yang menyimpan daftar aktivitas.
Metode Utama:
- addActivity(String description): Menambahkan aktivitas baru ke dalam daftar.
- updateActivity(int index, String newDescription): Memperbarui deskripsi aktivitas pada indeks tertentu dan memperbarui waktu terakhir diperbarui.
- deleteActivity(int index): Menghapus aktivitas berdasarkan indeks.
- getActivity(int index): Mengembalikan objek Activity berdasarkan indeks.
- getAllActivities(): Mengembalikan salinan daftar aktivitas sebagai ArrayList.
Catatan:
- Bertindak sebagai penyedia data untuk kelas MainFrame.
- Operasi langsung pada data dikelola di sini untuk memastikan manajemen data yang terpusat.
3. Kelas Activity
Tanggung Jawab:
- Menyimpan data terkait aktivitas, termasuk deskripsi dan waktu terakhir diperbarui.
- Memastikan setiap aktivitas memiliki informasi waktu yang relevan.
Komponen Utama:
Field:
- description: String yang menyimpan deskripsi aktivitas.
- timestamp: String yang menyimpan waktu terakhir aktivitas diperbarui.
Metode Utama:
- Konstruktor:
- Activity(String description): Menerima deskripsi aktivitas, dan secara otomatis mencatat waktu pembuatan aktivitas menggunakan updateTimestamp().
- Getter dan Setter:
- getDescription(): Mengembalikan deskripsi aktivitas.
- setDescription(String description): Mengubah deskripsi aktivitas dan memperbarui timestamp.
- Helper Method:
- updateTimestamp(): Memperbarui waktu terakhir aktivitas dengan timestamp terbaru menggunakan SimpleDateFormat.
- Override:
- toString(): Mengembalikan deskripsi aktivitas bersama dengan timestamp, sehingga dapat langsung ditampilkan di GUI.
Catatan:
- Kelas ini berfungsi sebagai model data untuk setiap aktivitas.
- Waktu diperbarui secara otomatis setiap kali deskripsi diubah.
Soal 3
Deskripsikan kegunaan dan ruang lingkup aplikasi
Jawaban
Aplikasi To-Do List berbasis GUI ini dirancang untuk membantu pengguna dalam mencatat, mengelola, dan mengorganisir tugas sehari-hari.
Fitur CRUD:
- Membuat aktivitas baru (Create): Pengguna dapat menambahkan tugas baru ke daftar.
- Melihat aktivitas (Read): Menampilkan daftar semua tugas yang telah ditambahkan.
- Memperbarui aktivitas (Update): Memungkinkan pengguna mengubah deskripsi tugas.
- Menghapus aktivitas (Delete): Menghapus tugas yang sudah tidak relevan.
Aplikasi ini dirancang untuk memenuhi kebutuhan sederhana dalam pengelolaan waktu, baik untuk individu maupun pelajar.
Umpan Balik Pengguna: Menggunakan dialog pop-up untuk memberikan notifikasi, misalnya jika pengguna mencoba menghapus tugas tanpa memilihnya terlebih dahulu.
Target Pengguna:
- Individu: Mereka yang memerlukan alat sederhana untuk mencatat tugas.
- Pelajar: Mahasiswa atau siswa yang ingin meningkatkan pengelolaan waktu.
Ruang Lingkup Teknologi:
- Aplikasi berjalan secara lokal di komputer pengguna.
- Dibangun menggunakan JFrame dan komponen Swing untuk menciptakan antarmuka yang ringan.
import javax.swing.*;
public class ToDoListApp {
public static void main(String[] args) {
SwingUtilities.invokeLater(MainFrame::new);
}
}
import javax.swing.*;
import java.awt.*;
class MainFrame extends JFrame {
private final ActivityManager activityManager;
private final DefaultListModel<String> listModel;
private final JList<String> activityList;
public MainFrame() {
activityManager = new ActivityManager();
listModel = new DefaultListModel<>();
activityList = new JList<>(listModel);
setTitle("To-Do List DaKaFi");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
setLayout(new BorderLayout());
JPanel mainPanel = new JPanel(new BorderLayout());
JPanel buttonPanel = new JPanel(new FlowLayout());
JButton addButton = new JButton("Add");
JButton updateButton = new JButton("Update");
JButton deleteButton = new JButton("Delete");
buttonPanel.add(addButton);
buttonPanel.add(updateButton);
buttonPanel.add(deleteButton);
JScrollPane scrollPane = new JScrollPane(activityList);
mainPanel.add(scrollPane, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
add(mainPanel);
addButton.addActionListener(e -> addActivity());
updateButton.addActionListener(e -> updateActivity());
deleteButton.addActionListener(e -> deleteActivity());
refreshActivityList();
setVisible(true);
}
private void addActivity() {
String activity = JOptionPane.showInputDialog(this, "Enter new activity:");
if (activity != null && !activity.isEmpty()) {
activityManager.addActivity(activity);
refreshActivityList();
}
}
private void updateActivity() {
int selectedIndex = activityList.getSelectedIndex();
if (selectedIndex != -1) {
String newActivity = JOptionPane.showInputDialog(this, "Update activity:",
activityManager.getActivity(selectedIndex).getDescription());
if (newActivity != null && !newActivity.isEmpty()) {
activityManager.updateActivity(selectedIndex, newActivity);
refreshActivityList();
}
} else {
JOptionPane.showMessageDialog(this, "Please select an activity to update.",
"No Selection", JOptionPane.WARNING_MESSAGE);
}
}
private void deleteActivity() {
int selectedIndex = activityList.getSelectedIndex();
if (selectedIndex != -1) {
activityManager.deleteActivity(selectedIndex);
refreshActivityList();
} else {
JOptionPane.showMessageDialog(this, "Please select an activity to delete.",
"No Selection", JOptionPane.WARNING_MESSAGE);
}
}
private void refreshActivityList() {
listModel.clear();
for (Activity activity : activityManager.getAllActivities()) {
listModel.addElement(activity.toString());
}
}
}
import java.util.ArrayList;
class ActivityManager {
private final ArrayList<Activity> activities;
public ActivityManager() {
activities = new ArrayList<>();
}
public void addActivity(String description) {
activities.add(new Activity(description));
}
public void updateActivity(int index, String newDescription) {
activities.get(index).setDescription(newDescription);
}
public void deleteActivity(int index) {
activities.remove(index);
}
public Activity getActivity(int index) {
return activities.get(index);
}
public ArrayList<Activity> getAllActivities() {
return new ArrayList<>(activities);
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
class Activity {
private String description;
private String timestamp;
public Activity(String description) {
this.description = description;
updateTimestamp();
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
updateTimestamp();
}
private void updateTimestamp() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
this.timestamp = sdf.format(new Date());
}
@Override
public String toString() {
return description + " (Last updated: " + timestamp + ")";
}
}
Komentar
Posting Komentar