• Nenhum resultado encontrado

Monitoria GDI

N/A
N/A
Protected

Academic year: 2022

Share "Monitoria GDI"

Copied!
36
0
0

Texto

(1)

Monitoria GDI

Aula Prática

OR (Aula 1)

(2)

Roteiro

• Tipos

• Tabela de Objetos

• Herança

• Métodos

• Referências

(3)

Tipos e Tabelas de Objetos

• Tipos de Objetos

oObjetos são abstrações de entidades do mundo real, como por exemplo, uma ordem de compra, um

cliente, um produto…

oUm tipo de objeto funciona como um molde para

criação de objetos, através da atribuição de valores a essa estrutura de dados.

3

(4)

Tipos e Tabelas de Objetos

• Tipos de Objetos - Sintáxe

oCriando um tipo

CREATE [OR REPLACE] TYPE <nomedo tipo>

AS OBJECT (

<listade atributos e métodos>

);

oExcluindo um tipo

DROP TYPE <nome do tipo> [FORCE];

(5)

Tipos e Tabelas de Objetos

• Tabelas de Objetos

oObjetos são diferentes de tabelas

oTipos de Objetos apenas definem uma estrutura lógica, contendo nome, métodos e atributos.

•Não obrigatoriedade da presença de métodos

oTabelas armazenam espaço físico

oCria-se tabelas de objetos previamente definidos

oCada tabela recebe instâncias de objetos de apenas um tipo

5

(6)

Tipos e Tabelas de Objetos

• Tabelas de Objetos - Sintáxe

oCriando uma tabela

CREATE TABLE <nome da tabela>

OF <nome do tipo> (

<lista de propriedades dos atributos>

);

oExcluindo uma tabela

DROP TABLE <nome da tabela>;

(7)

Tipos e Tabelas de Objetos

• Tabelas de Objetos - Sintáxe

oInserindo uma linha em uma tabela INSERT INTO <nome da tabela>

( <nomesdos atributos> ) VALUES ( <valores> );

oDeletando de uma tabela

DELETE FROM <nome data bela> WHERE <condição>;

7

(8)

Tipos e Tabelas de Objetos

• Tipos vs Tabelas

oTipos não permitem restrições de valores para os seus atributos;

oRestrições devem ser feitas nas tabelas:

•NOT NULL

•UNIQUE

•PRIMARY KEY

•CHECK

(9)

Exercício 1

Construa um tipo Endereço com os seguintes atributos

o Rua o Cidade o Estado o CEP

•Construa um tipo Pessoa, que possui

o ID o Nome

o Endereço 9

(10)

Exercício 1 - Resposta

Tipo Endereço

CREATE OR REPLACE TYPE tp_endereco AS OBJECT ( Rua VARCHAR2(50),

Cidade VARCHAR2(25), Estado CHAR(2),

Cep NUMBER );

•Tipo Pessoa

CREATE OR REPLACE TYPE tp_pessoas AS OBJECT ( id NUMBER,

Nome VARCHAR2(25), Endereco tp_endereco );

(11)

Exercício 2

Construa uma tabela para o tipo Pessoa

o id é a chave primária

Insira 3 pessoas nessa tabela

11

(12)

Exercício 2 - Resposta

Tabela do tipo Pessoa

CREATE TABLE tab_pessoa OF pessoas_tp (id PRIMARY KEY);

Inserção de 3 pessoas

INSERT INTO tab_pessoa VALUES (1, 'João',

endereco_tp('Rua Simão Mendes', 'Recife', 'PE', '53050110'));

INSERT INTO tab_pessoa VALUES (2, 'Maria',

endereco_tp('Rua Padre Faustino','Jaboatão','PE', '45879362'));

INSERT INTO tab_pessoa VALUES (3, 'José',

endereco_tp('Rua Ernesto Ribeiro','Olinda','PE', '15469781'));

(13)

Herança

•Apenas herança simples é permitida no ORACLE

13

(14)

Herança

• Controle do usuário sobre a definição de tipos e métodos “herdáveis” -FINAL e NOT FINAL.

oTipos abstratos

CREATE [OR REPLACE] TYPE <nomedo tipo>

AS OBJECT (

) NOT INSTATIABLE ;

oPara permitir criação de subtipos

CREATE [OR REPLACE] TYPE <nomedo tipo>

AS OBJECT (

) NOT FINAL ;

(15)

Herança

• Sintaxe para criar um subtipo:

CREATE [OR REPLACE] TYPE

<nome do subtipo> UNDER <nome do tipo> ( <definição dos atributos específicos>

);

