Introducción a la metodología de diseño descendente
Introducción a la metodología de diseño descendente
Introducción a la metodología de diseño descendente
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
© FUOC • P05/75062/00112 16 <strong>Introducción</strong> a <strong>la</strong> <strong>metodología</strong> <strong>de</strong> <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>ntepara razonar <strong>la</strong> corrección <strong>de</strong> esta etapa <strong>de</strong> <strong>diseño</strong>. En el segundo nivel <strong>de</strong>beremos<strong>de</strong>finir los tipos tFrase, para trabajar con los <strong>de</strong>talles que creamos convenientes.Podremos estudiar <strong>la</strong> mejor alternativa, que no tendrá ningún efectosobre el primer nivel, siempre que se respete el significado, implícito en estosmomentos, <strong>de</strong> <strong>la</strong>s acciones y/o funciones que utiliza el algoritmo <strong>de</strong>l primer nivel,y que se <strong>de</strong>sarrol<strong>la</strong>rán en el segundo. Podremos comprobar que cada funcióno acción haga lo que tiene que hacer, sin tener que retroce<strong>de</strong>r a etapas anteriores<strong>de</strong>l <strong>diseño</strong>.Antes <strong>de</strong> proseguir con el problema que nos ilustra este apartado, vamos a hacerotras observaciones. La notación algorítmica nos permite <strong>de</strong>finir accionesy/o funciones y encapsu<strong>la</strong>r subproblemas, tal y como hemos hecho en <strong>la</strong> últimasolución <strong>de</strong>l ejemplo. Los constructores <strong>de</strong> tipos y <strong>la</strong> <strong>de</strong>c<strong>la</strong>ración <strong>de</strong> nuevostipos nos permiten encapsu<strong>la</strong>r <strong>la</strong>s abstracciones <strong>de</strong> datos. De este modo, <strong>la</strong> notaciónnos da todos los elementos necesarios para po<strong>de</strong>r reflejar en el <strong>diseño</strong><strong>la</strong>s abstracciones que hemos realizado y <strong>la</strong> <strong>metodología</strong> seguida en <strong>la</strong>s <strong>de</strong>scomposiciones.Si seguimos <strong>la</strong>s pautas, también podremos evitar reescribir o modificarcada una <strong>de</strong> <strong>la</strong>s etapas previas.1.5. Herramientas <strong>de</strong> <strong>la</strong> notación para abstraer datosComencemos por hab<strong>la</strong>r sobre cómo encapsu<strong>la</strong>r nuestras abstracciones <strong>de</strong> datos.Por ejemplo, intentemos <strong>de</strong>finir <strong>la</strong> abstracción <strong>de</strong> frase <strong>de</strong> nuestro ejemplo.Po<strong>de</strong>mos ver <strong>la</strong> frase como una secuencia <strong>de</strong> pa<strong>la</strong>bras o vocablos, y tambiéncomo una secuencia <strong>de</strong> caracteres. Imaginemos que en <strong>la</strong> aplicación que estamos<strong>de</strong>sarrol<strong>la</strong>ndo nos pi<strong>de</strong>n <strong>de</strong>tectar frases capicúas. Cuando llegásemos alnivel que trata <strong>la</strong> abstracción <strong>de</strong> frase, nos daríamos cuenta <strong>de</strong> que nos hacefalta guardar toda <strong>la</strong> frase para comparar el último carácter con el primero, elpenúltimo con el segundo, etc., aplicando un esquema <strong>de</strong> búsqueda <strong>de</strong>ntro <strong>de</strong>una función que seña<strong>la</strong>ría si una frase es capicúa o no. Para <strong>de</strong>finir los tipos,po<strong>de</strong>mos utilizar los constructores <strong>de</strong> tipos que nos ofrece el lenguaje: tab<strong>la</strong>sy tup<strong>la</strong>s.Por ejemplo, <strong>la</strong> frase“Dábale arroz a <strong>la</strong> zorra el abad”es capicúa.En nuestro caso, puesto que <strong>la</strong> frase consiste en datos homogéneos (caracteres),utilizaríamos <strong>la</strong>s tab<strong>la</strong>s. Por ejemplo:tipoftipotFrase = tab<strong>la</strong> [maxCarFrase + 1] <strong>de</strong> caracter;don<strong>de</strong> maxCarFrase es el máximo <strong>de</strong> caracteres que preveíamos que tendríacada frase. El elemento <strong>de</strong> más es para el centine<strong>la</strong>, ya que a priori no sabemos