Selasa, 30 September 2025

Pertemuan 6 - Latihan Grouping Object

 Nama     : Safa Mashita

 NRP       : 5025241022


Pertemuan 6 - Personal Note App

Dalam pemrograman berorientasi objek (OOP), terdapat konsep yang disebut Grouping Object. Grouping object adalah cara untuk mengelompokkan beberapa objek agar dapat saling berhubungan dan bekerja sama membentuk suatu sistem yang lebih kompleks. Objek pada OOP biasanya berdiri sendiri, tetapi dalam kenyataannya banyak kasus di mana satu objek memiliki relasi dengan objek lainnya. Misalnya, seorang pengguna (User) bisa memiliki banyak catatan (Note). Dengan grouping object, saya bisa memodelkan hubungan tersebut dengan baik.

Untuk menerapkan konsep grouping object, saya memilih membuat sebuah aplikasi sederhana bernama Personal Note App. 

A. Alur Penggunaan Aplikasi

  1. Menjalankan Program
    User langsung disambut menu utama.

  2. Tambah Catatan
    User pilih menu “Tambah Catatan”, lalu masukkan judul dan isi catatan. Catatan otomatis tersimpan ke dalam ArrayList<Note>.

  3. Lihat Semua Catatan
    User bisa pilih menu “Lihat Semua Catatan” untuk menampilkan daftar catatan yang sudah dibuat.

  4. Cari Catatan
    User pilih menu “Cari Catatan” lalu ketikkan judul. Jika cocok, catatan yang sesuai akan ditampilkan.

  5. Hapus Catatan
    User pilih menu “Hapus Catatan” lalu masukkan judul catatan yang ingin dihapus. Jika judul ada, catatan akan terhapus.

  6. Keluar
    User bisa keluar dari aplikasi dengan pilih menu “Keluar”.


B. Desain Kelas dan Hubungan


Saya membuat dua class utama dalam project ini:
  • Class User : merepresentasikan seorang pengguna aplikasi.

  • Class Note : merepresentasikan catatan yang dimiliki oleh pengguna.

Hubungan antar kelas:

  • Satu objek User dapat memiliki banyak objek Note.

  • Relasi ini disebut one-to-many relationship.

  • Objek Note tidak bisa berdiri sendiri tanpa adanya User.


C. Penjelasan Kode

a. Class Note

public class Note {
    private String title;
    private String content;

    public Note(String title, String content) {
        this.title = title;
        this.content = content;
    }

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }
}

Penjelasan:
  • Atribut:

    • private String title; untuk menyimpan judul catatan.

    • private String content; untuk menyimpan isi catatan.

  • Konstruktor:

    • public Note(String title, String content) digunakan untuk membuat catatan baru dengan judul dan isi sesuai input user.

  • Method:

    • getTitle() untuk mengembalikan nilai judul catatan.

    • getContent() untuk mengembalikan isi catatan.

Dengan class Note, saya dapat membuat objek catatan yang memiliki judul dan isi yang spesifik.


b. Class NotebookApp

import java.util.ArrayList;
import java.util.Scanner;

public class NotebookApp {
    public static void main(String[] args) {
        ArrayList<Note> notes = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        int choice;

        do {
            System.out.println("\n=== Personal Notebook ===");
            System.out.println("1. Tambah Catatan");
            System.out.println("2. Lihat Semua Catatan");
            System.out.println("3. Cari Catatan");
            System.out.println("4. Hapus Catatan");
            System.out.println("5. Keluar");
            System.out.print("Pilih menu: ");
            choice = scanner.nextInt();
            scanner.nextLine(); // clear buffer

            switch (choice) {
                case 1:
                    System.out.print("Masukkan judul catatan: ");
                    String title = scanner.nextLine();
                    System.out.print("Masukkan isi catatan: ");
                    String content = scanner.nextLine();
                    notes.add(new Note(title, content));
                    System.out.println("Catatan berhasil ditambahkan!");
                    break;

                case 2:
                    System.out.println("\nDaftar Catatan:");
                    if (notes.isEmpty()) {
                        System.out.println("Belum ada catatan.");
                    } else {
                        for (int i = 0; i < notes.size(); i++) {
                            System.out.println((i + 1) + ". " + notes.get(i).getTitle());
                        }
                    }
                    break;

                case 3:
                    System.out.print("Masukkan judul catatan yang dicari: ");
                    String searchTitle = scanner.nextLine().toLowerCase();
                    boolean found = false;
                    for (Note note : notes) {
                        if (note.getTitle().toLowerCase().contains(searchTitle)) {
                            System.out.println("\nCatatan ditemukan:\n" + note);
                            found = true;
                        }
                    }
                    if (!found) {
                        System.out.println("Catatan tidak ditemukan.");
                    }
                    break;

                case 4:
                    System.out.print("Masukkan judul catatan yang akan dihapus: ");
                    String deleteTitle = scanner.nextLine().toLowerCase();
                    boolean removed = notes.removeIf(note -> 
                        note.getTitle().toLowerCase().equals(deleteTitle)
                    );
                    if (removed) {
                        System.out.println("Catatan berhasil dihapus.");
                    } else {
                        System.out.println("Catatan dengan judul tersebut tidak ditemukan.");
                    }
                    break;

                case 5:
                    System.out.println("Keluar dari Notebook. Sampai jumpa!");
                    break;

                default:
                    System.out.println("Pilihan tidak valid, coba lagi.");
            }
        } while (choice != 5);

        scanner.close();
    }
}

Penjelasan:
  • Atribut:

    • ArrayList<Note> notes untuk menyimpan kumpulan catatan.

    • Scanner scanner untuk membaca input dari user.

    • int choice untuk menyimpan pilihan menu yang dipilih user.

  • Konstruktor:

    • Tidak ada konstruktor khusus, karena seluruh logika aplikasi langsung dijalankan dalam method main.

  • Method:

    • public static void main(String[] args) method utama yang menjadi titik masuk program. Di dalamnya terdapat logika menu, perulangan, dan pemanggilan operasi catatan.

    • Operasi di dalam main:

      • Tambah Catatan : membuat objek Note baru dan menambahkannya ke ArrayList notes.

      • Lihat Semua Catatan : menampilkan daftar judul catatan yang ada di dalam notes.

      • Cari Catatan : mencari catatan berdasarkan judul (case-insensitive, bisa sebagian).

      • Hapus Catatan : menghapus catatan berdasarkan judul menggunakan removeIf.

      • Keluar : menghentikan program.


D. Output

1. Menambah Catatan


2. Melihat Semua Catatan


3. Mencari Catatan


4. Menghapus Catatan


5. Keluar



E. Kesimpulan

Aplikasi Personal Notebook adalah contoh sederhana tetapi lengkap dari penggunaan grouping object (menggunakan ArrayList<Note>) untuk mengelola banyak objek Note. Desainnya mengikuti prinsip OOP dasar (enkapsulasi pada Note, single responsibility, dan controller NotebookApp yang mengelola koleksi).





Tidak ada komentar:

Posting Komentar

Pertemuan 16 - Membuat Aplikasi CRUD Java

 Nama          : Safa Mashita  NRP            : 5025241022 Membuat Aplikasi CRUD Java - Manajemen Buku Perpustakaan Pada pertemuan ini, saya...