Sei sulla pagina 1di 17

Definicin de un SGBD orientado a objetos

Kim (1991) define un modelo de datos orientado a obajetos y una base de datos orientada a objetos y un SGBD orientado a objetos (SGBDOO) de la forma siguiente: Modelo de datos orientado a objetos: Un modelo de datos (lgico) que captura la semntica de los objetos soportados en la programacin orientada a objetos. Base de datos orientada a objetos: Una coleccin persistente y compatible de objetos definida por un modelo de datos orientado a objetos. SGBDOO: El gestor de un base de datos orientada a objetos. Estas definiciones no son muy descriptivas y tienden a reflejar el hecho de que no existe ningn modelo de datos orientado a objetos que sea equivalente al modelo de datos subyacente a los sistemas relacionales. Cada sistema proporciona su propia interpretacin de la funcionalidad bsica. Por ejemplo, Zdonik y Maier (1990) presentan una serie de umbrales que un SGBDOO debe como mnimo satisfacer: (1) debe proporcionar funcionalidad de base de datos; (2) debe soportar el concepto de identidad de los objetos; (3) debe proporcionar un mecanismo de encapsulacin; (4) debe soportar objetos con estado complejo. Los autores argumentan que, aunque la herencia puede ser til, no resulta esencial para la definicin, y un SGBDOO podra existir sin dicho mecanismo. Por el contrario, Khoshafian y Abnous (1990) definen un SGBDOO como: (1) orientacin a objetos = tipos de datos abstractos de datos + herencia + identidad de los objetos; (2) SGBDOO = orientacin a objetos + capacidades de base de datos. Otra definicin ms de un SGBDOO es que proporciona Parsaye et al. (1989): (1) un lenguaje de consulta de alto nivel con capacidades de optimizacin de las consultas en el sistema subyacente; (2) soporte para la persistencia, transacciones atmicas y control de concurrencia y recuperacin; (3) soporte para el almacenamiento de objetos complejos, ndices y mtodos de acceso para una extraccin rpida y eficiente de los datos; (4) SGBDOO = sistema orientado a objetos + (1) + (2) + (3).

Bibliografa: Thomas M. Connolly, Carolyn E. Begg, Sistemas de bases de datos, Un enfoque prctico para diseo, implementacin y gestin, Ed. Pearson Addison Wesley, 4a. Edicin.

* Orientado a objetos: define a la base de datos en trminos de objetos, sus propiedades y sus operaciones. Todos los objetos que tienen la misma estructura y comportamiento pertenecen a una clase y las clases de organizan en jerarquas. Un ODBMS hace que los objetos de la base de datos aparezcan como objetos de un lenguaje de programacin en uno o ms lenguajes de programacin a los que d soporte. Un ODBMS extiende los lenguajes con datos persistentes de forma transparente, control de concurrencia, recuperacin de datos, consultas asociativas y otras capacidades. Los ODBMS usan exactamente el mismo modelo que estos lenguajes de programacin. Los ODBMS son una buena eleccin para aquellos sistemas que necesitan un buen rendimiento en la manipulacin de tipos de dato complejos. Los ODBMS proporcionan los costes de desarrollo ms bajos y el mejor rendimiento cuando se usan objetos gracias a que almacenan objetos en disco y tienen una integracin transparente con el programa escrito en un lenguaje de programacin orientado a objetos, al almacenar exactamente el modelo de objeto usado a nivel aplicativo, lo que reduce los costes de desarrollo y mantenimiento. Historia Los orgenes del trmino orientados a objetos (abreviado OO) se remontan a los lenguajes de programacin orientadas a objetos. Los lenguajes de programacin OO tienen sus races en el lenguaje SIMULA 67, propuesto a finales de la dcada de 1960. En Simula, el concepto de clase agrupa la estructura de datos interna de un objeto en una declaracin de clase, es decir, introduce en el lenguaje Algol los conceptos de objeto y de clase. Como Algol, Simula es un lenguaje fuertemente tipado para entornos compilados. Sin embargo, el primer lenguaje que populariz la aproximacin a objetos fue Smalltalk (1976); este puede considerarse una sntesis de aos del lenguaje Lisp, que ofrece una gran flexibilidad gracias a la interpretacin, y de Simula, aadiendo el concepto de metaclase. Smalltalk ha podido responder a las necesidades de flexibilidad presentadas por el desarrollo de entornos de programacin grficos, favoreciendo la rpida creacin de prototipos de interfaces de usuarios amigables. Fue utilizado con xito en la primera estacin grfica de Xerox. Con la llegada de las estaciones de trabajo en los aos 80, han crecido numerosos lenguajes orientados a objetos inspirados en Simula o Smalltalk. Entre los lenguajes compilados, los ms celebres son C++, Objective C y Eiffel, debido a la compatibilidad del lenguaje o del cdigo producido con el lenguaje de programacin C. La mayor parte de los lenguajes interpretados son extensiones del Lisp; por ejemplo, Loops y CLOS. Es interesante notar que la mayor parte de los lenguajes populares existentes se encuentran en curso de ampliacin para convertirse en

orientados a objetos, incluyendo al Cobol y Ada (ms exactamente Ada 9X, que aporta la herencia). En aos recientes, han aparecido muchos prototipos experimentales y sistemas de bases de datos comerciales orientados a objetos. Entre los primeros se encuentran los sistemas ORION, OpenOODB, IRIS, ODE y el proyecto ENCORE/ObServer. Y entre los sistemas disponibles en el mercado estn: GEMSTONE/OPAL de ServicLogic, ONTOS de Ontologic, Objectivity de Objectivity Inc., Versant de Versant Technologies, ObjecStore de Object Design y O2 de O2 Technology. Esta es solo una lista parcial de los prototipos experimentales y de los sistemas de bases de datos comerciales orientados a objetos. Desafortunadamente, es an demasiado pronto para saber cules sistemas se instalarn como lderes en este campo. Las bases de datos orientados a objetos han adoptado muchos de los objetos creados para los lenguajes de programacin orientados a objetos. SISTEMAS GESTORES DE BASES DE DATOS ORIENTADAS A OBJETOS

BASES DE DATOS ORIENTADAS A OBJETOS Hasta la aparicin de las Bases de Datos (BD) Orientadas a Objetos (BDOO), las Bases de Datos tradicionales no estaban diseadas para almacenar objetos, con lo que al guardar los datos de un programa Orientada a Objetos se incrementaba significativamente la complejidad del programa, dando lugar a ms cdigo y ms esfuerzos de programacin.

Las BDOO estn diseadas para simplificar la Programacin Orientada a Objetos (POO): Almacenan los objetos directamente en la BD, y emplean las mismas estructuras y relaciones que los lenguajes de POO. Se pueden tratar directamente con objetos, no teniendo que hacer la traduccin a tablas o registros. Los objetos se conservan, pueden ser gestionados aunque su tamao sea muy grande, pueden ser compartidos entre mltiples usuarios, y se mantienen tanto su integridad como sus relaciones. Una clase despus de programada es transportada a la BD tal como es, al contrario de lo que sucede en los SGBD relacionales donde el modelo de datos se distribuye en tablas Las BDOO permiten implementar los tres componentes de un modelo de datos: 1. Propiedades estticas (objetos, atributos y relaciones) 2. Reglas de integridad de los objetos y operaciones

3. Propiedades dinmicas

Las BDOO surgen de la combinacin de las BD tradicionales y la POO.

Un Sistema Gestor de Base de Datos Orientados a Objetos (SGBDOO) es un Sistema de Objetos y un Sistema Gestor de Base de Datos (SGBD). Se puede decir que un SGBDOO es un SGBD que almacena objetos incorporando as todas las ventajas de la POO.

CARACTERSTICAS BSICAS DE UN SGBDOO Un SGBDOO debe satisfacer dos criterios: 1. Ser un SGBD lo que se traduce en 5 caractersticas principales: Persistencia Concurrencia Recuperacin ante fallos Gestin del almacenamiento secundario Facilidad de Consultas.

2. Ser un Sistema Orientado a Objetos (OO) por lo que debe cumplir algunas caractersticas como: Encapsulacin Identidad Herencia Polimorfismo. [pic]

Extensibilidad

El sistema de base de datos viene con un conjunto de tipos predefinidos Estos tipos pueden ser utilizados por los programadores para escribir sus aplicaciones y tiene la capacidad de crear nuevos tipos basados en los predefinidos

Persistencia Es la capacidad que tiene el programador para que sus datos se conserven al finalizar la ejecucin de un proceso, de forma que se puedan reutilizar en otros procesos.

