Está en la página 1de 14

Redictado OO2

2022
Dr. Federico Balaguer

1
Cursada
● Temas
1. Refactoring
2. Patterns
3. Frameworks
4. Goto 1
● Material
○ Teorías OO2 2022 + Material Adicional
○ Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Vlissides,
Johnson, Helm)
○ Pharo Smalltalk o Java
● Reuniones semanales
○ Miercoles de 18 a 19:30

2
Redictado OO2: estrategias
Promoción Cursada + Final

● Evaluación Refactoring (21/9) ● Parcial (7/12, 21/12)


● Trabajo Final: ○ Template Method
○ Grupo de hasta 2 alumnos ○ Strategy
○ Presentación grupal: 30/11 ○ State
○ Composite
○ Entrega de código: 7/12 o 14/12 o 21/12
○ Façade
○ Adapter/Decorator
○ Command
○ Refactoring
● Final OO2

3
# Fecha Clase Promoción
1 31-08-2022 P Introduccion
2 07-09-2022 NP Refactoring (No presencial)
3 14-09-2022 P Refactoring II
4 21-09-2022 P Evaluacion Refactoring
5 28-09-2022 - SIN CLASE
6 05-10-2022 P Testing
Frameworks y Patrones de
7 12-10-2022 P frameworks Test Cases
8 19-10-2022 NP
9 26-10-2022 NP Refactoring
Patrones: Adapter,
10 02-11-2022 P Composite,Strategy, Wrappers
11 09-11-2022 P Agregar Cipher
12 16-11-2022 P Patrones Analisis
Branching (sustitucion
13 23-11-2022 P Patrones Juego dinamicos, compuestos)
14 30-11-2022 P Presentacion Proyecto Grupales
15 07-12-2022 P Parcial (1) + Promocion (1)
16 14-12-2022 P Promocion(2)
17 21-12-2022 P Parcial (2)
P = Presencial NP = No Presencial 4
Refactoring

Transformaciones de código que preservan el comportamiento

5
Refactoring
● Transformaciones de código que preservan el comportamiento
○ No corrigen errores
○ No agregan funcionalidad
● Pueden mejoran algún aspecto no funcional del código
○ Configurabilidad
○ Performance
○ Uso de memoria
○ Legibilidad
● Soporte de Herramientas (basados en AST)
○ Renaming: classes, variables, methods
○ Extracting Method class & component
○ Pushing Up/Down: methods&vars

6
Patrón
La mejor solución a un problema recurrente

7
Engine Flameout
● Es un incidente que resulta en el malfuncionamiento de un motor jet
● El entrenamiento de un piloto incluye conocer la mejor solución a este
tipo de problemas
● Diferentes aviones tienen diferentes procedimientos
● Diferentes momentos del vuelo requieren diferentes procedimientos
○ Carreteo
○ Despegue
○ Vuelo
● Importante:
○ Reconocer el problema de manera exacta
○ Encontrar la solución correcta
○ Aplicar la solución de manera apropiada

8
IB6012 (18/08/2015)

9
TNA235 (04/02/2015)

Source (WP:NFCC#4).Licensed under Fair use via Wikipedia10


US Airway 1549

https://youtu.be/JSlbHK07fkY?t=68
11
Design Patterns: smells más comunes
Patron Smell Patron Smell

Template Method 1. No existe una definición única Composite 1. No relación con otras clases de Jerarquía
2. Subclasses invocan “super msg” 2. No implementa add/remove
3. Composite no es polimorfico
Strategy 1. Strategies subclase de la clase “cliente” 4. Composite no delega en la coleccion
2. Strategies no son polimorficas
3. Strategies con estado Façade 1. “Cliente” interactúa con los componentes
4. Implementa más de un método público ( 2. No hay coordinación de las partes
responsabilidad / algoritmo)
Adapter 1. No respeta el protocolo esperado
State 1. Estados subclases del “cliente” 2. Subclase del “adaptado”
2. Se pregunta por nombre o tipo de estado
3. Estados no polimorficos Command 1. Los comandos no son polimórficos
4. No hay cambio de transiciones de estado 2. Existen inter-dependencias
5. Los estados no implementan 3. No existe el “procesador de comandos”
comportamiento diferente

12
Patrones
● Proceso de resolución de Problemas
○ Reconocer el problema de manera exacta
○ Encontrar la solución correcta
○ Aplicar la solución de manera apropiada
● Un Patrón es la mejor solución a un problema recurrente…
● Proceso de resolución de Problemas con Patrones
○ Reconocer el problema de manera exacta
○ Encontrar el patrón que aplica al problema
■ Evaluar ventajas y desventajas
○ Aplicar la solución de manera apropiada
● Suele ocurrir que un patrón soluciona parcialmente el universo del problema, y se
debe seguir resolviendo problemas (menores) de manera iterativa
13
Cosas a tener en cuenta
1. Acceso a Moodle de la materia
2. La semana que viene no hay clase
a. Voy a estar disponible pero tomando examen final
3. Evaluación de Refactoring es el 28 de Septiembre
4. Ejercicios sobre Patrones se publicará la siguiente semana

14

También podría gustarte