Deskripsi Studi Kasus Improving Structure With Inheritance

fajarbaskoro 759 views 9 slides Nov 05, 2024
Slide 1
Slide 1 of 9
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9

About This Presentation

Deskripsi Studi Kasus Improving Structure With Inheritance


Slide Content

Deskripsi Studi Kasus
Dalam aplikasi Newtwork Example ini, kita ingin membuat jaringan sosial sederhana
dengan beberapa fitur dasar:
1.User: Pengguna bisa membuat akun, memposting status, dan menyukai
postingan orang lain.
2.Post: Postingan ini akan berisi konten yang dibuat oleh pengguna, seperti teks
atau gambar.
3.Network: Kelas ini menyimpan daftar pengguna dan postingan yang ada dalam
aplikasi.
Struktur Kelas
1.User: Mewakili pengguna dalam aplikasi. Pengguna dapat membuat postingan
atau memberi “like” pada postingan orang lain.
2.Post: Mewakili sebuah postingan atau status. Postingan memiliki konten dan
daftar pengguna yang telah menyukai postingan tersebut.
3.Network: Mengelola semua pengguna dan postingan di dalam aplikasi.
Contoh Output

Implementasi Kode
1. Kelas User
Kelas ini memiliki metode untuk membuat postingan dan memberi like pada postingan
lain.
User Class: Kelas User menyimpan nama pengguna dan daftar postingannya sendiri.
Pengguna dapat membuat postingan baru dengan addPost() dan memberi "like" pada
postingan lain dengan likePost().
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;
}
}

2. Kelas Post
Kelas Post berisi informasi tentang postingan, termasuk konten, daftar likes, dan siapa
penulisnya.
Post Class: Kelas Post menyimpan informasi postingan, termasuk penulis (author),
konten (content), dan daftar pengguna yang menyukai postingan tersebut.
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();
}
}

3. Kelas Network
Kelas Network mengelola seluruh pengguna dan postingan di jaringan sosial.
Network Class: Kelas Network bertindak sebagai pengelola dari daftar pengguna dan
postingan. Ia menyediakan metode untuk menambah pengguna, menyimpan
postingan, dan menampilkan semua postingan di jaringan.
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());
}
}
}

4. Kelas Main (Untuk Menjalankan Program)
Kelas ini digunakan untuk menjalankan aplikasi jaringan sosial kecil ini.
public class Main {
public static void main(String[] args) {
// Buat Network
Network network = new Network();
// Tambah pengguna
User alice = network.addUser("Alice");
User bob = network.addUser("Bob");
// Pengguna membuat postingan
alice.addPost("Hello, this is Alice's first post!");
bob.addPost("Hi everyone, Bob here!");
// Simpan postingan ke Network
network.addPost(alice.getPosts().get(0));
network.addPost(bob.getPosts().get(0));
// Pengguna menyukai postingan
bob.likePost(alice.getPosts().get(0));
alice.likePost(bob.getPosts().get(0));
// Tampilkan semua postingan di network
network.showAllPosts();
}
}
Tags