SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Solid Principles
Principios SOLID,[object Object],Martín Salías,[object Object]
Decadencia del software,[object Object],Rigidez,[object Object],Fragilidad,[object Object],Inmovilidad,[object Object],Viscosidad,[object Object],Complejidad innecesaria,[object Object],Repetición innecesaria,[object Object],Opacidad,[object Object]
Newsgroups: comp.object,[object Object],From: rmar...@rcmcon.com (Robert Martin),[object Object],Date: Thu, 16 Mar 1995 15:12:00 GMT,[object Object],Subject: Re: The Ten Commandments of OO Programming,[object Object],---,[object Object],If I had to write commandments, these would be candidates.   ,[object Object],1. Software entities (classes, modules, etc) should be open for extension, but closed for modification. (The open/closed principle -- Bertrand Meyer)   ,[object Object],2. Derived classes must usable through the base class interface without the need for the user to know the difference. (The Liskov Substitution Principle)   ,[object Object],3. Details should depend upon abstractions.  Abstractions should not depend upon details. (Principle of Dependency Inversion)   ,[object Object],4. The granule of reuse is the same as the granule of release. Only components that are released through a tracking system can be effectively reused.   ,[object Object],5. Classes within a released component should share common closure. That is, if one needs to be changed, they all are likely to need to be changed.  What affects one, affects all.   ,[object Object],6. Classes within a released component should be reused together. That is, it is impossible to separate the components from each other in order to reuse less than the total.   ,[object Object],7. The dependency structure for released components must be a DAG. There can be no cycles.     ,[object Object],8. Dependencies between released components must run in the direction of stability. The dependee must be more stable than the depender.   ,[object Object],9. The more stable a released component is, the more it must consist of abstract classes. A completely stable component should consist of nothing but abstract classes.  ,[object Object],10. Where possible, use proven patterns to solve design problems.  ,[object Object],11. When crossing between two different paradigms, build an interface layer that separates the two. Don't pollute one side with the paradigm of the other.,[object Object]
Single Responsibility,[object Object],Open-Closed,[object Object],Liskov Substitution,[object Object],Interface Segregation,[object Object],Dependency Inversion,[object Object]
Responsabilidad única,[object Object],Abierto-Cerrado,[object Object],Substitución de Liskov,[object Object],Segregación de Interfaz,[object Object],Inversión de Dependencia,[object Object]
Unaclasedebetener un únicoeje de cambio.,[object Object]
Responsabilidad única,[object Object],Una clase debe tener una única razón para ser cambiada.,[object Object],Responsabilidad = Eje de cambios,[object Object],(SI el cambio sucede),[object Object],Recibir el primer golpe,[object Object]
Dos responsabilidades,[object Object],MyRectangle,[object Object],Aplicación,[object Object],Geométrica,[object Object],Aplicación,[object Object],Gráfica,[object Object],+ Draw(),[object Object],+ Area() : double,[object Object],GUI,[object Object]
Deslindando responsabilidades,[object Object],Aplicación,[object Object],Gráfica,[object Object],Aplicación,[object Object],Gráfica,[object Object],Aplicación,[object Object],Geométrica,[object Object],Aplicación,[object Object],Geométrica,[object Object],Aplicación,[object Object],Geométrica,[object Object],Aplicación,[object Object],Geométrica,[object Object],GeoRectangle,[object Object],GraphRectangle,[object Object],+ Area() : double,[object Object],+ Draw(),[object Object],GUI,[object Object]
Se debepoder extender el comportamiento sin modificarlo.,[object Object]
Abierto-Cerrado,[object Object],Las entidades de software (clases, módulos, funciones, etc) deben estar abiertas a extensión, pero cerradas a modificación.,[object Object],Acercarse a un ideal,[object Object],Los cambios deben generar código nuevo,no modificar el código viejo.,[object Object]
Cerrando a modificaciones,[object Object],El cliente está abierto ,[object Object],a modificaciones.,[object Object],Servidor,[object Object],Cliente,[object Object],<<Interfaz>>,[object Object],ICliente,[object Object],Cliente,[object Object],Patrón Strategy: ,[object Object],El cliente está abierto,[object Object],y cerrado.,[object Object],Servidor,[object Object]
Cerrando a modificaciones,[object Object],Política,[object Object],Patrón Template Method:,[object Object],La clase base está cerradaa modificaciones.,[object Object],+ ReglaPolitica(),[object Object],- Servicio(),[object Object],Implementación,[object Object],La implementación delmétodo lo abre a cuantasextensiones se necesiten.,[object Object],- Servicio(),[object Object]
Las clasesderivadasdebenpodersustituírseporsus bases.,[object Object]
Substitución de Liskov,[object Object],Los subtipos deben ser substituiblespor sus tipos base.,[object Object],     Si para cada objeto o1 de tipo S hay un objeto o2 de tipo T tal que para todo programa P definido en términos de T, el comportamiento de P no varía cuando o1 es sustitido por o2, entonces S es un subtipo de T.,[object Object],Es la base de poder del polimorfismo.,[object Object],Cuidarse de GetType() y otros datos de tipo en runtime.,[object Object]
Implicancias del LSP,[object Object],La validez depende del contexto,[object Object],No podemos validar un modelo aisladamente,[object Object],Diseñar basándose en comportamientos,[object Object],Presunciones razonables (¿cómo acotarlas?),[object Object]
Diseño por contrato,[object Object],Preservar las invariantes,[object Object],Pre y pos-condiciones,[object Object],La redeclaración de una rutina (en una derivación) debe solamente reemplazar la precondición original con una igual o más débil, y la poscondición original con una igual o más fuerte.,[object Object],Eiffel soporta nativamente DBC,[object Object],En .NET ó Java usamos Unit Tests,[object Object],Soporte incipiente en .NET 4,[object Object]
Un ejemplo más complejo (1),[object Object],Lista,[object Object],Librería,[object Object],Listailimitada,[object Object],Listailimitada,[object Object],Listalimitada,[object Object],Listalimitada,[object Object]
Un ejemplo más complejo (2),[object Object],Lista,[object Object],Librería,[object Object],Listapersistente,[object Object],Listapersistente,[object Object],Listapersistente,[object Object]
Un ejemplo más complejo (3),[object Object],Contenedor,[object Object],Librería,[object Object],Quitar(T),[object Object],Existe(T),[object Object],Listapersistente,[object Object],Listapersistente,[object Object],Lista,[object Object],ListaPersistente,[object Object],Agregar(T),[object Object],Agregar(T),[object Object]
Produzca interfaces de granofinoespecíficaspara un cliente.,[object Object]
Segregación de Interfaz,[object Object],   Los clientes no deben ser forzados a depender de métodos que no usan.,[object Object],Apunta a evitar las interfaces “gordas”.,[object Object],No importa la cantidad de métodos, sino que todos sus clientes las utilicen.,[object Object],Inadvertidamente podemos acoplar clientes que usan ciertos métodos con otros clientes que no los usan.,[object Object]
Una interfaz engorda,[object Object],Timer,[object Object],<<interface>>,[object Object],Cliente Timer,[object Object],+ TimeOut(),[object Object],Puerta,[object Object],+ Trabar(),[object Object],+ Destrabar(),[object Object],+ Abierta(),[object Object],Puerta,[object Object],Puerta temporizada,[object Object]
Separación por delegación,[object Object],Timer,[object Object],<<interface>>,[object Object],Cliente Timer,[object Object],+ TimeOut(),[object Object],Puerta,[object Object],Puerta temporizada,[object Object],Adapter Puerta ,[object Object],Temporizada,[object Object],+ TimeOut(),[object Object],+ TimeOutPuerta(),[object Object],<<instancia>>,[object Object]
Separación por herencia múltiple,[object Object],Timer,[object Object],<<interface>>,[object Object],Cliente Timer,[object Object],Puerta,[object Object],+ TimeOut(),[object Object],Puerta ,[object Object],Temporizada,[object Object],+ TimeOut(),[object Object]
Dependa de abstracciones, no de concreciones.,[object Object]
Inversión de dependencia,[object Object],Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de abstracciones.,[object Object],Las abstracciones no deben depender de detalles. Los detalles deben depender de las abstracciones.,[object Object],	Es el principio general detrás del concepto de Layers o Capas.,[object Object]
Capas acopladas,[object Object],CapaPolítica,[object Object],CapaMecanismo,[object Object],CapaUtilidad,[object Object]
Capas desacopladas,[object Object],Política,[object Object],CapaPolítica,[object Object],<<interface>>,[object Object],Servicio depolíticas,[object Object],Mecanismo,[object Object],CapaMecanismo,[object Object],<<interface>>,[object Object],Servicio demecanismos,[object Object],Utilidad,[object Object],CapaUtilidad,[object Object]
Recursos,[object Object],Artículo del Tío Bob sobrediseño OOhttp://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod,[object Object]
Bibliografíaadicional,[object Object],Matt Weisfeld ,[object Object],Bertrand Meyer,[object Object],Rebecca Wirfs-Brock ,[object Object],Scott Ambler,[object Object],John Hunt,[object Object],David West,[object Object]
martin@salias.com.ar,[object Object],@MartinSalias,[object Object],http://CodeAndBeyond.org,[object Object]

