Network Aplication

 

Nama           : Hafidz Panji Ashari
NRP             : 5025231278
Kelas            : PBO-A


  • Kelas User:

    • Mewakili pengguna dalam aplikasi.
    • Pengguna memiliki nama, daftar postingan yang mereka buat (posts), dan daftar postingan yang mereka sukai (likedPosts).
    • Metode createPost membuat postingan baru, dan metode likePost menambahkan "like" ke sebuah postingan.
    import java.util.ArrayList;

    public class User {
        private String name;
        private ArrayList<Post> posts;
        private ArrayList<Post> likedPosts;

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

        public String getName() {
            return name;
        }

        public void createPost(String content) {
            Post post = new Post(content, this);
            posts.add(post);
            Network.getInstance().addPost(post);
            System.out.println(name + " created a post: " + content);
        }

        public void likePost(Post post) {
            if (!likedPosts.contains(post)) {
                likedPosts.add(post);
                post.addLike(this);
                System.out.println(name + " liked the post: " + post.getContent());
            } else {
                System.out.println(name + " has already liked this post.");
            }
        }

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


  • Kelas Post:

    • Mewakili sebuah postingan dalam aplikasi.
    • Postingan memiliki konten, penulis (pengguna yang membuat postingan), dan daftar pengguna yang menyukai postingan (likes).
    • Metode addLike menambahkan "like" dari pengguna ke daftar.
    import java.util.ArrayList;

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

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

        public String getContent() {
            return content;
        }

        public User getAuthor() {
            return author;
        }

        public void addLike(User user) {
            likes.add(user);
        }

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



  • Kelas Network:

    • Mengelola semua pengguna dan postingan dalam aplikasi.
    • Menggunakan pola Singleton, sehingga hanya ada satu instance Network.
    • Menyediakan metode addUser untuk menambahkan pengguna dan addPost untuk menambahkan postingan
    import java.util.ArrayList;

    public class Network {
        private ArrayList<User> users;
        private ArrayList<Post> posts;
        private static Network instance;

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

        public static Network getInstance() {
            if (instance == null) {
                instance = new Network();
            }
            return instance;
        }

        public void addUser(User user) {
            users.add(user);
            System.out.println("User added: " + user.getName());
        }

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

        public ArrayList<User> getUsers() {
            return users;
        }

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



  • Kelas Main:

    • Berfungsi sebagai titik awal program.
    • Membuat instance User, menambahkan mereka ke Network, membuat beberapa postingan, dan memberikan "like" pada postingan.
    public class Main {
        public static void main(String[] args) {
            Network network = Network.getInstance();

            User user1 = new User("Alice");
            User user2 = new User("Bob");

            network.addUser(user1);
            network.addUser(user2);

            user1.createPost("Hello, this is my first post!");
            user2.createPost("Good morning, everyone!");

            Post post1 = network.getPosts().get(0);
            Post post2 = network.getPosts().get(1);

            user2.likePost(post1);
            user1.likePost(post2);
        }
    }



    output











    Comments

    Popular posts from this blog

    Daily Task Manager

    EAS

    DisplayClock