15

(16)

Exercício 3

Implemente o modelo, crie as tabelas necessários e realize 3 inserções

Profissional

nome

data de nascimento

Médico

CRM especialista

Engenheiro

CREA

(17)

Exercício 3 - Resposta

Criando os tipos

CREATE OR REPLACE TYPE tp_profissional AS OBJECT ( nome VARCHAR2(100),

data_nascimento DATE

) NOT FINAL NOT INSTANTIABLE;

CREATE OR REPLACE TYPE

tp_medico UNDER tp_profissional (crm NUMBER,

especialidade VARCHAR2(30));

CREATE OR REPLACE TYPE

tp_engenheiro UNDER tp_profissional (crea NUMBER);

17

(18)

Exercício 3 - Resposta

Inserindo nas tabelas

INSERT INTO tb_medico VALUES (

tp_medico('Jose',to_date('05/04/2009','dd/mm/yyyy'), 12345, 'Cardiologista')

);

INSERT INTO tb_medico VALUES (

tp_medico('Ana',to_date('05/04/2009','dd/mm/yyyy'),54321, 'Neurologista')

);

INSERT INTO tb_engenheiro VALUES (

tp_engenheiro('Luiz',to_date('05/04/2009','dd/mm/yyyy'),34567) );

(19)

Métodos

•Programas associados aos tipos que fazem

computações e podem ter acesso aos atributos do tipo

•Na declaração de um tipo são definidas as assinaturas dos métodos, depois são implementados

•Tipos de Métodos

o Member Method o Static Method

o Constructor Method o Comparison Methods

19

(20)

Método

• Métodos podem ser FINAL ou NOT FINAL

o Para permitir que um método não possa ser sobrescrito nos subtipos, este deve ser definido como FINAL

o Por padrão, um método é definido como NOT FINAL

CREATE [OR REPLACE] TYPE <nome do tipo>

AS OBJECT (

<lista de atributos>

<lista de assinatura dos métodos>

);

CREATE [OR REPLACE] TYPE BODY <nome do tipo> AS (

<lista de implementações dos métodos>

);

(21)

Método

• Exemplo

CREATE OR REPLACE TYPE tp_periodo AS OBJECT ( data_inicio DATE,

data_fim DATE,

CONSTRUCTOR FUNCTION tp_periodo (di DATE, df DATE) RETURN SELF AS RESULT,

MEMBER FUNCTION dt_pertence (data DATE) RETURN INTEGER, MEMBER PROCEDURE set_DataInicio(pDataDATE),

ORDER MEMBER FUNCTION match (p tp_periodo) RETURN INTEGER, MAP MEMBER FUNCTION compara RETURN INTEGER

);

21 ATRIBUTOS CONSTRUCTOR METHOD MEMBER METHOD COMPARATION METHOD

(22)

Método

ATENÇÃO!

Um objeto só pode ter UM método MAP OU UM método ORDER.

O código utilizado como exemplo anteriormente não funcionará pois possui um método MAP e um ORDER.

(23)

Método

• Member Functions

o Podem ser chamados através de um SELECT como em funções de PL/SQL.

• Member Procedures

o Só é possível chamá-los em Blocos Anônimos, Functions, Procedures ou Triggers, pois

diferentemente das Member Function não possuem retorno

23

(24)

Método

• Comparison Method

o Permite a comparação de dois objetos

o Torna possível utilizar as cláusulas DISTINCT, GROUP BY, ORDER BY, UNION entre outras.

o Sem definir o MAP ou ORDER só é possível verificar se dois objetos são iguais

o São funções chamadas implicitamente pelo SGBD quando é realizada a comparação entre dois tipos.

(25)

Método

• MAP

o Não possui parâmetros, retorna um valor escalar (CHAR, DATE, VARCHAR, NUMBER) que será comparado com o valor de outro objeto

• ORDER

o Recebe sempre um objeto do mesmo tipo como parâmetro. É possível realizar comparações entre os objetos e retorna um número inteiro (negativo, zero, positivo). Semelhante a interface de Java java.util.Comparator

25

(26)

Exercício 4

Crie um tipo TP_QUADRILATERO que possui como atributos

o id, o altura o largura

E possui os seguintes métodos:

o Um construtor

o Um método que retorna a área do quadrilátero

o Um método que atualiza apenas a altura do objeto

(27)

Exercício 4 - Resposta

Declaração do tipo