Mais conteúdo relacionado

Mais procurados (20)

Manejo De Excepciones
Manejo De ExcepcionesManejo De Excepciones
Manejo De Excepciones
 
Actividad 3_Impress
Actividad 3_ImpressActividad 3_Impress
Actividad 3_Impress
 
Ipchains emilio cano
Ipchains emilio canoIpchains emilio cano
Ipchains emilio cano
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
Mecanismos de semaforo
Mecanismos de semaforoMecanismos de semaforo
Mecanismos de semaforo
 
Las sentencias de_control[1]
Las sentencias de_control[1]Las sentencias de_control[1]
Las sentencias de_control[1]
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
Las estructuras de control en la programación
Las estructuras de control en la programaciónLas estructuras de control en la programación
Las estructuras de control en la programación
 
Operadores C SHARP
Operadores C SHARPOperadores C SHARP
Operadores C SHARP
 
Las variables y constantes
Las variables y constantesLas variables y constantes
Las variables y constantes
 
Slides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y buclesSlides sesion8 matlab - IF y bucles
Slides sesion8 matlab - IF y bucles
 
SOLID para CatDotNet
SOLID   para CatDotNetSOLID   para CatDotNet
SOLID para CatDotNet
 
Autómata de Pila
Autómata de Pila Autómata de Pila
Autómata de Pila
 
