<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). ![Component](/itb/DAM-ED/UD7/img/component/component.png){.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ó. ![Provided interface](/itb/DAM-ED/UD7/img/component/provided.png){.center} ### Required interface Una __interfície requerida__ (_required interface_) indica que aquest component necessita d'uns mètodes per implementar la seua funcionalitat. ![Required interface](/itb/DAM-ED/UD7/img/component/required.png){.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. ![Ports](/itb/DAM-ED/UD7/img/component/ports.png){.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. ![Assembly](/itb/DAM-ED/UD7/img/component/assembly.png){.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__. ![Delegation Provided](/itb/DAM-ED/UD7/img/component/delegation_provided.png){.center} ::: example El Component1 delega el fet de proporcionar de la interfície al Component2. ::: ![Delegation Required](/itb/DAM-ED/UD7/img/component/delegation_required.png){.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