<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Diagrames de components
<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ó
Els __diagrames de components__ són un tipus de __diagrames d'estructura UML__
que s'utilitza per representats les parts o components que formen
un sistema i les relacions entre aquestes.
## Elements
### Component
Un __component__ representa una part modular d'un sistema de software que té una funció específica
i que pot ser substituïda per altres components equivalents.
El comportament d'un component es defeneix mitjançant interfícies [proporcionades](#provided-interface) o [requerides](#required-interfaces).
{.center}
### Provided interface
Una __interfície proporcionada__ (_provided interface_) defeneix els mètodes que implementarà o proporcionarà
el component, que podran ser utilitzats per altres parts de l'aplicació.
{.center}
### Required interface
Una __interfície requerida__ (_required interface_) indica que aquest component necessita
d'uns mètodes per implementar la seua funcionalitat.
{.center}
### Ports
Els __ports__ especifiquen un _punt d'interacció_ en un component, que permet interactuar amb el seu entorn, tant amb altres components
com amb components _interns_.
Els ports es representen amb un quadrat en la vora del rectangle del component.
{.center}
### Assemblatge (assembly)
L'__assemblatge__ (_assembly_) és un tipus de relació entre diferents components d'un diagrama. Aquest tipus de relació
indica que un component __proporciona__ o implementa una interfície que serà utilitzada (__requerida__) per l'altre component.
{.center}
::: example
El Component1 proporciona una interfície que serà utilitzada per el Component2.
:::
### Delegació (delegation)
La __delegació__ (_delegation_) és un tipus de relació que connecta el comportament d'un component amb l'implementació de dit comporament.
Aquesta relació representa l'enviament d'esdeveniments a un component, que desviarà o __delegarà__ aquesta petició a un altre component.
Aquest tipus de relacions es poden donar en interficies __proporcionades__ i __requerides__.
{.center}
::: example
El Component1 delega el fet de proporcionar de la interfície al Component2.
:::
{.center}
::: example
El Component2 delega en el Component1 que li proporcione la interfície requerida.
:::
## Recursos i bibliografia
- https://www.uml-diagrams.org/component-diagrams-reference.html
- https://ioc.xtec.cat/materials/FP/Recursos/fp_dam_m05_/web/fp_dam_m05_htmlindex/WebContent/u3/a1/continguts.html
- https://ioc.xtec.cat/materials/FP/Recursos/fp_dam_m05_/web/fp_dam_m05_htmlindex/WebContent/u3/a1/continguts.html#diagrama_de_components
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari