Pertemuan 6: Latihan Grouping Object
Tugas Pertemuan 6
Nama: Farrel Aqilla Novianto
NRP: 5025241015
Kelas: Pemrograman Berorientasi Objek (A)
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 pada kasus ini, seorang User bisa memiliki banyak Note. Dengan grouping object, hubungan tersebut bisa dimodelkan dengan baik sehingga aplikasi yang dibangun lebih realistis dan sesuai kebutuhan dunia nyata.
Penerapan pada Personal Note App
Untuk menerapkan konsep grouping object, saya membuat sebuah aplikasi sederhana bernama Personal Note App.
Pada aplikasi ini:
- Kelas Note merepresentasikan sebuah catatan yang berisi judul dan isi
- Kelas NotebookApp bertindak sebagai container yang menyimpan banyak objek Note ke dalam sebuah ArrayList
Relasi ini dapat dijelaskan sebagai berikut:
- Satu Notebook (koleksi) → bisa menyimpan banyak Note (catatan)
- Setiap Note adalah objek yang berdiri sendiri, namun mereka dikelompokkan bersama-sama dalam sebuah ArrayList agar bisa dikelola (ditambah, dicari, ditampilkan, atau dihapus)
Kode Note.java
/**
*
* @author Farrel Aqilla Novianto
*/
import java.util.ArrayList;
import java.util.Scanner;
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;
}
@Override
public String toString(){
return "Judul: " + title + "\nIsi: " + content;
}
}
Kode NotebookApp.java
/**
*
* @author Farrel Aqilla Novianto
*/
import java.util.ArrayList;
import java.util.Scanner;
public class NotebookApp{
public static void main(String[] args){
ArrayList 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();
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();
}
}
Dari potongan kode di atas, terlihat bahwa:
-
Objek
Noteberdiri sendiri (independen) -
Namun dengan grouping object (
ArrayList<Note>), semua catatan tersebut bisa dikelola sebagai satu kesatuan yang lebih kompleks
Visualisasi Relasi Objek
-
NotebookApp (main class), mengelola
ArrayList<Note> -
Note (entity class), berisi atribut
titledancontent
Dokumentasi
1. Menambahkan Judul Catatan
2. Melihat Daftar Catatan
3. Mencari Catatan
4. Menghapus Catatan
5. Keluar
Kesimpulan
Konsep Grouping Object sangat penting dalam OOP karena membantu kita memodelkan hubungan antar objek dengan lebih baik. Dalam case ini, grouping object diterapkan dengan menggunakan ArrayList<Note>, sehingga satu aplikasi bisa menyimpan banyak catatan. Dengan konsep ini, aplikasi sederhana pun bisa dikembangkan menjadi lebih kompleks, misalnya dengan menambahkan fitur User yang bisa memiliki banyak catatan, atau fitur Kategori yang bisa mengelompokkan catatan berdasarkan jenisnya.
Komentar
Posting Komentar