ORIENTACIÓN A OBJETOS II (OO2) 2019 - Facultad de Informática, Universidad Nacional de La Plata (UNLP) - 3º año
- Diseño Orientado a Objetos
- Patrones de diseño
- Construcción de aplicaciones con frameworks orientados a objetos.
- Refactoring. Testing. Metodologías de Diseño Ágiles.
- La filosofía del proceso de desarrollo de software. Las etapas del proceso de desarrollo de software. Procesos de desarrollo iterativos e incrementales, basados en modelos: utilidad de los modelos. Los modelos a través del proceso de desarrollo de software. Cualidades y clasificación de los modelos.
- UML como Lenguaje de modelado. Diagrama de clases. Diagrama de estados. Diagrama de interacción.
- Introducción a Patrones. Definición de Patrón. Descripción de un patrón. Catálogo de Patrones.
- Patrones de diseño. Definición. Descripción de un patrón de diseño. Organización del Catálogo de patrones de diseño. Utilidad de los patrones de diseño. Selección de los patrones de diseño. Uso de los patrones de diseño.
- Patrones creacionales: Abstract Factory, Singleton.
- Patrones estructurales: Composite, Decorador, Adapter, Proxy.
- Patrones de comportamiento: Observer, State, Strategy, Template Method, Command.
- Introducción a Refactoring. Utilidad del refactoring. Técnica de aplicación del refactoring. Casos de uso. Catalogo de refactoring.
- Manipulación de métodos largos: Extract Method. lnline Method, Replace Temp with Queries, Replace Method with Method Object. Mover aspectos entre objetos: Move Method, Move Field, Extract class. Organización de datos. Self Encapsulate Field, Replace Data Value with Objects, Replace Type Code with Class / Subclass /State- Strategy. Simplificación de invocación de métodos: Rename Method, Replace Constructor with Factory Method, Parameterize Method. Simplificación de expresiones condicionales: Replace Conditional with Polimorfism. Manipulación de la generalización: Pull Up Method. Push Down Method, Extract Subclass, Extract Superclass, Form Template Method, Replace lnheritance with Delegation.
- Refactoring hacia patrones. Unify interfaces with Adapter. Form Template Method. Replace conditional logic with strategy. Replace State-Altering Conditionals with State. Replace Hardcoded Notifications with Observer. Move Embellishment to Decorator.
- Introducción a Frameworks. Reutilización de software vs. reutilización de diseño. Clasificación de frameworks según su propósito.
- Frameworks basados en herencia (white box frameworks). Frameworks basados en composición (black boxframeworks).
- Elementos centrales en la implementación de un framework: Inversión de control, Hostposts, Frozenspots.
- Las plantillas y los ganchos como generadores de hotspots e inversión de control. Su implementación con herencia y con composición.
- Instanciación de frameworks; casos de estudio: Seaside, SUnit.
- Diseño evolutivo de frameworks. El rol estratégico de los patrones, el refactoring, y los tests de unidad.
- Documentación de frameworks: ejemplos, hotspot cards, y patrones
- Testing. Importancia. Tipos de tests: de unidad, de integración, de aceptación. Metodología de desarrollo ágil TDD: "Test Driven Development". Relación entre refactoring y testing.
- Patrones de tests de unidad: familia de frameworks XUnit.
- El framework SUnit de test de unidad en Smalltalk.
BIBLIOGRAFÍA OBLIGATORIA
- Design Patterns. Elements of Reusable Objects Oriented Software. Gamma, Helm, Johnson, Vlissides, Addison-Wesley, Professional Computing Series.
- Refactoring: lmproving the Design of Existing Code. Fowler, Martin. AddisonWesley, 1999
- Refactoring to Patterns. Joshua Kerievsky. Addison Wesley, 2004. ISBN: 0-321-21335-1
- Implementing Application Frameworks: Object-Oriented Frameworks at Work(Hardcover). Mohamed E. Fayad (Editor), Douglas C. Schmidt (Editor), Ralph E.Johnson (Editor).
BIBLIOGRAFÍA COMPLEMENTARIA
- Head First Design Patterns. Elisabeth Freeman, Bert Bates, Kathy Sierra - Computers -2004 -676 pages.
- Extreme Programming Explained. Kent Beck and Cynthia Andres. AddisonWesley, 2005.
- Building Application Frameworks: Object-Oriented Foundations of Framework Design. Mohamed E. Fayad (Editor), Ralph E. Johnson (Author), Douglas C. Schmidt (Editor).
- Domain-Specific Application Frameworks: Frameworks Experience by Industry (Hardcover). Mohamed E. Fayad (Editor), Ralph E. Johnson (Editor).
- Johnson, R. E. 1997. Components, frameworks, patterns. In Proceedings of the 1997 Symposium on Software Reusability (Boston, Massachusetts, United States, May 17 - 20, 1997). M. Harandi, Ed. SSR ’97. ACM Press,New York, NY, 10-17. [PDF]
- Designing Reusable Classes. B. Foote, R. Johnson. Journal of Object-Oriented Programming, 1998.
- D. Roberts and R. Johnson. Evolving Frameworks: A Pattern Language for Developing Object-Oriented Frameworks. Proceedings of Pattern Languages of Programs, Allerton Park, Illinois, September 1996. [PDF]
- Kent Beck. Simple Smalltalk Testing: With Patterns. http://www.xprogramming.com/testfram.htm
- Stephane Ducasse. SUnit Explained. http://www.iam.unibe.ch/~ducasse/