CREATE OR REPLACE TYPE tp_quadrilatero AS OBJECT ( id NUMBER,

altura NUMBER, largura NUMBER,

CONSTRUCTOR FUNCTION tp_quadrilatero

(id NUMBER, a NUMBER, l NUMBER) RETURN SELF AS RESULT, MEMBER FUNCTION getArea RETURN NUMBER,

MEMBER PROCEDURE setAltura(a NUMBER) );

27

(28)

Exercício 4 - Resposta

Implementação dos Métodos

CREATE OR REPLACE TYPE BODY tp_quadrilatero AS CONSTRUCTOR FUNCTION tp_quadrilatero

(id NUMBER, a NUMBER, l NUMBER) RETURN SELF AS RESULT IS BEGIN

id := i; altura := a; largura := l;

END;

MEMBER FUNCTION getArea RETURN NUMBER IS BEGIN

RETURN altura * largura;

END;

MEMBER PROCEDURE setAltura(a NUMBER) IS BEGING

altura := a;

END;

END;

(29)

Referência

•Tipo REF

o Retorna referência OID(ObjectId) a uma instância de uma object table

o Encapsula uma referência para um “rowobject” de um tipo de objeto especificado

o O valor de um objeto do tipo REF é um “ponteiro lógico” para um rowobject.

29

(30)

Exercício 5 - Parte 1

Implemente os tipos do modelo abaixo, usando os conceitos de referência

Cliente possui Endereço

bairo cidade CEP

nome CPF

N 1

(31)

Parte 1 - Resposta

Criação dos tipos

CREATE OR REPLACE TYPE tp_endereco AS OBJECT ( CEP VARCHAR(8),

bairro VARCHAR(20), cidade VARCHAR(20) );

CREATE OR REPLACE TYPE tp_cliente AS OBJECT ( CPF VARCHAR(14),

nome VARCHAR(30),

endereco REF tp_endereco );

31

(32)

Exercício 5 - Parte 2

Crie a tabela de endereços e a tabela de clientes

Insira 2 endereços e 3 clientes

o será necessário o uso de consulta aninhada

(33)

Parte 2 - Resposta

Tabela de endereços

CREATE TABLE tab_endereco OF tp_endereco (CEP PRIMARY KEY);

Tabela de clientes

CREATE TABLE tab_cliente OF tp_cliente (CPF PRIMARY KEY);

33

(34)

Parte 2 - Resposta

Inserção de endereços

INSERT INTO tab_endereco VALUES ('50100250', 'Santo Amaro', 'Recife');

INSERT INTO tab_endereco VALUES ('52021180', 'Espinheiro', 'Recife');

Inserção de clientes

INSERT INTO tab_cliente VALUES ('12345678902', 'Rodrigo', ( SELECT REF(e) FROM tab_endereco e WHERE e.CEP = '50100250'));

INSERT INTO tab_cliente VALUES ('56789012303', 'Carlos', (

SELECT REF(e) FROM tab_endereco e WHERE e.CEP = '50100250'));

INSERT INTO tab_cliente VALUES ('78912345604', 'Marco', (

SELECT REF(e) FROM tab_endereco e WHERE e.CEP = '52021180'));

(35)

Referência

•Faça um SELECT dos clientes e veja o retorno

•Faça um SELECT dos endereços dos clientes utilizando DREF

SELECT DREF(c.endereco) FROM cliente c;

35

(36)

Dúvidas?

36

Referências

Documentos relacionados

Participação e Controle Social; Diretrizes para a gestão do SUS: Descentralização, Regionalização, Municipalização, Financiamento, Regulação, Pactos pela

Table 5 presents the F values obtained in the analysis of variance for crude protein, fat, ash, and crude fiber of Agaricus bisporus strains ABI-05/03, ABI-06/04, ABI-04/02,

With the analysis of the spatial variability of the data, it was observed that the pens positioned in the central region of the two facilities had the least stressful places

The objective of this study was to model, analyze and compare the structure of spatial dependence, as well as the spatial variability of the water depths applied by a

 Vamos aumentar uma coluna neste quadro para evidenciar a ponderação do número de ocorrências (número de empregados) pelo ordenado praticado:.. Conclui-se assim que dos 21 empregados

Neste trabalho foram realizados ensaios de desgaste por microabrasão para se avaliar a resistência ao desgaste abrasivo do aço AISI H13 em três condições distintas: recozido

Mas também além do mercado transatlântico e de sua etapa de redistribuição, o comércio de abastecimento dos grandes centros agroexportadores gerava um campo de atuação para

Como bolsistas do Programa Institucional de Bolsas de Iniciação à Docência – PIBID, do subprojeto área Matemática e estagiária pela disciplina de Estágio