Bij deze opdracht ga je het wall-systeem van Facebook nabouwen.
Facebook bestaat uit gebruikers. Iedere gebruiker heeft een gebruikersnaam en een echte (volledige) naam. Daarnaast wordt er van iedere gebruiker een lijst met zijn/haar posts bijgehouden.
Iedere post kan van één van de volgende typen zijn:
Voor iedere post geldt dat er twee lijsten moeten worden bijgehouden. Eén lijst met comments (een bestaat uit de gebruiker die de comment plaatst, de comment zelf en een datum/tijd van plaatsing). Daarnaast is er één lijst met daarin de likes. Deze lijst bevat de gebruikers die deze post geliked hebben.
De User
klasse zal de volgende methodes moeten bevatten:
void addPost(Post post)
om een nieuwe post toe te voegen.void removePost(Post post)
om een post te verwijderen.De Post
klasse zal de volgende methodes moeten bevatten:
void addComment(Comment comment)
om een comment toe te voegen.void removeComment(Comment comment)
om een comment te verwijderen.void like(User user)
om een gebruiker een post te laten liken.void unlike(User user)
om een like die een gebruiker heeft geplaatst weg te halen.int getNumberOfLikes()
om het aantal likes op te vragen van een post.In de Application class wordt al een setup gegeven met een aantal gebruikers en posts. Maak afdrukmethoden in Gebruiker en post.
De volgende code:
public static void main(String[] args) {
// Create a couple of users
User tristan = new User("T-POtje", "Tristan Pothoven");
User evert = new User("EduudE", "Evert Duipmans");
User ruud = new User("Greevmeister", "Ruud Greven");
// Add some posts
Post post1 = new Post("Currently teaching object oriented programming.");
Post post2 = new ImagePost("Look! My cat ate my programming book :-)", "cat.jpg", "Clarendon");
Post post3 = new VideoPost("Inheritance explained in 1 minute...", "inheritance.mp4", 60);
tristan.addPost(post1);
tristan.addPost(post2);
evert.addPost(post3);
// Add some likes
post2.like(evert);
post2.like(ruud);
post3.like(tristan);
post3.like(ruud);
post3.like(evert);
// Add some comments
post2.addComment(new Comment(evert, "That's a very nice cat."));
post3.addComment(new Comment(ruud, "Awesome video! I finally understand inheritance."));
post3.addComment(new Comment(tristan, "Let's add this to the materials of the course!"));
//Print
System.out.println(tristan);
System.out.println("------------------");
System.out.println(evert);
System.out.println("------------------");
System.out.println(ruud);
}
Leverde het volgende resultaat op:
Posts from Tristan Pothoven aka T-POtje:
18/MARCH/2023: Currently teaching object oriented programming. (likes: 0)
Comments: 0
ImagePost on 18/MARCH/2023: Look! My cat ate my programming book :-) (likes: 2)
Comments: 1
EduudE: That's a very nice cat.
Image: cat.jpg (Filter: Clarendon)
------------------
Posts from Evert Duipmans aka EduudE:
VideoPost on 18/MARCH/2023: Inheritance explained in 1 minute... (likes: 3)
Comments: 2
Greevmeister: Awesome video! I finally understand inheritance.
T-POtje: Let's add this to the materials of the course!
Video: inheritance.mp4 (60 sec)
------------------
Posts from Ruud Greven aka Greevmeister:
Process finished with exit code 0