Senin, 27 Oktober 2025

Pertemuan 9 - Implementasi Unit Testing

 Nama    : Safa Mashita

 NRP      : 5025241022

Pertemuan 9 - Implementasi Unit Testing

Pada pertemuan kali ini, saya mempelajari bagaimana membangun sistem sederhana berbasis Object-Oriented Programming (OOP) di Java yang merepresentasikan barang penjualan (SalesItem) beserta komentar pelanggan (Comment).

Tujuannya adalah untuk memahami bagaimana objek saling berinteraksi, bagaimana data seperti nama item, harga, dan ulasan pelanggan disimpan dan dikelola dalam program.

Program ini terdiri dari tiga kelas utama:

  • Comment

  • SalesItem

  • SalesItemTest

Setiap kelas memiliki tanggung jawab masing-masing agar sistem terstruktur dan mudah dikembangkan.


A. Visualisasi Hubungan AntarKelas


Hubungan antar kelas dapat dijelaskan sebagai berikut:

  • Comment
    Menyimpan informasi ulasan pelanggan terhadap suatu barang, seperti nama pengulas, teks komentar, rating, dan jumlah upvote.

  • SalesItem
    Mewakili sebuah produk yang dijual. Menyimpan data nama barang, harga, serta daftar komentar (list of Comment) dari pelanggan.

  • SalesItemTest
    Berfungsi untuk menjalankan dan menguji fungsionalitas kedua kelas di atas. Biasanya digunakan di BlueJ atau melalui main().


B. Alur Program

  1. Objek SalesItem dibuat dengan nama dan harga tertentu.

  2. Beberapa komentar pelanggan (objek Comment) ditambahkan ke item tersebut.

  3. Pengguna dapat memberi upvote/downvote pada komentar.

  4. Program menampilkan daftar komentar dan informasi produk.


C. Kode dan Penjelasan

1. Class Comment

public class Comment {
    private String author;
    private String text;
    private int rating;
    private int votes; 

    public Comment(String author, String text, int rating) {
        this.author = author;
        this.text = text;
        this.rating = rating;
        this.votes = 0;
    }

    public String getAuthor() {
        return author;
    }

    public String getText() {
        return text;
    }

    public int getRating() {
        return rating;
    }

    public int getVotes() {
        return votes;
    }

    public void upvote() {
        votes++;
    }

    public void downvote() {
        if (votes > 0) {
            votes--;
        }
    }

    public String toString() {
        return "\"" + text + "\" by " + author + " | Rating: " + rating + "⭐ | Votes: " + votes;
    }
}

Kegunaan :

Merepresentasikan satu komentar pelanggan.

Atribut :

  • author : nama pengulas

  • text : isi komentar

  • rating : skor dari 1 sampai 5

  • votes : jumlah suara suka

Method  :

  • upvote() : menambah jumlah suara

  • downvote() : mengurangi suara jika > 0

  • toString() : menampilkan komentar dalam format yang rapi

Hubungan :

Digunakan oleh kelas SalesItem untuk menyimpan daftar komentar.


2. Class SalesItem

import java.util.ArrayList;

public class SalesItem {
    private String name;
    private int price;
    private ArrayList<Comment> comments;

    public SalesItem(String name, int price) {
        this.name = name;
        this.price = price;
        this.comments = new ArrayList<>();
    }

    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }

    public void addComment(String author, String text, int rating) {
        Comment newComment = new Comment(author, text, rating);
        comments.add(newComment);
    }

    public void showDetails() {
        System.out.println("Item: " + name);
        System.out.println("Price: Rp" + price);
        System.out.println("=== Comments ===");
        if (comments.isEmpty()) {
            System.out.println("No comments yet.");
        } else {
            for (Comment c : comments) {
                System.out.println(c);
            }
        }
    }
}


Kegunaan :

Merepresentasikan produk yang dijual.

Atribut :

  • name : nama barang

  • price : harga barang

  • comments : daftar ulasan pelanggan

Method  :

  • addComment() : menambahkan komentar baru

  • showDetails() : menampilkan informasi produk dan semua komentar

Hubungan :

Menggunakan Comment untuk membangun daftar ulasan.


3. Class SalesItemTest

public class SalesItemTest {
    public static void main(String[] args) {
        SalesItem item1 = new SalesItem("Wireless Mouse", 120000);
        SalesItem item2 = new SalesItem("Mechanical Keyboard", 450000);

        item1.addComment("Rafi", "Bagus banget, nyaman dipakai!", 5);
        item1.addComment("Lia", "Cukup oke, tapi baterai cepat habis.", 3);

        item2.addComment("Adit", "Keren banget, suara click-nya mantap.", 5);
        item2.addComment("Sinta", "Terlalu berat untuk dipakai lama.", 4);

        item1.showDetails();
        System.out.println();
        item2.showDetails();
    }
}


Kegunaan :

Sebagai kelas uji untuk memastikan fungsi dari SalesItem dan Comment berjalan dengan bena

Atribut : 

Tidak ada atribut, hanya method Main

Method  :

  • main() : membuat objek item, menambahkan komentar, dan menampilkan hasil di konsol.

Hubungan :

Menggunakan kelas SalesItem dan Comment untuk pengujian.


D. Output Program


E. Kesimpulan

Dari latihan kali ini saya belajar bahwa:

  • Setiap kelas memiliki tanggung jawab spesifik sesuai prinsip OOP.

  • Comment digunakan untuk menyimpan data ulasan pelanggan.

  • SalesItem bertanggung jawab terhadap data produk dan daftar komentar.

  • SalesItemTest digunakan untuk melakukan pengujian dan simulasi interaksi antar objek.

  • Dengan pendekatan OOP, program menjadi lebih modular, mudah dibaca, dan mudah dikembangkan ke fitur lebih lanjut (misalnya sistem rating rata-rata atau filter komentar).




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...