Oracle é uma linguagem orientada a objetos...

Este forum é destinado a perguntas relacionadas a Oracle, mas que não se enquadram nos forums acima. Aqui serão tratadas também sobre outras tecnologias da oracle, como o Workflow, BPEL, Spatial, OCS, etc.
Responder
Laninha
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 68
Registrado em: Qua, 24 Out 2007 3:06 pm
Localização: Nilópolis - Rio de Janeiro

Oi galera,

Podem me tirar uma dúvida simples???
Oracle é uma linguagem orientada a objetos???



Obrigada,
Laninha :D
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Laninha, boa tarde.

No pouco que sei, pelo menos em versões anteriores, sei que é um banco OBJETO-RELACIONAL.

Mas, fica aí o tópico pro pessoal nos ajudar.
Laninha
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 68
Registrado em: Qua, 24 Out 2007 3:06 pm
Localização: Nilópolis - Rio de Janeiro

É, obrigada Trevisolli!!!

Bom quem puder ajudar e responder, fico no aguardo...

Mas como assim um Objeto-Relacional, por que é uma banco???



Abrços,
Laninha :)
Cosmo
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Sáb, 16 Fev 2008 10:13 am
Localização: RJ

ORACLE é o nome do banco de dados e não é o nome de nenhuma linguagem.

O que você quer saber é se o PL\Sql é OO, a resposta é:

Sim, você pode implementar até harança no Pl.

Vlw :wink:
Adriano_Patrick
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 25 Ago 2008 2:34 pm
Localização: sobral-ce
Bacharel em Ciências da Computação
Especialista em Engenharia de Software

Na realidade Oracle é um SGBD(Sistema de gerenciamento de banco de dados) criado e mantido pela Oracle Corporation, o oracle dá suporte a banco de dados relacionais, objeto-relacionais e xml. PL\SQL é uma extensão da linguagem padrão SQL para o SGBD Oracle e ela não é orientada a objetos e sim uma Linguagem Procedural que estende(dá funcionalidades a mais) o sql. Na realidade é o SGBD mais robusto do mercado, então você vai encontrar inúmeras outras funcionalidades. espero ter esclarecido
jhonatan
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 01 Out 2008 4:30 pm
Localização: SC

discordo do que você falou sobre o Pl/SQL não ser orientado a objetos, pode ser que não seja completamente orientado a objetos, mas realmente é possível programar orientado a objetos em Pl/SQL utilizando principalmente os TYPES... veja o exemplo

Selecionar tudo

CREATE OR REPLACE TYPE PESSOA AS OBJECT (
   NOME  VARCHAR2(80),
   IDADE NUMBER,
   MEMBER FUNCTION GET_IDADE RETURN NUMBER,
   MEMBER FUNCTION GET_NOME RETURN VARCHAR2,
   MEMBER PROCEDURE SET_IDADE(IDADE IN NUMBER),
   MEMBER PROCEDURE SET_NOME(NOME IN VARCHAR2),
   MEMBER FUNCTION GET_TYPE RETURN VARCHAR2,
   CONSTRUCTOR FUNCTION PESSOA(NOME IN VARCHAR2,IDADE IN NUMBER)RETURN SELF AS RESULT
)NOT FINAL
/
CREATE OR REPLACE TYPE BODY PESSOA IS

   CONSTRUCTOR FUNCTION PESSOA(NOME IN VARCHAR2,IDADE IN NUMBER)
      RETURN SELF AS RESULT IS
   BEGIN
      SELF.SET_IDADE(IDADE);
      SELF.SET_NOME(NOME);
      RETURN;
   END;
   MEMBER FUNCTION GET_IDADE RETURN NUMBER IS
   BEGIN
      RETURN SELF.IDADE;
   END;

   MEMBER FUNCTION GET_NOME RETURN VARCHAR2 IS
   BEGIN
      RETURN SELF.NOME;
   END;

   MEMBER PROCEDURE SET_IDADE(IDADE IN NUMBER) IS
   BEGIN
      SELF.IDADE := IDADE;
   END;

   MEMBER PROCEDURE SET_NOME(NOME IN VARCHAR2) IS
   BEGIN
      SELF.NOME := NOME;
   END;
   
   MEMBER FUNCTION GET_TYPE RETURN VARCHAR2 IS
   BEGIN
      RETURN 'PESSOA';
   END;
END;
e um TYPE "filho"...

Selecionar tudo

CREATE OR REPLACE TYPE PESSOA_SUB UNDER PESSOA(
    NR_CPF   NUMBER,
    MEMBER FUNCTION GET_CPF RETURN NUMBER,
    MEMBER PROCEDURE SET_CPF(NR_CPF IN NUMBER),
    OVERRIDING MEMBER FUNCTION GET_NOME RETURN VARCHAR2,
    OVERRIDING MEMBER FUNCTION GET_TYPE RETURN VARCHAR2,
    CONSTRUCTOR FUNCTION PESSOA_SUB(NOME IN VARCHAR2,IDADE IN NUMBER,NR_CPF IN NUMBER)RETURN SELF AS RESULT
)
/
CREATE OR REPLACE TYPE BODY PESSOA_SUB IS

   CONSTRUCTOR FUNCTION PESSOA_SUB(NOME IN VARCHAR2,IDADE IN NUMBER,NR_CPF IN NUMBER)
      RETURN SELF AS RESULT IS
   BEGIN
      SELF.SET_IDADE(IDADE);
      SELF.SET_NOME(NOME);
      SELF.SET_CPF(NR_CPF);
      RETURN;
   END;

   MEMBER PROCEDURE SET_CPF(NR_CPF IN NUMBER) IS
   BEGIN
      SELF.NR_CPF := NR_CPF;
   END;

   MEMBER FUNCTION GET_CPF RETURN NUMBER IS
   BEGIN
      RETURN SELF.NR_CPF;
   END;

   OVERRIDING MEMBER FUNCTION GET_NOME RETURN VARCHAR2 IS
   BEGIN
      RETURN 'pessoa sub '||SELF.NOME;
   END;
   
   OVERRIDING MEMBER FUNCTION GET_TYPE RETURN VARCHAR2 IS
   BEGIN
      RETURN 'PESSOA SUB';
   END;
END;
como podem ver, é possível até mesmo sobrescrever métodos, e implementar herança, e mais, como podem ver no código abaixo, é possível utilizar polimorfismo também.

Selecionar tudo

DECLARE
   obj PESSOA;
   sub PESSOA_SUB;
   poli PESSOA;
BEGIN
   obj:= new PESSOA('Jhonatan',19);
   dbms_output.put_line('Nome: '||obj.get_nome()||' idade: '||obj.get_idade());
   dbms_output.put_line(obj.get_type());
   obj.set_nome('Alan');
   obj.set_idade(26);
   dbms_output.put_line('Nome: '||obj.get_nome()||' idade: '||obj.get_idade());
   dbms_output.put_line(obj.get_type());
   
   sub:= new PESSOA_SUB('Érika',28,1234567809);
   dbms_output.put_line('Nome: '||sub.get_nome()||' idade: '||sub.get_idade()||' cpf: '||sub.get_cpf());
   dbms_output.put_line(sub.get_type());
   
   poli := sub;
   dbms_output.put_line('Nome: '||poli.get_nome()||' idade: '||poli.get_idade());
   dbms_output.put_line(poli.get_type());
END;
alguém ainda discorda de que o Pl/SQL é orientado a objetos? :D hehehe

[]'s

Jhonatan da Rosa
Desenvolvedor Oracle
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Legal o teu exemplo!
É como PHP, tem tudo pra programar orientado a OBJETO, mas ainda assim é opcional. (quem quiser fazer tudo procedural, pode...)
jhonatan
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 01 Out 2008 4:30 pm
Localização: SC

