Pertemuan 11 PBO A - Implementasi Social Network App

Implementasi Social Network App

Nama : Dapunta Adyapaksi Ratyanasja
NRP : 5025231187
Tugas : Pertemuan 11

Fitur
1. User : Pengguna bisa membuat akun, memposting status, dan menyukai postingan orang lain.
2. Post : Postingan ini akan berisi konten yang dibuat oleh penguna, seperti teks atau gambar.
3. Network : Menyimpan semua data layaknya database.

Penjelasan Kode

1. Class User
Kelas ini bertujuan untuk mewakili seorang pengguna dalam aplikasi jaringan sosial.

Deklarasi Class User
class User {
    // content
}

Deklarasi Atribut
private String username; // Menyimpan nama pengguna dalam bentuk String
private List<Post> posts; // Menyimpan daftar (list) dari objek Post

Konstruktor User
// Membuat objek baru dari kelas User
public User(String username) {
    this.username = username;
    this.posts = new ArrayList<>();
}

Metode getUsername()
// Mengembalikan nilai dari atribut username yang dimiliki oleh pengguna
public String getUsername() {
    return username;
}

Metode addPost()
// Menambahkan postingan baru ke dalam daftar postingan pengguna
public void addPost(String content) {
    Post post = new Post(this, content);
    posts.add(post);
    System.out.println(username + " posted : " + content);
}

Metode likePost()
// Memberikan "like" pada sebuah postingan yang dibuat oleh pengguna lain
public void likePost(Post post) {
    post.addLike(this);
}

Metode getPosts()
// Mendapatkan daftar semua postingan yang dimiliki oleh pengguna
public List<Post> getPosts() {
    return posts;
}

2. Class Post
Kelas ini bertujuan untuk mewakili sebuah postingan dalam aplikasi social network. Setiap postingan dibuat oleh seorang pengguna (User) dan memiliki konten serta daftar pengguna yang menyukainya.

Deklarasi Class Post
class Post {
    // content
}

Deklarasi Atribut
private User author; // Menyimpan objek User
private String content; // Menyimpan isi konten dari postingan dalam bentuk String
private List<User> likes; // Menyimpan (list) dari objek User yang memberikan "like"

Konstruktor Post
// Membuat objek Post yang baru
public Post(User author, String content) {
    this.author = author;
    this.content = content;
    this.likes = new ArrayList<>();
}

Metode getContent()
// Mengambil konten postingan
public String getContent() {
    return content;
}

Metode getAuthor()
// Mengambil penulis postingan
public User getAuthor() {
    return author;
}

Metode getLikes()
// Mengambil daftar pengguna yang telah memberikan "like"
public List<User> getLikes() {
    return likes;
}

Metode addLike()
// Menambahkan pengguna yang menyukai postingan
public void addLike(User user) {
    if (!likes.contains(user)) {
        likes.add(user);
        System.out.println(user.getUsername() + " liked: " + content);
    }
}

Metode getLikeCount()
// Menghitung jumlah pengguna yang telah memberikan "like"
public int getLikeCount() {
    return likes.size();
}

3. Class Network
Kelas Network ini berfungsi untuk mewakili jaringan sosial (social network) yang menyimpan dan mengelola pengguna (User) serta postingan (Post). Kelas ini bertanggung jawab untuk menangani operasi yang terkait dengan pengguna dan postingan dalam jaringan sosial.

Deklarasi Class Network
class Network {
    // content
}

Deklarasi Atribut
private List<User> users; // Menyimpan (list) User yang ada dalam jaringan sosial
private List<Post> posts; // Menyimpan (list) Post yang ada dalam jaringan sosial

Konstruktor Network
// Membuat objek Network yang baru
public Network() {
    users = new ArrayList<>();
    posts = new ArrayList<>();
}

Metode addUser()
// Menambahkan pengguna baru ke dalam jaringan sosial
public User addUser(String username) {
    User user = new User(username);
    users.add(user);
    System.out.println("User added " + username);
    return user;
}

Metode addPost()
// Menambahkan sebuah postingan ke dalam jaringan sosial
public void addPost(Post post) {
    posts.add(post);
}

Metode showAllPosts()
// Menampilkan semua postingan yang ada dalam jaringan sosial
public void showAllPosts() {
    System.out.println("\nAllPosts:");
    for (Post post : posts) {
        System.out.println(post.getAuthor().getUsername() + " posted : " + post.getContent() + " - Likes : " + post.getLikeCount());
    }
}

4. Class SocialNetwork
Kelas SocialNetwork adalah kelas utama (main class) yang menjalankan aplikasi jaringan sosial. Di sini, program dijalankan dan berbagai metode dari kelas lain seperti Network, User, dan Post dipanggil.

Deklarasi Class SocialNetwork
public class SocialNetwork {
    // main
}

Metode main()
// Metode main adalah titik masuk utama untuk eksekusi program Java.
// Semua eksekusi program akan dimulai dari sini.

public static void main(String[] args) {

    // Membuat Objek Network
    Network network = new Network();

    // Menambahkan Pengguna
    User alice = network.addUser("Alice");
    User bob = network.addUser("Bob");

    // Menambahkan Postingan
    alice.addPost("Hello, this is Alice's first post!");
    bob.addPost("Hi everyone, Bob here!");

    // Menambahkan Postingan ke Jaringan
    network.addPost(alice.getPosts().get(0));
    network.addPost(bob.getPosts().get(0));

    // Pengguna Memberikan "Like" pada Postingan
    bob.likePost(alice.getPosts().get(0));
    alice.likePost(bob.getPosts().get(0));

    // Menampilkan Semua Postingan
    network.showAllPosts();
}

Output










Source Code (Full)

Komentar

Postingan Populer