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.

Soal 4

Implementasikan Aplikasi yang telah didesain dengan menggunakan Pemrograman Berbasis Obyek Java

Jawaban

Class ToDoListApp

import javax.swing.*;

public class ToDoListApp {
public static void main(String[] args) {
SwingUtilities.invokeLater(MainFrame::new);
}
}

Class MainFrame

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());
}
}
}


Class ActivityManager

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);
}
}


Class Activity

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 + ")";
}
}


Hasil

Input New List




Update List





Delete List








5. PPT untuk Demo : Link

6. Video Demo: Video

Komentar

Postingan populer dari blog ini

Implementasi Unit Test

Implementasi Support System

Tugas Ticket Machine