Práctica de flip flops
Práctica de flip flopsPráctica de flip flops
Práctica de flip flops
 
Variables y constantes
Variables  y constantesVariables  y constantes
Variables y constantes
 
Las estructuras de control
Las estructuras de controlLas estructuras de control
Las estructuras de control
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Ámbito de las variables resumen de la clase
Ámbito de las variables resumen de la claseÁmbito de las variables resumen de la clase
Ámbito de las variables resumen de la clase
 
Estructuras secuencial
Estructuras secuencialEstructuras secuencial
Estructuras secuencial
 

Semelhante a Solid Principles

Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosJose E. Rodriguez Huerta
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?Adrian Diaz Cervera
 
Modularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraModularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraAgustin Ramos
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11540deg
 
Cuestionario
CuestionarioCuestionario
CuestionarioJose Nava
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptjhonJD1
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptNachoTValverde
 
Introduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.pptIntroduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.pptdocmarcoantoniosotov
 
Webprendedor 2009 Escalabilidad
Webprendedor 2009 EscalabilidadWebprendedor 2009 Escalabilidad
Webprendedor 2009 Escalabilidadedavism
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptssuser0b0b0e1
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevjtk1
 
Anon metodologia de la programacion orientada a objetos con c++
Anon   metodologia de la programacion orientada a objetos con c++Anon   metodologia de la programacion orientada a objetos con c++
Anon metodologia de la programacion orientada a objetos con c++ratasquerosaXX
 

Semelhante a Solid Principles (20)

Diseño Agile
Diseño AgileDiseño Agile
Diseño Agile
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a Objetos
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?
 
Modularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraModularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidra
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Tema7 herencia
Tema7 herenciaTema7 herencia
Tema7 herencia
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Introduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.pptIntroduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.ppt
 
