html,body{font-size:16px !important;line-height:18px !important;height:100%;color:#333;padding:0;margin:0}*,html,body{font-family:"Poppins",sans-serif;font-weight:normal;letter-spacing:normal;-webkit-font-smoothing:antialiased;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-rendering:geometrirecision;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:none !important;letter-spacing:-0.1px;word-wrap:break-word}.row{display:flex;flex-wrap:wrap;margin-left:-10px;margin-right:-10px;padding:0 2px}.col{flex:0 0 auto;width:25%;margin-bottom:20px;padding-left:10px;padding-right:10px}.col .entity-item{height:100%}strong,b{font-family:"Poppins",sans-serif;font-weight:bold}figure{margin:0;padding:0}a{text-decoration:none;color:#174fae}a:hover{text-decoration:underline}pre{padding:5px;margin-top:20px;background:#f3f3f3;border:1px solid #ccc}p{font-size:18px;line-height:24px}.link{cursor:pointer}.nowrap{white-space:nowrap}.overflow-auto{overflow:auto !important;-webkit-overflow-scrolling:touch !important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:"Poppins",sans-serif;font-weight:bold}.multiple:after{content:',';margin-right:4px}.multiple:last-child:after{content:'';margin-right:0}.icon-home{display:flex;justify-content:center;align-items:center}.icon-home svg{fill:#fff;width:15px;height:15px}.icon svg{fill:#fff;width:35px;height:35px}.m-0{margin:0 !important}.p-0{padding:0 !important}.mt-0{margin-top:0 !important}.mb-0{margin-bottom:0 !important}.mb-2{margin-bottom:10px !important}.me-1{margin-right:5px !important}.me-2{margin-right:10px !important}.mb-4{margin-bottom:20px !important}.mt-2{margin-top:20px !important}.mt-1{margin-top:10px !important}.opacity-0{opacity:0 !important}hr{border:0;border-top:1px solid #ccc}.hide-scrollbar{overflow-x:scroll;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.d-none{display:none !important}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit--select:none;-moz--select:none;-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:hover{text-decoration:none}.btn-link{font-weight:400;color:#0d6efd;text-decoration:none}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark a{color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-dark:hover a{color:#fff;text-decoration:none}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-dark{color:#fff;background-color:#001c4c;border-color:#001c4c}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-rounded{border-radius:50px}.btn-dark:hover{color:#ccc}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-movie{font-size:25px;line-height:25px;padding:0;border-radius:50% !important;width:60px;height:60px;margin:0 15px 0 0;display:flex;justify-content:center;align-items:center}.btn-movie svg{width:30px;height:30px}.btn-icon{line-height:0}.btn-icon svg{fill:#fff;width:1.1em;height:1.1em}.btn-movie:hover svg{fill:#fff}.breadcrumb{font-size:16px;line-height:30px}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/";font-size:12px}.sidebar{display:flex;justify-content:space-between;height:100%;flex-direction:column}.sticky-box{height:100%;width:100%;margin-bottom:20px;padding:0}.banner{position:sticky;top:10px;margin-bottom:20px;margin-left:auto;margin-right:auto}.banner ins{position:sticky;top:10px;text-decoration:none;display:block;overflow:hidden !important}.banner ins:after{content:'PUBLICIDAD';background:#f5f5f5;width:100%;display:block;text-align:center;font-size:12px;line-height:12px;padding:4px 0}.bottom-ad-module{display:none}.roba-mobile{display:none}.roba-mobile,.roba-desktop{min-height:600px}.roba-desktop{display:flex;justify-content:start;align-items:end;flex-direction:column;width:320px;max-width:320px}.board-article-outbrain{margin-bottom:40px}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-):not(.invalid-tooltip):not(.invalid-){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control-sm{min-height:calc(1.5em+.5rem+2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.container{width:1140px;margin-left:auto;margin-right:auto}.top{margin-bottom:20px}.topbar-container{width:100%;background-color:#001c4c}.topbar{position:relative;display:flex;justify-content:center;padding:10px 0;z-index:2}.header-section{border-top:1px solid #fff;background-color:#eaede2;padding:10px 0;text-align:center}.header-section .header-section-title,.header-section .header-section-title a{font-family:"Poppins",sans-serif;font-weight:700;font-size:26px;line-height:26px;margin:0;padding:0;color:#001c4c}.menu-container{width:100%}.menu{position:relative;display:flex;justify-content:center;border-bottom:1px solid #ffffff59;padding:5px 0;z-index:2;background-color:#f3f3f3}.menu .navbar-nav{display:flex;flex-direction:row;list-style:none;padding:0;margin:0}.menu .navbar-nav .nav-link{display:block;padding:.5rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out;color:rgba(0,0,0,.55);font-weight:500;font-size:14px;line-height:14px;text-transform:uppercase}.form-search-container{padding:15px 0;width:auto;background-color:#e9f1f8}.form-search{display:flex;flex-direction:row;justify-content:center;width:1140px;margin-left:auto;margin-right:auto}.form-search form{display:flex;width:50%}.form-search .input-search-autocomplete{background-color:#ffffffa8}.section{width:100%;margin-bottom:40px}.section .section-header{display:flex;align-items:center;justify-content:space-between;border-top:3px solid #001c4c;border-bottom:1px solid #001c4c;margin-bottom:20px}.section .section-header p,.section .section-header h2,.section .section-header h1{font-size:24px;line-height:28px;font-weight:bold;color:#001c4c;font-size:24px;line-height:24px;padding:10px 0;margin:0}.entity-item{display:flex;flex-direction:column;position:relative;width:100%;border-bottom:4px solid #001c4c;background:#f3f3f3;box-shadow:0 0 4px #000;text-align:left;margin-bottom:0}.entity-item .entity-item-details{order:1;padding:10px}.entity-item .entity-title,.entity-item .entity-title a{font-size:18px;line-height:20px;font-family:"Poppins",sans-serif;font-weight:600;color:#333;text-decoration:none;margin-bottom:0;margin-top:0;text-transform:uppercase}.entity-item .entity-title small{font-size:14px;line-height:16px}.entity-item .entity-title a:before{content:"";top:0;left:0;right:0;bottom:0;display:block;margin:0;padding:0;position:absolute;z-index:2}.entity-item .entity-item-image{order:0}.entity-item .figure{position:relative;aspect-ratio:.66666667;display:flex;justify-content:center;align-items:center;background-color:#222;color:#fff;overflow:hidden}.entity-item .figure:after{content:var(--category-var);position:absolute;bottom:5px;right:5px;font-size:14px;line-height:14px;text-align:right;background:#2e579e;color:#fff;font-weight:bold;padding:3px 6px;border-radius:5px}.entity-item .figure .img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.footer{background-color:#001c4c;padding:20px 0}.footer .container{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.footer p{font-size:14px;line-height:1;color:#fff;text-align:center;padding:0 10px}.footer a{color:#ccc}.gallery{display:grid;grid-auto-flow:column;grid-auto-columns:calc(100% / 1.1);gap:10px;overflow-x:scroll;scroll-snap-type:x mandatory;scroll-behavior:smooth}.gallery figure{scroll-snap-align:start;position:relative;aspect-ratio:16 / 9;border-radius:10px;border:1px solid #ccc;display:flex;justify-content:center;align-items:center;background-color:#222;color:#fff;width:100%}.gallery img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:10px}.video-gallery{display:grid;grid-auto-flow:column;grid-auto-columns:calc(100% / 1.1);gap:10px;overflow-x:scroll;scroll-snap-type:x mandatory;scroll-behavior:smooth}.video{scroll-snap-align:start;border-radius:10px;overflow:hidden}.video iframe{width:100%;height:100%;aspect-ratio:16 / 9}.entity-gallery .gallery-row>*{border:1px solid #ffffff00}.entity-gallery .gallery-row{display:grid;grid-auto-flow:column;grid-auto-columns:calc(100% / 4.06);gap:15px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;scroll-padding:0}.entity-gallery .gallery-row-6{grid-auto-columns:calc(100% / 5.9)}.entity-gallery .gallery-column{width:100%;scroll-snap-align:start;object-fit:cover}.entity-gallery .entity-item{display:flex;flex-direction:column;position:relative;margin-bottom:0;height:100%}.carousel-wrapper{position:relative}.carousel-button{position:absolute;top:50%;transform:translateY(-50%);background-color:#00000099;color:white;border:0;padding:10px 10px;cursor:pointer;z-index:10;border-radius:100%;display:flex;justify-content:center;align-items:center}.carousel-button svg{fill:#fff;width:20px;height:20px}.carousel-prev{left:0}.carousel-next{right:0}.accordion{width:100%;border:1px solid #ccc;border-radius:8px}.accordion-item{border-top:1px solid #ccc}.accordion-header{display:flex;justify-content:start;align-items:center;padding:15px;cursor:pointer;font-weight:bold}.accordion-header .badge{background-color:#6c757d;color:#fff;padding:5px 10px;border-radius:4px;font-size:14px}.accordion-checkbox{display:none}.accordion-content{max-height:0;overflow:hidden;transition:max-height .3s ease;padding:0 10px;background-color:#fff}.accordion-checkbox:checked ~ .accordion-content{max-height:500vh;padding:0 10px}.accordion-content .table{width:100%;margin-top:10px;margin-bottom:10px;border-collapse:collapse}.accordion-content .table td{padding:10px;border:1px solid #ddd}.accordion-item:first-of-type{border-top:0}.accordion-header::after{flex-shrink:0;margin-left:auto;content:"+";background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}.accordion-header h4{font-weight:normal}.accordion-content p{margin-top:0}.no-disponible{text-align:center}@media(max-width:1024px){.container{width:100%}.top{margin-bottom:0}.other-container{width:100%;margin:0;padding-left:15px;padding-right:15px}.col{flex:0 0 auto;width:50%}.menu{display:block}.aside-container{display:none}.form-search{width:100%}.form-search form{display:flex;width:100%;margin:0 15px}.entity-item .entity-title,.entity-item .entity-title a{font-size:16px;line-height:18px}.breadcrumb{margin-bottom:10px;padding-left:15px;padding-right:15px}.gallery{grid-auto-columns:calc(100% / 1.1)}.entity-gallery .gallery-row{grid-auto-columns:calc(100% / 2.3)}.section .section-header p,.section .section-header h2,.section .section-header h1{font-size:20px;line-height:22px}.roba-desktop{display:none}.roba-mobile{position:relative;top:0;margin-bottom:30px;display:flex;justify-content:start;align-items:center;flex-direction:column;width:calc(100vw - 30px);max-width:calc(100vw - 30px)}.roba-mobile ins{position:sticky;top:0}.bottom-ad-module{display:block;position:fixed;bottom:0;left:0;width:100%;margin:0;box-shadow:0 -1px 5px 0 rgba(0,0,0,.2);text-align:center;line-height:0;background:#f5f5f5;z-index:3000004;transition:transform .5s ease,opacity .5s ease}.bottom-ad-module-hidden{transform:translateY(100%);opacity:0}.bottom-ad-module .publi-box__close-btn{display:block;color:#666;background:#f5f5f5;z-index:1000001;font-size:17px;padding:5px;box-shadow:1px -2px 2px 0 rgba(0,0,0,.2);border-top-left-radius:8px;width:28px;height:28px;position:absolute;top:-28px;right:0;cursor:pointer}} .article{width:100%}.movie-header{position:relative;margin-bottom:40px;display:flex;flex-direction:row;align-items:flex-start}.movie-header .figure{position:relative;aspect-ratio:.66666667;display:flex;justify-content:center;align-items:center;background-color:#222;color:#fff;width:250px;flex:0 0 250px;overflow:hidden;margin-right:20px}.movie-header .figure .img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.movie-title-container{margin:0 auto;z-index:1;flex:1 1 100%;overflow:hidden}.movie-title-container .title{border-top:4px solid #001c4c;border-bottom:1px solid #ccc;font-weight:bold;font-size:36px;line-height:38px;margin:0;padding:10px 0;margin-bottom:20px;color:#001c4c;text-transform:uppercase}.movie-title-container .author-name{margin-bottom:30px}.movie-title-container .author-name a{font-weight:normal;text-transform:uppercase}.movie-title-container .categories{position:absolute;bottom:0;margin-bottom:0}.movie-title-container .categories-relative{position:relative}.movie-title-container .categories a{margin-bottom:10px;margin-right:5px}.movie-title-container .tagline{margin-bottom:20px}.movie-buttons{display:flex;align-items:center;margin-bottom:20px}.movie-buttons .btn-buy{font-size:20px;line-height:1;font-family:sans-serif;font-weight:normal;text-transform:uppercase;height:60px;justify-content:center;align-items:center;display:flex;padding:0 30px;border-radius:30px}.movie-buttons .discountPercentage{font-size:22px;line-height:22px;font-weight:bold;color:green}.movie-container{display:flex;flex-direction:row}.movie-body{margin:0;width:780px;flex:0 0 780px;overflow:hidden}.aside-container{text-align:right;width:320px;flex:0 0 320px;position:relative;margin-left:40px}.providers{width:100%}.providers .provider-container{margin-bottom:20px}.providers a{margin-right:10px;display:inline-block}.providers a:last-child{margin-right:0}.providers img{width:55px;height:55px;border-radius:5px}.providers .provider-type{display:block;background:#eaede2;padding:5px;margin-bottom:10px;font-weight:bold}.providers .provider-container:last-child{margin-bottom:0}.movie-info .row-info{display:flex;flex-direction:row;margin-top:10px;margin-bottom:10px}.movie-info .col-title{font-size:18px;line-height:24px;width:40%;flex:0 0 40%;display:flex;align-items:center;margin:0;font-weight:normal}.movie-info .col-title .icon{display:flex;margin-right:5px}.movie-info .col-title .icon svg{width:20px;height:20px}.movie-info .col-value{width:60%;flex:0 0 60%}.movie-info .col-value p{padding:0;margin:0}.movie-info .col-value .link{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.movie-share{position:fixed;bottom:10px;right:10px;z-index:1000}.movie-share .btn{font-size:25px;line-height:25px;padding:0;border-radius:50% !important;width:60px;height:60px;display:flex;justify-content:center;align-items:center;background:#064cc3}.movie-share .btn svg{width:30px;height:30px;fill:#fff}.circle-wrap{width:60px;height:60px;background:#ccc;border-radius:50%;margin:0 15px 0 0;z-index:1}.circle-wrap .circle{position:relative}.circle-wrap .circle .mask,.circle-wrap .circle .fill{width:60px;height:60px;position:absolute;border-radius:50%}.mask .fill{clip:rect(0,30px,60px,0);background-color:#000}.circle-wrap .circle .mask{clip:rect(0,60px,60px,30px)}.circle-wrap .inside-circle{font-family:sans-serif;width:49px;height:49px;border-radius:50%;background:#064cc3;color:#fff;position:absolute;z-index:100;font-weight:700;font-size:18px;line-height:18px;top:5px;left:5px;display:flex;justify-content:center;align-items:center}@media(max-width:1024px){.movie-body{width:100%;flex:0 0 100%;overflow:unset}.movie-header{flex-direction:column}.movie-header .figure{margin:0;width:100%;flex:0 0 100%;background-color:transparent;aspect-ratio:unset;padding:20px 50px}.movie-header .figure .img{position:relative;height:auto;box-shadow:0 0 10px 0 #333}.movie-title-container{width:100%;margin:0;padding-left:15px;padding-right:15px;text-align:center}.movie-title-container .title{border-top:0;font-size:26px;line-height:30px;margin:0 0 20px 0}.movie-buttons{flex-direction:column;margin-bottom:30px;border-bottom:1px solid #ccc;padding-bottom:20px}.movie-buttons .btn-buy{margin-bottom:10px}.movie-title-container .categories{position:relative}.movie-container{margin:0;padding-left:15px;padding-right:15px}.movie-info .row-info{flex-direction:column}.movie-info .col-title,.movie-info .col-value p,.movie-info .col-value a{margin:0}.movie-info .col-title{width:100%;flex:0 0 100%;font-weight:600}.movie-info .col-value{width:100%;flex:0 0 100%}}
Estos dos libros ofrecen al lector el máximo de información sobre UML 2.5 y los Design Patterns en PHP. 737 páginas desarrolladas por expertos. Un libro de la colección Recursos Informáticos UML 2.5 - Iniciación, ejemplos y ejercicios corregidos (5ª edición) Este libro sobre UML 2.5 está dirigido tanto a estudiantes como a desarrolladores que se ocupan del modelado de sistemas, de programas y de procesos. Etapa a etapa, el lector descubrirá los elementos de modelado a partir de ejemplos pedagógicos. Tras una introducción a la orientación a objetos, la obra presenta los diferentes diagramas de UML 2.5, desde la descripción de los requisitos a partir de casos de uso, hasta el diagrama de perfil pasando por los diagramas de interacción, de clases, de estructura compuesta, de estados-transiciones y de actividades. El lector aprenderá de qué manera los diagramas de interacción pueden utilizarse para descubrir los objetos que componen el sistema. Esta nueva edición del libro enriquece la descripción de numerosos diagramas e introduce en particular las clases y empaquetados template así como la relación de fusión de los empaquetados Un libro de la colección Expert IT Design Patterns en PHP - Los 23 patrones de diseño: descripciones y soluciones ilustradas en UML2 y PHP (2ª edición) Este libro presenta de manera precisa y práctica los 23 patrones de diseño (design patterns) fundamentales y los ilustra con ejemplos adecuados y rápidos de entender. Cada ejemplo se describe en UML 2 y en PHP, en forma de un pequeño programa completo y ejecutable. Para cada patrón de diseño, los autores detallan su nombre, el problema correspondiente, la solución aportada, sus dominios de aplicación y su estructura genérica. Este libro está pensado para los diseñadores y desarrolladores en Programación Orientada a Objetos. Para entenderlo correctamente, es deseable tener conocimientos de los principales elementos de los diagramas de clases UML y del lenguaje PHP (versión 7 o superior) y sus objetivos. El libro se organiza en tres partes que corresponden a las tres familias de patrones de diseño: los patrones de diseño de construcción, los patrones de diseño de estructuración y los patrones de diseño de comportamiento. Un capítulo introduce tres variantes de patrones de diseño existentes, mostrando la gran flexibilidad en la aplicación de estos patrones. También se estudia el patrón de diseño compuesto MVC (Model-View-Controller). Los ejemplos que se utilizan en estas partes son el resultado de una aplicación de venta on-line de vehículos y se pueden descargar en el sitio web de Ediciones ENI en la dirección www.ediciones-eni.com.