La gestin del almacenamiento secundario La gestin del almacenamiento secundario es una caracterstica clsica de los sistemas de gestin de base de datos Por lo general, el apoyo es a travs de un conjunto de mecanismos Estas incluyen administracin de ndices, agrupacin de datos, almacenamiento temporal de datos ,seleccin de la ruta de acceso y optimizacin de consultas.

Concurrencia Con respecto a la gestin de mltiples usuarios al mismo tiempo que interactan con el sistema, el sistema debe ofrecer el mismo nivel de servicio como los actuales sistemas de bases de datos proporcionan.

Recuperacin ante fallos En caso de fallos de hardware o software, el sistema debe recuperar, es decir, llevar en s de nuevo a un estado coherente de los datos. Los fallos de hardware incluyen tanto los fallos de procesador y disco.

Fondo Especial de consultas Permitir al usuario hacer consultas simples a la base de datos.

Debe satisfacer los tres criterios siguientes: Debe ser capaz de expresar en pocas palabras o en unos clics del ratn las consultas

Debe ser eficiente. Debe ser independiente de la aplicacin, es decir, que debera funcionar en cualquier base de datos posible.

Encapsulacin Consiste en la necesidad de distinguir entre la especificacin y la implementacin de una operacin.

Abstraccin Denota las caractersticas esenciales de un objeto que lo distinguen de todos los dems tipos objeto, y proporciona as fronteras conceptuales ntidamente definidas respecto a la perspectiva del observador". Una abstraccin se centra en la visin externa de un objeto, y, por tanto sirve para separar el comportamiento esencial de un objeto de su implantacin.

Clase Las clases se utilizan para crear y manipular objetos.

Herencia Un ejemplo ayudar a ilustrar el inters en que el sistema de proporcionar un mecanismode herencia. Supongamos que tenemos empleados y estudiantes. Cada empleado tiene un nombre, una edad superior a 18 y un salario, l o ella puede morir, casarse y serpagado (como aburrida es la vida de los empleados!). Cada estudiante tiene una edad, un nombre y un conjunto de grados. l o ella puede morir, casarse y tener su promedio calculado.

En un sistema relacional, el diseador de la base de datos define una relacin de los empleados, una relacin de los estudiantes, escribe el cdigo de la matriz, se casan ypagar las operaciones en la relacin del empleado, y escribe el cdigo de la matriz, se casan y el clculo del GPA para el Relacin con los estudiantes. Por lo tanto, la aplicacin programador escribe seis programas.

En un sistema orientado a objetos, utilizando la propiedad de herencia, reconocemos que los empleados y estudiantes son las personas, por lo que tienen algo en comn (el hecho de ser una persona), y tambin tienen algo especfico.

Sobre escritura En contraste con el ejemplo anterior, existen casos en que uno quiere tener el mismo nombre utilizado para diferentes operaciones.

CARACTERISTICAS OPCIONALES DE LOS SGBOO

Herencia mltiple Una clase puede heredar de varias clases.

La verificacin de tipos y la inferencia de tipo El grado de comprobacin de tipos que el sistema funcionar en tiempo de compilacin se deja abierto, pero mientras ms, mejor. La situacin ptima es aquella donde un programa que fue aceptado por el compilador no puede producir en tiempo de ejecucin los errores de tipo. El importe de la inferencia de tipo tambin se deja abierta a la diseador del sistema: cuanto ms mejor, la situacin ideal es aquella en la que slo los tipos de base tienen que ser declarados y el sistema deduce el tipo temporal

Distribucin Debe quedar claro que esta caracterstica es ortogonal a la naturaleza orientada a objetos del sistema. As, el sistema de base de datos puede ser distribuido o no.

Versiones Tener soporte para versiones

Paradigma de programacin Se puede elegir entre distintos tipos de programacin: el estilo de programacin lgica, el estilo de programacin funcional o el estilo de programacin imperativa o de soporte de mltiples paradigmas de programacin

Bloqueo Los SGBDOO te pueden proporciona el bloqueo: Bloqueos de Lectura.- Leer una dato y que no quieres que nadie lo modifique mientras los estas usando. Bloqueos de Escritura.- Bloquear el Objeto mientras yo estoy escribiendo (nadie ms puede escribir).

