Tugas Pertemuan 11 Pemrograman Berbasis Objek (PBO) A 2024

Nama : Amadeo Yesa

NRP : 5025231160

Kelas : A

Tahun : 2024


Pada pertemuan 11, diberikan studi kasus sebuah aplikasi Network, yaitu sebuah jaringan sosial sederhana dengan beberapa fitur dasar:

  • User: Pengguna bisa membuat akun, memposting status, dan menyukai postingan orang lain.
  • Post: Postingan ini akan berisi konten yang dibuat oleh pengguna, seperti teks atau gambar.
  • Network: Kelas ini menyimpan daftar pengguna dan postingan yang ada dalam aplikasi.


Class User

import java.util.ArrayList;
import java.util.List;

public class User {
    private String username;
    private List<Post> posts;

    public User(String username){
        this.username = username;
        this.posts = new ArrayList<>();
    }

    public String getUsername(){
        return username;
    }

    public void addPost(String content){
        Post post = new Post(this, content);
        posts.add(post);
        System.out.println(username + " posted: " + content);
    }

    public void likePost(Post post){
        post.addLike(this);
    }

    public List<Post> getPosts(){
        return posts;
    }
}

Class Post
import java.util.ArrayList;
import java.util.List;

public class Post {
    private User author;
    private String content;
    private List<User> likes;

    public Post(User author, String content){
        this.author = author;
        this.content = content;
        this.likes = new ArrayList<>();
    }

    public String getContent(){
        return content;
    }

    public User getAuthor(){
        return author;
    }

    public List<User> getLikes(){
        return likes;
    }

    public void addLike(User user){
        if(!likes.contains(user)){
            likes.add(user);
            System.out.println(user.getUsername() + " liked: " + content);
        }
    }

    public int getLikeCount(){
        return likes.size();
    }
}

Class Network
import java.util.ArrayList;
import java.util.List;

public class Network {
    private List<User> users;
    private List<Post> posts;

    public Network(){
        users = new ArrayList<>();
        posts = new ArrayList<>();
    }

    public User addUser(String username){
        User user = new User(username);
        users.add(user);
        System.out.println("User added: " + username);
        return user;
    }

    public void addPost(Post post){
        posts.add(post);
    }

    public void showAllPosts(){
        System.out.println("\nAll Posts:");

        for(Post post : posts){
            System.out.println(post.getAuthor().getUsername() + " posted: " + post.getContent() + " - Likes: " + post.getLikeCount());
        }
    }
}

Main
public class Main {
    public static void main(String[] args) {
        Network network = new Network();

        User alice = network.addUser("Alice");
        User bob = network.addUser("Bob");
        
        alice.addPost("Hello, this is Alice's first post!");
        bob.addPost("Hi everyone, Bob here!");

        network.addPost(alice.getPosts().get(0));
        network.addPost(bob.getPosts().get(0));

        bob.likePost(alice.getPosts().get(0));
        alice.likePost(bob.getPosts().get(0));

        network.showAllPosts();
    }    
}


Hasil







Source Code:

Comments

Popular posts from this blog

Evaluasi Tengah Semester Pemrograman Berbasis Objek (PBO) A 2024

Tugas Pertemuan 7 Pemrograman Berbasis Objek (PBO) A 2024

Evaluasi Akhir Semester Pemrograman Berbasis Objek (PBO) A 2024