12.07.2015 Views

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

nas, mientras que se utilizan 1 y 0 conSQL Server. Existen, <strong>de</strong> todos modos, variasformas <strong>de</strong> implementar <strong>la</strong>s operaciones<strong>de</strong> persistencia en <strong>la</strong>s fabricacionespuras, como hacer<strong>la</strong>s estáticas o no (Figura2). Nuestra herramienta siempre generacomo estáticas estas operaciones. En cualquiercaso, y aún habiendo <strong>de</strong>cidido que<strong>la</strong>s operaciones <strong>de</strong> persistencia en <strong>la</strong>s fabricacionespuras sean estáticas, nuestraherramienta ofrece dos posibilida<strong>de</strong>s: que<strong>la</strong> fabricación pura genere y directamenteejecute <strong>la</strong> instrucción SQL (opción “FP”en <strong>la</strong> ventana <strong>de</strong> <strong>la</strong> Figura 1), o mediantegeneración <strong>de</strong> sentencias preparadas (opción“FPProc” <strong>de</strong> <strong>la</strong> Figura 1).3.3 Las operaciones <strong>de</strong> persistencia pue<strong>de</strong>ntambién ser asignadas mediante el patrónRCRUD [3]. RCRUD (Reflective Create,Read, Update & Delete) es una c<strong>la</strong>se, totalmentereutilizable, que genera medianteintrospección (Reflection) <strong>la</strong>s operaciones<strong>de</strong> persistencia <strong>de</strong> cualquier c<strong>la</strong>se. El únicorequisito para utilizar RCRUD es que<strong>la</strong>s c<strong>la</strong>ses persistentes sean especializaciones<strong>de</strong> RCRUD.PersonmName:StringmLastName:StringmTelephone:String+select()+insert()+<strong>de</strong>lete()+update()PersistencePerson+$select(p:Person)+$insert(p:Person)+$<strong>de</strong>lete(p:Person)+$update(p:Person)DBBrokerIDatabasepublic c<strong>la</strong>ss Person {…void insert() throwsException {PersistencePerson.insert(this);}....}PersonmName:StringmLastName:StringmTelephone:String+select()+insert()+<strong>de</strong>lete()+update()pmFPA. Delegación mediante métodos estáticos.PersistencePerson+select(N, LN:String)+insert()+<strong>de</strong>lete()+update()DBBrokerIDatabaseB. Delegación a una instancia asociada.public c<strong>la</strong>ss Person {…PersistencePerson mFP;Person(...) {...mFP=newPersistencePerson(this);}...void insert() throwsException {mFP.insert();}....}Figura 2. Posibles formas <strong>de</strong> <strong>de</strong>legar <strong>la</strong>s operaciones <strong>de</strong> persistencia.4. Se genera, a<strong>de</strong>más, <strong>la</strong> base <strong>de</strong> datos resultante<strong>de</strong> transformar el diagrama <strong>de</strong> c<strong>la</strong>ses medianteuno <strong>de</strong> los siguientes patrones:4.1 Una c<strong>la</strong>se, una tab<strong>la</strong>4.2 Un árbol <strong>de</strong> herencia, una tab<strong>la</strong>4.3 Tenemos pendiente <strong>de</strong> implementación <strong>la</strong>generación <strong>de</strong> <strong>la</strong> base <strong>de</strong> datos mediante elpatrón “Un camino <strong>de</strong> herencia, una tab<strong>la</strong>.La siguiente figura muestra tres esquemasre<strong>la</strong>cionales (B, C y D) obtenidos<strong>de</strong> <strong>la</strong> aplicación <strong>de</strong> estos tres

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

Saved successfully!

Ooh no, something went wrong!