MODELO PROPUESTO POR EL OBJECT DATABASE MANAGEMENT GROUP (ODMG)

INTRODUCCIN El ODMG es un consorcio industrial de vendedores de SGBDOO que despus de su creacin se afili al Object Management Group (OMG). El ODMG no es una organizacin de estndares acreditada en la forma en que lo es ISO o ANSI pero tiene mucha influencia en lo que a estndares sobre SGBDO se refiere.

En 1993 public su primer conjunto de estndares sobre el tema, el ODMG-93, que en 1997 evolucionado hacia el ODMG 2.0, en enero de 2000 se publico el ODMG 3.0 aun a estos esfuerzos en el caso de las BDOO la carencia de un estndar es la mayor limitacin para su uso generalizado.

ODMG-93 adopta una arquitectura que consta de: 1 Sistema de gestin que soporta un lenguaje de BDOO, con una sintaxis similar a un lenguaje de programacin OO (C++, Smalltalk, por ejemplo).

El lenguaje de BD es especificado mediante: 1 Lenguaje de Definicin de Objetos (ODL) que se corresponde con el DDL de los SGBD tradicionales, 1 Lenguaje de Manipulacin de Objetos (OML) 1 Lenguaje de Consulta (OQL).

En esta arquitectura: 1. El programador escribe declaraciones para el esquema de la aplicacin, y un programa fuente para la implementacin.

2. El programa fuente se escribe en un lenguaje de programacin orientado a objetos

3. Las declaraciones del esquema pueden escribirse mediante una extensin del lenguaje de programacin o en un lenguaje de programacin independiente ODL.

4. Las declaraciones y el programa fuente son compilados con el SGBDOO para producir la aplicacin ejecutable. La aplicacin accede a BD nuevas o ya existentes, cuyos tipos deben estar de acuerdo con las declaraciones.

EL MODELO DE OBJETOS

El modelo de objetos ODMG permite que tanto los diseos, como las implementaciones, sean portables entre los sistemas que lo soportan.

Dispone de las siguientes primitivas de modelado: 1. Los componentes bsicos de una base de datos orientada a objetos son los objetos y los literales. 2. Un objeto es una instancia autocontenida de una entidad de inters del mundo real.

3. Los objetos tienen algn tipo de identificador nico. 4. Un literal es un valor especfico, como Amparo o 36. 5. Los literales no tienen identificadores. 6. Un literal no tiene que ser necesariamente un solo valor, puede ser una estructura o un conjunto de valores relacionados que se guardan bajo un solo nombre. 7. Los objetos se dividen en tipos. 8. Los objetos de un mismo tipo tienen un mismo comportamiento y muestran un rango de estados comn 9. El comportamiento se define por un conjunto de operaciones que pueden ser ejecutadas por un objeto del tipo. 10. El estado de los objetos se define por los valores que tienen para un conjunto de propiedades. 11. Las propiedades pueden ser: Atributos del objeto: Los atributos toman literales por valores y son accedidos por operaciones del tipo get_value y set_value. Relacionales entre el objeto y uno o ms objetos: Son propiedades que se definen entre tipos de objetos, no entre instancias. 12. Las relaciones pueden ser: 1a1 1 a muchos Muchos a muchos. 13. Un tipo tiene una interfaz y una o ms implementaciones. 14. La interfaz define las propiedades visibles externamente y las operaciones soportadas por todas las instancias del tipo. 15. La implementacin define la representacin fsica de las instancias del tipo y los mtodos que implementan las operaciones definidas en la interfaz. 16. Los tipos pueden tener las siguientes propiedades: Supertipos. Los tipos se pueden jerarquizar. Todos los atributos, relaciones y operaciones definidas sobre un supertipo son heredadas por los subtipos.

Los subtipos pueden aadir propiedades y operaciones adicionales para proporcionar un comportamiento especializado a sus instancias. Adems de la herencia simple, se admite la herencia mltiple, y en el caso de que 2 propiedades heredadas coincidan en el subtipo, se redefinir el nombre de una de ellas.

17. Claves: propiedad o conjunto de propiedades que identifican de forma nica las instancias de un tipo. Las claves simples estn constituidas por una nica propiedad. Las claves compuestas estn constituidas por un conjunto de propiedades. Las claves pueden estar constituidas no slo por atributos, sino tambin por relaciones.

