<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Documentació Xarxa Social
<div class="text-end fit-content ms-auto my-3 mt-auto pt-3">
<p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p>
<p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p>
<p><strong>Curs:</strong> 2024/2025</p>
</div>
<div>
<p class="fw-bold mb-0">Llicència: BY-NC-SA</p>
<p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank">
<img class="mx-auto" src="/itb/images/license.png" alt="Licence"/>
</a>
</div><!--license-->
</div><!--cover-->
</div><!--page-->
{:toc}
## Enunciat
Se'ns ha proporcionat la implementació de la lògica d'una xarxa social.
Aquesta xarxa social permetrà als usuaris publicar
missatges de text, i comentar-los.
::: warning
__NO HEU DE MODIFICAR EL CODI__, sols cal que el documenteu
correctament.
:::
### Entrega
Modifica el fitxer `README.md` de la vostra pràctica
per incloure la documentació generada:
```md
...
- Enllaç a la documentació generada: https://...
```
Cal indicar en la tasca d'Aules:
- L'enllaç als fitxers de la vostra pràctica al repositori de GitHub.
- _Exemple: https://github.com/fpmislata-dam1s-ed/PuigcerverJoan-ED-solutions/tree/master/src/main/java/ud6/practices_
- L'enllaç a la publicació de la documentació a GitHub Pages.
- _Exemple: https://fpmislata-dam1s-ed.github.io/PuigcerverJoan-ED-solutions/_
### Documentació
Cal generar la documentació API de les classes
implementades.
::: info
També cal documentar els mètodes _getter_ i _setter_.
:::
La documentació ha de ser clara i precisa,
i cal incloure les següents etiquetes sempre
que siga possible:
- `@param` per a descriure els paràmetres dels mètodes
- `@return` per a descriure el valor retornat pels mètodes
- `@author` per a indicar l'autor de la classe (tu mateix)
- `@version` per a indicar la versió de la classe (1.0)
- `@see` per a indicar referències a altres classes o mètodes
### Generació
La documentació generada ha d'incloure tots els elements,
fins i tot aquells difinitis amb visibilitat `private`.
::: tip
Vos recomane que genereu la documentació de tot el projecte.
D'aquesta manera, podreu consultar la documentació de les classes
realitzades en altres exercicis.
:::
### Publicació
La documentació s'ha de generar en format HTML
i s'ha de publicar a GitHub Pages.
## Implementació
### User
```java
package ud6.practices;
import java.util.ArrayList;
import java.util.List;
public class User {
private final String username;
private final List<Post> posts;
public User(String username) {
this.username = username;
this.posts = new ArrayList<>();
}
public String getUsername() {
return username;
}
public List<Post> getPosts() {
return posts;
}
public void addPost(Post post) {
posts.add(post);
}
}
```
### Commentable
```java
package ud6.practices;
import java.util.List;
public interface Commentable {
void addComment(Comment comment);
List<Comment> getComments();
}
```
### Comment
```java
package ud6.practices;
import java.util.List;
import java.util.ArrayList;
public class Comment implements Commentable {
private final String content;
private final List<Comment> comments;
public Comment(String content) {
this.content = content;
this.comments = new ArrayList<>();
}
public String getContent() {
return content;
}
public void addComment(Comment comment) {
comments.add(comment);
}
public List<Comment> getComments() {
return comments;
}
}
```
### Post
```java
package ud6.practices;
import java.util.ArrayList;
import java.util.List;
public class Post implements Commentable {
private final String title;
private final String content;
private final List<Comment> comments;
public Post(String title, String content) {
this.title = title;
this.content = content;
this.comments = new ArrayList<>();
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public List<Comment> getComments() {
return comments;
}
public void addComment(Comment comment) {
comments.add(comment);
}
}
```
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari