SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Conceptos Avanzados OO
Principio de Responsabilidad Única Una clase debe tener una, y solo una razón para cambiar ¿Por qué es importante mantener las responsabilidades en clases separadas? Por que cada responsabilidad es un eje de cambio. Cuando los requerimientos cambian, esos cambios se manifiestan a través de un cambio de responsabilidades a través de las clases. Si una clase asume más de una responsabilidad, entonces habrá más de una razón para modificarla.
Principio de Responsabilidad Única(2) 	Si una clase tiene mas de una responsabilidad, entonces estas responsabilidades se acoplan. Los cambios en una responsabilidad pueden afectar o inhibir la habilidad de la clase para cumplir con las demás. Este tipo de acoplamiento resulta en diseños frágiles que se rompen de formas inesperadas cuando hay cambios.
Interface Modem interface Modem { publicvoid marcar(String numero); pubicvoid colgar() publicvoid enviar(char c) publicvoid recibir() }
Modem Correcto
Principio Abierto Cerrado  Debe ser posible extender el comportamiento de una clase, sin modificarlo. Los módulos que conforman el principio abierto-cerrado tienen dos atributos principales.
Abiertos a la extensión Están “Abiertos para la extensión”. Esto significa que el comportamiento del modulo puede ser extendido.  Se puede hacer que el modulo se comporte de maneras nuevas y diferentes conforme cambien los requerimientos de la aplicación, o para cumplir con los requerimientos de nuevas aplicaciones.
Cerrados a la modificación Están “Cerrados a la modificación”. El código fuente de estos módulos es inviolable. Nadie tiene permitido hacer cambios en sus códigos fuentes. Los módulos deben tener una interfaz estable y bien definida que no se modificará para no afectar a otros módulos que dependan de ellos.
Claves del principio Abierto-Cerrado 	El código bien diseñado puede ser extendido sin modificaciones; y que en los programas bien diseñados, se pueden agregar características nuevas agregando nuevo código, en ves de cambiar código antiguo que ya funciona. Nota: La abstracción y el polimorfismo son la clave
Principio de inversión de dependencias 	Se debe depender de abstracciones, no de 	cosas concretas.  	Los módulos de alto nivel no deben 	depender de módulos de bajo nivel. 	Ambos deben depender de abstracciones.  	Las abstracciones no deben depender de 	detalles. Los detalles deben depender de 	las abstracciones.
Principio de sustitución de Liskov Las funciones que usan referencias a clases base, deben ser capases de usar objetos de clases derivadas sin darse cuenta La importancia de este principio se hace evidente cuando deja de cumplirse.
Principio violado publicclass figura { publicvoid dibuja() { if(thisinstanceofPoligono) { dibujaPoligono(); } elseIf(thisinstanceof Circulo) { dibujaCirculo(); } } }
Principio correcto publicclassPoligonoextends Figura { publicvoid dibuja() {…} } publicclass Circulo extends Figura { publicvoid dibuja() {…} }
Principio de segregación de interfaces Los clientes de una clase no deben depender de interfaces que no utilizan. Este principio se ocupa de las desventajas de las interfaces “gordas”. Las clases que tienen interfaces “gordas ” son clases cuyas interfaces no son cohesivas.
En otras palabras, las interfaces de las clases pueden ser separadas en grupos de funciones miembro.  Cada grupo sirve a un conjunto distinto de clientes. Por lo que algunos clientes usan un grupo de funciones miembro, y otros clientes usan los otros grupos. Principio de segregación de interfaces
¿Alguna Pregunta? 16
Gracias 17 http://www.javatutoriales.com/ Java Tutoriales en Facebook

Weitere ähnliche Inhalte

Ähnlich wie Conceptos avanzados oo (presentación 4)

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
Jose E. Rodriguez Huerta
 
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptxMecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
juan gonzalez
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
2008PA2Info3
 
Diseño Estructurado
Diseño EstructuradoDiseño Estructurado
Diseño Estructurado
Drago Díaz
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
vay82
 

Ähnlich wie Conceptos avanzados oo (presentación 4) (20)

JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
TRABAJO DE INVESTIGACION.pdf
TRABAJO DE INVESTIGACION.pdfTRABAJO DE INVESTIGACION.pdf
TRABAJO DE INVESTIGACION.pdf
 
La Herencia y demas
La Herencia y demasLa Herencia y demas
La Herencia y demas
 
Capitulo 7 moving features between objects
Capitulo 7  moving features between objectsCapitulo 7  moving features between objects
Capitulo 7 moving features between objects
 
Unidad_01_04.pdf
Unidad_01_04.pdfUnidad_01_04.pdf
Unidad_01_04.pdf
 
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
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
Definiciones taller 8 agost
Definiciones taller 8 agostDefiniciones taller 8 agost
Definiciones taller 8 agost
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptxMecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Diseño Estructurado
Diseño EstructuradoDiseño Estructurado
Diseño Estructurado
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Solid
SolidSolid
Solid
 
Unidad II_1.pptx
Unidad II_1.pptxUnidad II_1.pptx
Unidad II_1.pptx
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 

Mehr von programadorjavablog

Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)
programadorjavablog
 
Curso scjp 30 navegacion de archivos e io
Curso scjp 30   navegacion de archivos e ioCurso scjp 30   navegacion de archivos e io
Curso scjp 30 navegacion de archivos e io
programadorjavablog
 
Curso scjp 4 declaracion de clases
Curso scjp 4   declaracion de clasesCurso scjp 4   declaracion de clases
Curso scjp 4 declaracion de clases
programadorjavablog
 
Curso scjp 3 identificadores y control de acceso
Curso scjp 3   identificadores y control de accesoCurso scjp 3   identificadores y control de acceso
Curso scjp 3 identificadores y control de acceso
programadorjavablog
 
Curso scjp 2 recordatorio de java
Curso scjp 2   recordatorio de javaCurso scjp 2   recordatorio de java
Curso scjp 2 recordatorio de java
programadorjavablog
 
Programación orientada a aspectos
Programación orientada a aspectosProgramación orientada a aspectos
Programación orientada a aspectos
programadorjavablog
 

Mehr von programadorjavablog (18)

Hibernate - Relaciones
Hibernate - RelacionesHibernate - Relaciones
Hibernate - Relaciones
 
Hibernate - Introducción
Hibernate - IntroducciónHibernate - Introducción
Hibernate - Introducción
 
Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)Conceptos de código limpio (presentación 5)
Conceptos de código limpio (presentación 5)
 
Java 5 se (presentación3)
Java 5 se (presentación3)Java 5 se (presentación3)
Java 5 se (presentación3)
 
Curso scjp 30 navegacion de archivos e io
Curso scjp 30   navegacion de archivos e ioCurso scjp 30   navegacion de archivos e io
Curso scjp 30 navegacion de archivos e io
 
Curso scjp 30 navegacion de archivos e io
Curso scjp 30   navegacion de archivos e ioCurso scjp 30   navegacion de archivos e io
Curso scjp 30 navegacion de archivos e io
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
7iSF-3 scrum
7iSF-3   scrum7iSF-3   scrum
7iSF-3 scrum
 
7iSF-2 rup
7iSF-2   rup7iSF-2   rup
7iSF-2 rup
 
7iSF-1 ingeniería de software
7iSF-1   ingeniería de software7iSF-1   ingeniería de software
7iSF-1 ingeniería de software
 
7iSF-6 temas extra
7iSF-6   temas extra7iSF-6   temas extra
7iSF-6 temas extra
 
7iSF-5 cmm
7iSF-5   cmm7iSF-5   cmm
7iSF-5 cmm
 
Curso scjp 4 declaracion de clases
Curso scjp 4   declaracion de clasesCurso scjp 4   declaracion de clases
Curso scjp 4 declaracion de clases
 
Curso scjp 3 identificadores y control de acceso
Curso scjp 3   identificadores y control de accesoCurso scjp 3   identificadores y control de acceso
Curso scjp 3 identificadores y control de acceso
 