18. Un tipo puede tener una o ms implementaciones. A cada una de estas implementaciones se le da un nombre, que adems debe ser nico dentro del mbito definido por un tipo. Las implementaciones asociadas a un tipo son separadas lxicamente en el Lenguaje de Definicin de Objetos (ODL). Una clase, en este modelo, es la combinacin de la interfaz del tipo y una de las implementaciones definidas. El hecho de permitir varias implementaciones presenta varias ventajas. La primera de ellas es que soporta fcilmente BD que estn sobre redes, donde puede haber mquinas con arquitecturas diferentes (soportando mezcla de lenguajes y compiladores). La segunda es que facilita al programador su tarea al poder comparar fcilmente cul de las implementaciones se comporta mejor. La implementacin que emplee un objeto se especifica en tiempo de creacin. LENGUAJE DE DEFINICION DE DATOS (ODL) El ODL es el equivalente del Lenguaje de Definicin de Datos (DDL) de los SGBD tradicionales.

Define: Los atributos y las relaciones entre tipos, y especifica la signatura de las operaciones. En una BD relacional define las tablas, los atributos en la tabla, el dominio de los atributos y las restricciones sobre un atributo o una tabla. El ODL adems debe poder definir tambin mtodos, jerarquas, herencia, etc. Tipos en el lenguaje ODL El ODL ofrece al diseador de BD un sistema de tipos semejantes a los de otros lenguajes de programacin comunes: Se pueden crear tipos complejos a partir de otros ms simples.

Los tipos permitidos son: 1. Tipos bsicos que son: a. Tipos atmicos: Enteros, De punto flotante, Caracteres Cadenas de caracteres Booleanos. b. Enumeraciones.- Conjunto de valores. 2. Tipos de interfaz o estructurados.- Son tipos complejos obtenidos al combinar tipos bsicos por medio de los siguientes constructores de tipos 3. Lista.- Denota el tipo cuyos valores son listas ordenadas finitas conteniendo 0 o ms elementos del tipo 4. Array (Array) denota el tipo cuyos elementos son arrays de i elementos del tipo tipo. 5. Estructura

Hay reglas sobre qu tipos pueden asociarse a atributos y cules a relaciones o El tipo de un atributo se construye partiendo de un tipo bsico o de una estructura cuyos campos sean bsicos. o El tipo de una relacin es un tipo de interfaz o un tipo de coleccin que se aplica a un tipo de interfaz.

LENGUAJE DE MANIPULACION DE OBJETOS (OML) El OML es empleado para la elaboracin de programas que permitan crear, modificar y borrar datos que constituyen la BD. El ODMG no propone un OML estndar, simplemente sugiere que este lenguaje sea la extensin de un lenguaje de programacin, de forma que se puedan realizar, entre otras, las siguientes operaciones sobre la BD: Creacin de un objeto

Borrado de un objeto Modificacin de un objeto Identificacin de un objeto LENGUAJE DE CONSULTA DE OBJETOS (OQL) El OQL es un lenguaje declarativo del tipo de SQL que permite realizar consultas de modo eficiente sobre bases de datos orientadas a objetos, incluyendo primitivas de alto nivel para conjuntos de objetos y estructuras. Est basado en SQL-92, proporcionando un superconjunto de la sintaxis de la sentencia SELECT.

OQL no posee primitivas para modificar el estado de los objetos ya que las modificaciones se pueden realizar mediante los mtodos que estos poseen.

SISTEMAS GESTORES DE BASES DE DATOS |# |1 |2 |3 |4 |5 |6 |7 |8 |9 |SOFTWARE |Shore |Texas |Thor |BDOviedo3 |O2 |Gemstone |Ontos |G-Base |Orion 2 |COMPAIA |Shore |Shingai |Thor | |O2 Technology |Serviologic |OntologicSystem |Graphael |Itasca Systems |Symbolics |Innovative Systems |Object Design |MCC | | | | | | | | | | | |1997 |1992 |1997 | | | | | | | | | | | |SI |NO | | | | | | | |AO |NO | | | |CONSEGUIDO | |

|10 |Statice |11 |Vision |12 |Observer |13 |Orion

|14 |Encore |15 |O2 |16 |Iris |17 |ZeitGest |18 |ODE |19 |Jazmine |20 |Itasca |21 |Objectivity |22 |Object Store |23 |Versant |24 |Object DB3 |25 |DB4o |26 |Matisse |27 |Informix

