Orientacion a objetos

Solo disponible en BuenasTareas
  • Páginas : 73 (18050 palabras )
  • Descarga(s) : 0
  • Publicado : 12 de mayo de 2011
Leer documento completo
Vista previa del texto
88
5.2 Soporte a la Orientación a Objeto

Para analizar el soporte de la orientación a objeto en ORACLE, como lo hicimos con SQL:1999, nos basaremos en los conceptos básicos de la orientación a objeto (ver 2) y en los requerimientos para las bases de datos orientadas a objeto (ver 3.1.2.1 ). En lo posible, mantendremos la misma estructura de presentación utilizada al analizar SQL:1999 parafacilitar su comparación con Oracle.
5.2.1 Tipos, abstracción y clases

Como explicamos en la sección 2.2.6 los conceptos de clase y tipo son distintos, pero muchos lenguajes no hacen dicha distinción e incorporan ambos conceptos bajo un mismo nombre ya sea el de clase o de tipo. En Oracle el nombre empleado es tipo objeto (object type), que es un tipo de datos definido por el usuario, queluego de ser descrito, pasa a formar parte del sistema de tipos del lenguaje, quedando disponible para todos los usuarios que tengan los privilegios de acceso correspondientes.
Un tipo objeto implementa una abstracción y por ende está compuesto por [31]:
1. nombre, que lo identifica dentro de la base de datos y debe ser único dentro del esquema en que se está definiendo
2. Atributos, cadauno con un nombre y un tipo de datos, que puede ser un tipo primitivo u otro tipo definido por el usuario
3. métodos. Son funciones o procedimientos escritos en PL/SQL, Java o C. Los métodos escritos en PL/SQL o en Java son almacenados en la base de datos (de la misma manera que un procedimiento almacenado) y los métodos escritos en C son invocados externamente.

Describiremos los atributos ymétodos con detenimiento más adelante en las secciones 5.2.1.3 y 5.2.1.4 respectivamente.

89 Oracle 8i y la orientación a objeto - Soporte a la orientación a objeto
5.2.1.1 Estructura de un tipo objeto

Un tipo objeto tiene dos partes: una especificación y un cuerpo. La especificación es la interfaz pública del tipo y en ella se declaran sus atributos y la especificación de sus métodos(sin su implementación). En el cuerpo se especifican e implementan los métodos que aparecieron en la especificación del tipo[32]. El cuerpo es la parte privada del tipo. especificación Especificación de Métodos Declaración de Atributos InterfaCuerpo Cuerpo de los Métodos ImplemPrivad entación a z Pública
1
figura 5: Estructura de un tipo objeto.
Esta separación permite modificar losalgoritmos que implementan los métodos, sin que esto afecte a los usuarios del tipo (aplicaciones), siempre y cuando no alteremos su interfaz. De este modo, el cuerpo pasa a ser una “caja negra”, donde las aplicaciones clientes sólo conocen la interfaz del método.
Como muestra la figura 5, sólo podemos declarar atributos en la especificación del tipo, y éstos se declaran antes que los métodos. No esnecesario definir el cuerpo de un tipo cuando este no especifica métodos[32].
5.2.1.2 Sintaxis para la creación de tipos

Para definir la interfaz del tipo se utiliza la sentencia SQL CREATE TYPE Y para el cuerpo CREATE TYPE BODY [41]. No se pueden definir tipos o cuerpos de tipos en bloques PL/SQL, subprogramas o paquetes.
Para describir la sintaxis usaremos la siguiente notación:

90Oracle 8i y la orientación a objeto - Soporte a la orientación a objeto
• Las palabras en mayúsculas son palabras reservadas
• Los paréntesis cuadrados, [ ], indican que su contenido es opcional.
• El paréntesis de llave, { }, agrupan elementos.
• La barra vertical, |, indica que los elementos son alternativos (Es como un OR exclusivo o XOR).
• Los puntos suspensivos, ..., indicanrepetición.
5.2.1.2.1 CREATE TYPE

La sintaxis para el predicado CREATE TYPE es la siguiente [41][32]:
CREATE [OR REPLACE] TYPE [schema.]type_name
[AUTHID {CURRENT_USER | DEFINER}] {IS | AS} OBJECT (
attribute_name datatype [, attribute_name datatype]...
[{MAP | ORDER} MEMBER function_spec,]
[{MEMBER | STATIC} subprogram_spec [call_spec]
[, {MEMBER | STATIC} subprogram_spec...
tracking img