Curso scjp 2 recordatorio de java
Curso scjp 2   recordatorio de javaCurso scjp 2   recordatorio de java
Curso scjp 2 recordatorio de java
 
ICEFaces 2.0
ICEFaces 2.0ICEFaces 2.0
ICEFaces 2.0
 
Html5
Html5Html5
Html5
 
Programación orientada a aspectos
Programación orientada a aspectosProgramación orientada a aspectos
Programación orientada a aspectos
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (15)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Conceptos avanzados oo (presentación 4)

  • 2. Principio de Responsabilidad Única Una clase debe tener una, y solo una razón para cambiar ¿Por qué es importante mantener las responsabilidades en clases separadas? Por que cada responsabilidad es un eje de cambio. Cuando los requerimientos cambian, esos cambios se manifiestan a través de un cambio de responsabilidades a través de las clases. Si una clase asume más de una responsabilidad, entonces habrá más de una razón para modificarla.
  • 3. Principio de Responsabilidad Única(2) Si una clase tiene mas de una responsabilidad, entonces estas responsabilidades se acoplan. Los cambios en una responsabilidad pueden afectar o inhibir la habilidad de la clase para cumplir con las demás. Este tipo de acoplamiento resulta en diseños frágiles que se rompen de formas inesperadas cuando hay cambios.
  • 4. Interface Modem interface Modem { publicvoid marcar(String numero); pubicvoid colgar() publicvoid enviar(char c) publicvoid recibir() }
  • 6. Principio Abierto Cerrado Debe ser posible extender el comportamiento de una clase, sin modificarlo. Los módulos que conforman el principio abierto-cerrado tienen dos atributos principales.
  • 7. Abiertos a la extensión Están “Abiertos para la extensión”. Esto significa que el comportamiento del modulo puede ser extendido. Se puede hacer que el modulo se comporte de maneras nuevas y diferentes conforme cambien los requerimientos de la aplicación, o para cumplir con los requerimientos de nuevas aplicaciones.
  • 8. Cerrados a la modificación Están “Cerrados a la modificación”. El código fuente de estos módulos es inviolable. Nadie tiene permitido hacer cambios en sus códigos fuentes. Los módulos deben tener una interfaz estable y bien definida que no se modificará para no afectar a otros módulos que dependan de ellos.
  • 9. Claves del principio Abierto-Cerrado El código bien diseñado puede ser extendido sin modificaciones; y que en los programas bien diseñados, se pueden agregar características nuevas agregando nuevo código, en ves de cambiar código antiguo que ya funciona. Nota: La abstracción y el polimorfismo son la clave
  • 10. Principio de inversión de dependencias Se debe depender de abstracciones, no de cosas concretas. Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deben depender de abstracciones. Las abstracciones no deben depender de detalles. Los detalles deben depender de las abstracciones.
  • 11. Principio de sustitución de Liskov Las funciones que usan referencias a clases base, deben ser capases de usar objetos de clases derivadas sin darse cuenta La importancia de este principio se hace evidente cuando deja de cumplirse.
  • 12. Principio violado publicclass figura { publicvoid dibuja() { if(thisinstanceofPoligono) { dibujaPoligono(); } elseIf(thisinstanceof Circulo) { dibujaCirculo(); } } }
  • 13. Principio correcto publicclassPoligonoextends Figura { publicvoid dibuja() {…} } publicclass Circulo extends Figura { publicvoid dibuja() {…} }
  • 14. Principio de segregación de interfaces Los clientes de una clase no deben depender de interfaces que no utilizan. Este principio se ocupa de las desventajas de las interfaces “gordas”. Las clases que tienen interfaces “gordas ” son clases cuyas interfaces no son cohesivas.
  • 15. En otras palabras, las interfaces de las clases pueden ser separadas en grupos de funciones miembro. Cada grupo sirve a un conjunto distinto de clientes. Por lo que algunos clientes usan un grupo de funciones miembro, y otros clientes usan los otros grupos. Principio de segregación de interfaces
  • 17. Gracias 17 http://www.javatutoriales.com/ Java Tutoriales en Facebook