A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tipos e Subtipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CRIANDO SUBTIPOS CREATE TYPE Estudante_ty.

Apresentações semelhantes


Apresentação em tema: "Tipos e Subtipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CRIANDO SUBTIPOS CREATE TYPE Estudante_ty."— Transcrição da apresentação:

1 Tipos e Subtipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CRIANDO SUBTIPOS CREATE TYPE Estudante_ty UNDER Pessoa_ty ( matrícula NUMBER, curso VARCHAR2(30)) NOT FINAL; Permite que subtipos possam ser derivados deste tipo Cria o tipo Estudante_ty como um subtipo de Pessoa_ty Estudante_ty herda todos os atributos e métodos de Pessoa_ty Novos atributos e métodos podem ser declarados no subtipo

2 Tipos e Subtipos CREATE TYPE Empregado_ty UNDER Pessoa_ty ( Código NUMBER, gerente VARCHAR2(30)); Um tipo pode ter vários subtipos CREATE TYPE EstudanteMestrado UNDER Estudante_ty ( orientador VARCHAR2(30)); Um subtipo pode ser subtipo de outro subtipo

3 “Overloading” CREATE TYPE MeuTipo_ty AS OBJECT (..., MEMBER PROCEDURE m1(x NUMBER),...) NOT FINAL; CREATE TYPE MeuSubtipo_ty UNDER MeuTipo_ty (..., MEMBER PROCEDURE m1(x DATE), STATIC FUNCTION f1(...)......); Métodos que têm o mesmo nome mas diferentes assinaturas são chamados de “Overload” O tipo MeuSubtipo_ty contém duas versões do método m1(). Uma herdada com parâmetro NUMBER, e a nova com parâmetro DATE.

4 “Overriding” CREATE TYPE MeuTipo_ty AS OBJECT (..., MEMBER PROCEDURE Print(), FINAL MEMBER FUNCTION f1(x NUMBER)... ) NOT FINAL; CREATE TYPE MeuSubTipo_ty UNDER MeuTipo_ty (..., OVERRIDING MEMBER PROCEDURE Print(),...); Quando um subtipo “overrides” um método, a nova versão é executada quando instâncias do subtipo invoca o método

5 Substituindo Tipos em uma Hierarquia de Tipos CREATE TYPE Livro_ty AS OBJECT ( título VARCHAR2(30), autor Pessoa_ty /* substituível */); É substituível por uma instância de Estudante_ty or Empregado_ty. Livro_ty(‘My Oracle Experience’, Empregado_ty (12345, ‘Joe’, ‘SF’, 1111, NULL)) SELECT TREAT(l.autor AS Empregado_ty).código FROM Livros l; “Substitutability” : é a habilidade (polimorfismo) de uma instância de um subtipo poder tomar o lugar de uma instância de um supertipo

6 Substituindo Tipos em uma Hierarquia de Tipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CREATE TYPE Estudante_ty UNDER Pessoa_ty ( matrícula NUMBER, curso VARCHAR2(30)) NOT FINAL; CREATE TYPE EstudanteMestrado UNDER Estudante_ty ( orientador VARCHAR2(30));

7 Substituindo Tipos em uma Hierarquia de Tipos CREATE TABLE Pessoas OF Pessoa_ty; INSERT INTO Pessoas VALUES (Pessoa_ty (1243, ’Bob’, ’121 Front St’)); INSERT INTO Pessoas VALUES (Estudante_ty(3456, ’Joe’, ’34 View’, 12, ’HISTORY’)); INSERT INTO Pessoas VALUES (EstudanteMestrado_ty (5678, ’Tim’, 13, ’Computer Science’, ‘Paul’));

8 Substituindo Tipos em uma Hierarquia de Tipos INSERT INTO Livros VALUES(’An Autobiography’, Pessoa_ty(1243, ’Bob’)); INSERT INTO Livros VALUES(’Business Rules’, Estudante_ty(3456, ’Joe’, 12, ’HISTORY’)); INSERT INTO Livros VALUES(’Mixing School and Work’, EstudanteMestrado_ty(5678, ’Tim’, 13, ’PHYSICS’, ´Paul´)); CREATE TABLE Livros (title varchar2(100), autor Pessoa_ty);

9 Substituindo Tipos em uma Hierarquia de Tipos CREATE TABLE LivrosDeEstudantes OF Livro_ty COLUMN autor IS OF (ONLY Estudante_ty); CREATE TABLE catalog (livro Livro_ty, preço NUMBER) COLUMN livro NOT SUBSTITUTABLE AT ALL LEVELS; SELECT p.nome, TREAT(VALUE(p) AS Estudante_ty ).curso curso FROM Pessoas p; NOME CURSO ---- ---- ------------ Bob null Joe HISTORY Tim PHYSICS

10 Substituindo Tipos em uma Hierarquia de Tipos SELECT VALUE(p) FROM Pessoas p WHERE VALUE(p) IS OF (Estudante_ty); Value(p) -------- Estudante_ty (’Joe’, 3456, 12, 10000) EstudanteMestrado_ty(’Tim’, 5678, 13, 1000, ‘Paul’) SELECT b.título titulo, b.autor autor FROM Livros b WHERE b.autor IS OF (ONLY estudante_ty); TITULO AUTOR ------------------ ---------------------------------- ------ BusinessRules Estudante_ty(’Joe’, 3456, 12, 10000)

11 Métodos São Funções ou Procedimentos que você declara na definição de um tipo de objeto para implementar o comportamento que você deseja para as instâncias do tipo. Existem 3 tipos de Método: -Member: implementam as operações das instâncias do tipo - Static: São invocados no tipo de objeto, não para as instâncias. Não tem o parâmetro SELF. - Construtores: São os métodos que fabricam novos objetos. Cada tipo de objeto tem um método construtor definido pelo sistema. O nome do método construtor é o nome do tipo


Carregar ppt "Tipos e Subtipos CREATE TYPE Pessoa_ty AS OBJECT ( cpf NUMBER, nome VARCHAR2(30), endereço VARCHAR2(100)) NOT FINAL; CRIANDO SUBTIPOS CREATE TYPE Estudante_ty."

Apresentações semelhantes


Anúncios Google