|Brown University |Altair |HP | | | |

| | |

|Texas Instruments |AT&T |Fujitsu |Itasca Systems | | | | | |Matisse |IBM | | | | | | | | | | | | |

| | | |

| | | | |

|SI | | | | |

| |

MATISSE: UN EJEMPLO DE UN SGDBOO

Matisse de ADB Inc. es un SGBDOO con soporte para C, C++, Eiffel y Java.

Matisse es un diseo atrevido con muchas ideas no convencionales. Est especialmente orientado a grandes bases de datos con una rica estructura semntica, y puede manipular objetos muy grandes como imgenes pelculas y sonidos.

Aunque admite los conceptos bsicos de la orientacin a objetos, tales como la herencia mltiple.

Matisse se abstiene de imponer demasiadas restricciones como lo tocante al modelo de datos y sirve en su lugar como un potente motor de base de datos orientadas a objetos.

VENTAJAS: Una tcnica de representacin original que hace posible fragmentar un objeto, especialmente un objeto grande, en varios discos, para optimizar as el tiempo de acceso. Una ubicacin optimizada de los objetos en los discos. Un mecanismo automtico de duplicacin que proporciona una solucin software a los fallos de tolerancia del hardware: los objetos (en lugar de los discos en s) se pueden duplicar especularmente en varios discos, con recuperacin automtica en caso de fallo del disco. Un mecanismo de versiones de objetos incorporado. Soporte para las transacciones. Soporte para una arquitectura cliente-servidor en la cual un servidor central gestiona los datos para un nmero posiblemente elevado de clientes, que mantienen una reserva de objetos a los que se haya accedido recientemente.

Proporciona un entorno grfico que permite la definicin del esquema de la base de datos sin necesidad de conocer la sintaxis ODL

DEFINICION DE UNA BDOO EN MATISSE interface Persona : persistent { attribute String nombre; attribute String ape1; attribute String ape2; relationship List posee[0, -1] inverse Coche::es_poseido; }; interface Coche : persistent { attribute String matricula; relationship Persona es_poseido inverse Persona::posee; };

GENERACIN DE FICHEROS FUENTE Para ello se recurre a un comando del tipo mt_sdl stubgen -[cxx|eiffel|java] [-n paquete] fichero.odl

Persona.h #ifndef Persona_H #define Persona_H 1 #include #include class Coche; using namespace matisse; using namespace matisse::reflect;

class Persona : public virtual MtObject { public: static MtObject *newStub(const MtDatabase &db, ::MtOid oid); private: static const MtStub stub; protected: Persona(const MtDatabase &db, ::MtOid oid); virtual ~Persona(); private: static const unsigned int CID; public: static MtClass &getClass(const MtDatabase &db); static MtObjectIterator instanceIterator(const MtDatabase &db); static unsigned int getInstanceNumber(const MtDatabase &db); /* Attribute 'nombre' */ private: static const unsigned int nombreCID;

public: static MtAttribute &getNombreAttribute(const MtDatabase &db); std::string getNombre() const; void setNombre(const std::string & val) const; void removeNombre() const;

/* Relationship 'posee' */ private: static const unsigned int poseeCID; public:

static MtRelationship &getPoseeRelationship(const MtDatabase &db); MtObjectArray getPosee() const; unsigned int getPoseeSize() const; MtObjectIterator poseeIterator() const; void setPosee(const MtObjectArray &succs) const; void prependPosee(const Coche &succ) const; void appendPosee(const Coche &succ) const; void appendPosee(const MtObjectArray &succs) const; void removePosee(const MtObjectArray &succs) const; void removePosee(const Coche &succ) const; void clearPosee() const;

// END of mt_odl generated code // You may add your own code here... /*COMO INDICA EL COMENTARIO ANTERIOR AQU SE PUEDE AADIR NUEVOS MTODOS*/ void imprime_ncompleto(){ std::cout

[pic]

Escuchar Leer fonticamente

Diccionario - Ver diccionario detallado

Escuchar Leer fonticamente

Diccionario - Ver diccionario detallado

1. nombre 1. recuperacin 2. cobro 3. reactivacin 4. recobro 5. restablecimiento 6. rescate 7. mejora

Potrebbero piacerti anche