Webprendedor 2009 Escalabilidad
Webprendedor 2009 EscalabilidadWebprendedor 2009 Escalabilidad
Webprendedor 2009 Escalabilidad
 
Csharp
CsharpCsharp
Csharp
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 
Anon metodologia de la programacion orientada a objetos con c++
Anon   metodologia de la programacion orientada a objetos con c++Anon   metodologia de la programacion orientada a objetos con c++
Anon metodologia de la programacion orientada a objetos con c++
 
Test
TestTest
Test
 

Mais de Martin Salias

Restricciones para la Creatividad
Restricciones para la CreatividadRestricciones para la Creatividad
Restricciones para la CreatividadMartin Salias
 
Arquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilArquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilMartin Salias
 
Organizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesOrganizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesMartin Salias
 
Implementation Patterns
Implementation PatternsImplementation Patterns
Implementation PatternsMartin Salias
 
Building Hybrid Applications
Building Hybrid ApplicationsBuilding Hybrid Applications
Building Hybrid ApplicationsMartin Salias
 
Antipatrones de Software
Antipatrones de SoftwareAntipatrones de Software
Antipatrones de SoftwareMartin Salias
 
Introduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareIntroduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareMartin Salias
 
Arquitectura y ciclo de vida ágil en la práctica
Arquitectura y ciclo de vida ágil en la prácticaArquitectura y ciclo de vida ágil en la práctica
Arquitectura y ciclo de vida ágil en la prácticaMartin Salias
 
High Maturity Agile Practice
High Maturity Agile PracticeHigh Maturity Agile Practice
High Maturity Agile PracticeMartin Salias
 
Explosión de Lenguajes
Explosión de LenguajesExplosión de Lenguajes
Explosión de LenguajesMartin Salias
 

Mais de Martin Salias (17)

Restricciones para la Creatividad
Restricciones para la CreatividadRestricciones para la Creatividad
Restricciones para la Creatividad
 
LeSS Intro
LeSS IntroLeSS Intro
LeSS Intro
 
Arquitectura Ágil
Arquitectura ÁgilArquitectura Ágil
Arquitectura Ágil
 
Arquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilArquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida Ágil
 
Organizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesOrganizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo Ágiles
 
Implementation Patterns
Implementation PatternsImplementation Patterns
Implementation Patterns
 
Why JavaScript
Why JavaScriptWhy JavaScript
Why JavaScript
 
Building Hybrid Applications
Building Hybrid ApplicationsBuilding Hybrid Applications
Building Hybrid Applications
 
Jas 2012 keynote
Jas 2012 keynoteJas 2012 keynote
Jas 2012 keynote
 
Antipatrones de Software
Antipatrones de SoftwareAntipatrones de Software
Antipatrones de Software
 
Introduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareIntroduccion a la Arquitectura de Software
Introduccion a la Arquitectura de Software
 
Refactoring
RefactoringRefactoring
Refactoring
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Arquitectura y ciclo de vida ágil en la práctica
Arquitectura y ciclo de vida ágil en la prácticaArquitectura y ciclo de vida ágil en la práctica
Arquitectura y ciclo de vida ágil en la práctica
 
TDD Workshop
TDD WorkshopTDD Workshop
TDD Workshop
 
High Maturity Agile Practice
High Maturity Agile PracticeHigh Maturity Agile Practice
High Maturity Agile Practice
 
Explosión de Lenguajes
Explosión de LenguajesExplosión de Lenguajes
Explosión de Lenguajes
 

Último

El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Festibity
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 

Último (14)

El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 

Solid Principles

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

Notas do Editor

  1. SOLID principles5 principios rectores de OOD; la base de los patrones de diseño¿una novedad? -&gt; NO
  2. Rigidez: difícil de cambiarFragilidad: fácil de romperInmovilidad: difícil de reutilizarViscosidad: difícil de modificar correctamenteEn el diseño mismoEn el ambiente (compilación, control de fuentes, herramientas que no favorecen una buena manera de hacer las cosas; o la carencia de aquellas que la facilitan).Complejidad: sobre-diseño ó sobre-arquitectura; exceso de especulaciónRepetición: exceso de “copy/paste development”Opacidad: falta total de expresividad= Sample: TheCopyProgram