E mais... o SGBD oracle, a partir da versão 9i, pelo que sei, ele é orientado a objetos. :-o x) hehehe
rcoelho_6
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Ter, 04 Nov 2008 1:56 pm
Localização: SP - são Paulo

Bem tenho que concordar que o PL/SQL não nasceu para ser orientado a objeto, mas é uma linguagem tão poderosa que pode se implementar OO sem o menor problema.

Na verdade tudo é possivel no PL/SQL
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ

Implementar conceitos de OO não quer dizer que o PL/SQL é OO.
Java não tem todos os conceitos de OO. Se não me engano somente o SmallTalk é totalmente OO.
Só por que pode implementar alguns conceitos de OO não quer dizer que é uma linguagem OO.
jhonatan
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 01 Out 2008 4:30 pm
Localização: SC

Na verdade... Java é Orientado a Objetos, assim como PL/SQL, C++, Objective C, Objective Pascal, e tantas outras.

A diferença entre elas e Smalltalk é:
- Smalltalk é uma linguagem OO Pura
- as que eu citei, são linguagens OO Híbridas.

[]'s
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ

Citado você :

"pode ser que não seja completamente orientado a objetos, mas realmente é possível programar orientado a objetos em Pl/SQL utilizando principalmente os TYPES... veja o exemplo ".
Poder programar OO não significa que seja OO. Concordo que somente SmallTalk é OO puro.
Se formos analisar do ponto de vista de linguagem híbrida, todas as linguagens serão OO.
Java é OO pois consegue prover todos os atributos que uma linguagem OO tem. Não posso falar das outras. Sei que Delphi se consegue fazer o mesmo, sendo que a maioria programa procedural, assim como PL/SQL.
Do meu ponto de vista, não coloco PL/SQL como OO, mesmo que consiga implementar alguns conceitos.

[]s

Alex Silva
jhonatan
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 01 Out 2008 4:30 pm
Localização: SC

"Os 4 pilares da Programação Orientada a Objetos

Uma linguagem é caracterizada como Orientada a Objetos quando atende a estes quatro tópicos que vou apresentar.

· Abstração
· Encapsulamento
· Herança
· Polimorfismo"

Eu tenho certeza de que PL/SQL implementa esses 4 pilares de OO!

Continuo com minha opinião, você concordando, ou não.

o texto acima, foi retirado de:
http://www.devmedia.com.br/articles/vie ... ?comp=9264


[]'s
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu tive uma professora que era defensora do smalltalk pois era a unica linguagem 100% orientado ao objeto. (bem coisa de acadêmicos que não tem mais nada pra fazer além de seguir alguma filosofia maluca :-( )

Na real, acho que se deve usar o que as linguagens tem de melhor. Se pra fazer determinada coisa é melhor se usar OO, beleza, usa... Se é alguma coisa simples, não vejo problema de procedural.

É a mesma coisa que se falava muito antigamente "GOTO" é o demônio! Quem usa GOTO é ridículo... E sinceramente, as vezes EVITAR um goto é muito mais complicado que simplesmente usar ele...
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ

Ok,
Então a Oracle deveria mudar o nome do PL/SQL (acrónimo para a expressão inglesa Procedural Language/Structured Query Language).

Vou implmentar OO nas minhas packages.

Valeu pela informação disponibilizada.

[]s

Alex Silva
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Na real, o PL/SQL existe desde os 80's. Naquele tempo não tinha nada relacionado a OO em Plsql. Foi adicionado a partir do oracle 8. Mas o nome PLSQL continuou o mesmo. (já pensou se mudam pra OOLSQL ? hehehe)
ricardocmoreno
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 51
Registrado em: Qua, 12 Mar 2008 2:11 am
Localização: São Bernardo - SP
Ricardo Moreno
DBA Oracle Pleno

“Só sei que nada sei, e o fato de saber isso, me coloca em vantagem sobre aqueles que acham que sabem alguma coisa.”
(Sócrates 470 a.C – 399 a.C)

Sim, o PL/SQL é OO

abs
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes