1 Algoritmos y programación 3 - cátedra Fontela Diseñando mi solución en POO Eugenio Yolis - Marzo 2008
2 A3F Agenda ● El problema ● Solución rápida ● Limitaciones ● Buscando objetos ● Modificaciones a la solución ● Resumen y pendientes ● Preguntas?
3 Algoritmos y programación 3 - cátedra Fontela El problema
4 A3F API de funciones para un graficador evaluación de funciones matemáticas de una variable [ f(x)] soporte de las siguiente funciones básicas: suma, resta, división, producto, potencia y logaritmo soporte de funciones compuestas [f(g(x))] evaluación (por aproximación) de la función derivada e integral indicar los puntos de intersección entre funciones en un determinado intervalo indicar los máximos y mínimo de una función en un determinado intervalo
5 Algoritmos y programación 3 - cátedra Fontela Solución rápida
6 A3F Diagrama de clases creo que ya tengo el diseño base... empiezo a codificar y despues le voy agregando la funcionalidad pedida
7 A3F Código (1/2)
8 A3F Código (2/2)
9 Algoritmos y programación 3 - cátedra Fontela Limitaciones
10 A3F Limitaciones Solo creo funciones por medio de un string, sería bueno crearlas en forma programática Alto acoplamiento entre el Parser y la clase Funcíon La clase Funcion tiene muchas responsabilidades El metodo “calcular” va a crecer en complejidad a medida que agreguemos funcionalidad Poco extensible, agregar un nuevo operador es complicado
11 Algoritmos y programación 3 - cátedra Fontela Buscando objetos
12 A3F Diagrama de clases ● Cada funcion encapsula la forma de calcular y la cantidad de operandos ● El “arbol” de evaluación se arma solo ● Pueden crearse funciones en forma programática
13 A3F Código (1/2)
14 A3F Código (2/2)
15 Algoritmos y programación 3 - cátedra Fontela Buscando más objetos
16 A3F Buscando más objetos ● Facilita cambio a funciones de 2 variables ● Permite implementar intervalos disjuntos: [0..1] U [5..10] ● Simplifica métodos de busqueda de mínimos y máximos
17 A3F Diagrama de clases
18 A3F Codigo (1/2)
19 A3F Codigo (2/2)
20 Algoritmos y programación 3 - cátedra Fontela Resumen y pendientes
21 A3F Resumen Encapsular todo lo posible Pensar de quién es la responsabilidad Revisar métodos “largos” Revisar clases que tienen “getters” y “setters” para todos sus atributos Revisar el uso de condicionales y estructuras “case” Revisar el uso de tipos “standard” (primitivos, String, List) como parametros de entrada y de retorno
22 A3F Pendientes Como quedarían las implementaciones de las funciones que realizan los cálculos (Suma, División, Potencia, etc..) ? Como se implementarían las funciones compuestas ( f(g(x)) ) ? Como se implementarían las derivadas e integrales ?
23 Algoritmos y programación 3 - cátedra Fontela ¿Preguntas?