12.07.2015 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!