Untitled
unknown
plain_text
3 years ago
9.2 kB
9
Indexable
package assignment3;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class SocialMedia {
private List<User> users;
private List<Post> posts;
public SocialMedia() {
users = new ArrayList<>();
posts = new ArrayList<>();
}
public void addUser(User user) {
users.add(user);
}
public void addPost(Post post) {
posts.add(post);
}
}
class User {
private String username;
private List<User> followers;
private List<User> following;
private List<Post> posts;
private List<Comment> comments;
public User(String username) {
this.username = username;
followers = new ArrayList<>();
following = new ArrayList<>();
posts = new ArrayList<>();
comments = new ArrayList<>();
}
public String getUsername() {
return username;
}
public void createPost(String text) {
Post post = new Post(text, this);
posts.add(post);
}
public void followUser(User user) {
following.add(user);
user.followers.add(this);
}
public void likePost(Post post) {
post.addLike(this);
}
public void commentOnPost(Post post, String text) {
Comment comment = new Comment(text, this, post);
post.addComment(comment);
comments.add(comment);
}
public List<Post> getPosts() {
return posts;
}
public List<User> getFollowers() {
return followers;
}
public List<User> getFollowing() {
return following;
}
public List<Comment> getComments() {
return comments;
}
}
class PremiumUser extends User {
private boolean isPremium;
private int premiumPoints;
public PremiumUser(String username) {
super(username);
isPremium = false;
premiumPoints = 0;
}
public void subscribePremium() {
isPremium = true;
System.out.println(getUsername() + " has subscribed to premium membership.");
}
public boolean isPremium() {
return isPremium;
}
public int getPremiumPoints() {
return premiumPoints;
}
public void earnPremiumPoints(int points) {
premiumPoints += points;
System.out.println(getUsername() + " has earned " + points + " premium points.");
}
public void redeemPremiumPoints(int points) {
if (points <= premiumPoints) {
premiumPoints -= points;
System.out.println(getUsername() + " has redeemed " + points + " premium points.");
} else {
System.out.println("Insufficient premium points to redeem.");
}
}
}
class Post {
private String text;
private User author;
private List<User> likes;
private List<Comment> comments;
public Post(String text, User author) {
this.text = text;
this.author = author;
likes = new ArrayList<>();
comments = new ArrayList<>();
}
public void addLike(User user) {
likes.add(user);
}
public void addComment(Comment comment) {
comments.add(comment);
}
public String getText() {
return text;
}
public User getAuthor() {
return author;
}
public List<User> getLikes() {
return likes;
}
public List<Comment> getComments() {
return comments;
}
}
class Comment {
private String text;
private User author;
private Post post;
public Comment(String text, User author, Post post) {
this.text = text;
this.author = author;
this.post = post;
}
public String getText() {
return text;
}
public User getAuthor() {
return author;
}
public Post getPost() {
return post;
}
}
class Advertisement {
private String content;
public Advertisement(String content) {
this.content = content;
}
public void displayAd() {
System.out.println("Displaying ad: " + content);
}
}
public class Main {
public static void main(String[] args) {
// Creating social media instance
SocialMedia socialMedia = new SocialMedia();
// Creating users
User user1 = new User("Fawaz");
PremiumUser user2 = new PremiumUser("Rehel");
User user3 = new User("Sarah");
// Adding users to social media
socialMedia.addUser(user1);
socialMedia.addUser(user2);
socialMedia.addUser(user3);
// User actions
user1.createPost("Hello, everyone!");
if (user2.getPosts().size() > 0) {
user1.likePost(user2.getPosts().get(0)); // John likes Emily's post
user1.commentOnPost(user2.getPosts().get(0), "Great post, Emily!"); // John comments on Emily's post
}
user2.subscribePremium();
user2.createPost("I love this social media platform!");
if (user3.getPosts().size() > 0) {
user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
user2.commentOnPost(user3.getPosts().get(0), "I enjoy using it a lot!!"); // Emily comments on Sarah's post
}
user3.createPost("Good morning, World!");
if (user2.getPosts().size() > 0) {
user3.likePost(user2.getPosts().get(0)); // Sarah likes Emily's post
user2.commentOnPost(user2.getPosts().get(0), "This platform is amazing!"); // Emily comments on her own post
}
// Adding likes and comments to User 1's post
if (user1.getPosts().size() > 0) {
user2.likePost(user1.getPosts().get(0)); // Emily likes John's post
user3.likePost(user1.getPosts().get(0)); // Sarah likes John's post
user2.commentOnPost(user1.getPosts().get(0), "Nice to see you, John!"); // Emily comments on John's post
}
// Adding likes and comments to User 3's post
if (user3.getPosts().size() > 0) {
user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
user2.commentOnPost(user3.getPosts().get(0), "Have a great day!"); // Emily comments on Sarah's post
user1.likePost(user3.getPosts().get(0)); // John likes Sarah's post
user1.commentOnPost(user3.getPosts().get(0), "Goodmorning , Sarah."); // John comments on Sarah's post
}
// Creating advertisements
Advertisement ad1 = new Advertisement("Check out our new product!");
Advertisement ad2 = new Advertisement("Get 50% off on all items!");
// Displaying advertisements
System.out.println("Advertisements:");
ad1.displayAd();
ad2.displayAd();
// Displaying user data
System.out.println("User 1 Posts:");
List<Post> user1Posts = user1.getPosts();
for (Post post : user1Posts) {
System.out.println("- " + post.getText());
System.out.println(" Author: " + post.getAuthor().getUsername());
System.out.println(" Likes: " + post.getLikes().size());
System.out.println(" Comments:");
List<Comment> comments = post.getComments();
for (Comment comment : comments) {
System.out.println(" - " + comment.getText());
System.out.println(" Author: " + comment.getAuthor().getUsername());
}
System.out.println();
}
System.out.println("User 2 Posts:");
List<Post> user2Posts = user2.getPosts();
for (Post post : user2Posts) {
System.out.println("- " + post.getText());
System.out.println(" Author: " + post.getAuthor().getUsername());
System.out.println(" Likes: " + post.getLikes().size());
System.out.println(" Comments:");
List<Comment> comments = post.getComments();
for (Comment comment : comments) {
System.out.println(" - " + comment.getText());
System.out.println(" Author: " + comment.getAuthor().getUsername());
}
System.out.println();
}
System.out.println("User 3 Posts:");
List<Post> user3Posts = user3.getPosts();
for (Post post : user3Posts) {
System.out.println("- " + post.getText());
System.out.println(" Author: " + post.getAuthor().getUsername());
System.out.println(" Likes: " + post.getLikes().size());
System.out.println(" Comments:");
List<Comment> comments = post.getComments();
for (Comment comment : comments) {
System.out.println(" - " + comment.getText());
System.out.println(" Author: " + comment.getAuthor().getUsername());
}
System.out.println();
}
}
}
Editor is loading...