<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Generació Javadoc
<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}
## Introducció
En aquest exemple anem a generar la documentació de la classe `Rectangle`.
Posteriorment, aquesta documentació serà publicada mitjançant GitHub Pages.
## Codi font
El codi font de la classe `Rectangle` és:
```java
package ud6.examples;
/**
* Aquesta classe representa un Rectangle.
*
* @author Joan Puigcerver
* @version 1.2 2022-12-12
*/
public class Rectangle {
/**
* Amplada del rectangle.
*/
private int width;
/**
* Altura del rectangle.
*/
private int height;
/**
* Posició del vèrtex de baix a l'esquerra en l'eix X
*/
private int x;
/**
* Posició del vèrtex de baix a l'esquerra en l'eix Y
*/
private int y;
/**
* Crea un Rectangle especificant tots els atributs.
*
* @param width Amplada del Rectaqngle
* @param height Altura del Rectaqngle
* @param x Posició del rectangle en l'eix X
* @param y Posició del rectangle en l'eix Y
*/
public Rectangle(int width, int height, int x, int y) {
this.width = width;
this.height = height;
this.x = x;
this.y = y;
}
/**
* Crea un Rectangle a partir de l'amplada i l'altura.
* Aquest rectangle està posicionat en l'origen de coordenades (0, 0).
*
* @param width Amplada del Rectangle.
* @param height Alçada del Rectangle.
*/
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
this.x = 0;
this.y = 0;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
/**
* Calcula l'àrea del rectangle.
*
* @return Àrea del rectangle
* @since 1.1
*/
public int area(){
// AREA = BASE * ALTURA
return this.width * this.height;
}
/**
* Comprova si el punt especificat (x, y) està dins del rectangle.
*
* @param x Coordenada del punt en l'eix X
* @param y Coordenada del punt en l'eix Y
* @return true si el punt (x, y) està dins del rectangle; false en altre cas.
* @since 1.2
*/
public boolean contains(int x, int y){
boolean insideX = (x >= this.x) && (x <= (this.x + width));
boolean insideY = (y >= this.y) && (y <= (this.y + height));
return insideX && insideY;
}
}
```
Com podeu observar, aquesta classe ha segut documentada mitjançant blocs Javadoc.
## Generació Javadoc
Per generar la documentació cal anar a __Tools > Generate JavaDoc...__,
on hem especificat les següents opcions:
{.center}
- __Scope__: S'ha triat la classe `Rectangle`.
- __Output directory__: S'ha triat el directori __docs__, que s'ha creat anteriorment a l'arrel del projecte.
- __Visibility level__: S'ha triat `private`, per generar la documentació de tots els elements.
Una vegada generadà, podem veure que està disponible al directori __docs__:
{.center}
Si hem deixat marcada l'opció _Open generated documentation in the browser_,
s'obrirà automàticament la documentació en el navegador web, que podem consultar:
{.center}
Amb aquest procés, ja hauriem generat la documentació.
## Publicació a GitHub Pages
Una vegada generada la documentació, podem publicar-la i fer-la pública mitjançant GitHub Pages.
__GitHub Pages__ és un servei que ofereix GitHub que permet publicar una web estàtica allotjada
en un repositori en el domini `github.io`.
Podeu utilitzar aquest servei per publicar la documentació generada.
Abans que res, cal pujar la documentació generada al repositori remot amb __Commit__ i __Push__.
{.center}
Després, cal anar a __Settings > Pages__ i activar l'opció de publicació de GitHub Pages.
En el nostre cas, hem de triar la branca `master` i el directori `docs`.
> GitHub sols permet publicar webs estàtiques des de l'arrel del projecte o el directori docs.
{.center}
Una vegada configurat, GitHub publicarà la documentació del directori __docs__ cada vegada que fem un push,
i serà publicada en l'adreça:
```
https://<owner>.github.io/<repo>/
```
En aquest cas, s'ha publicat a https://fpmislata-daw1-ed.github.io/PuigcerverJoan-ED-solutions/
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari