Ir para conteúdo
Fórum Script Brasil
  • 0

Orientação A Objeto


Denis Bittencourt Muniz

Pergunta

Fala galera!

Estou lendo um livro sobre Orientação a Objeto e me informei que existe três tipos (niveis para ser mais exato) de Orientação: Convencional, Baseada em Objeto e Orientada a objeto.

No livro dizia que Orientada a objeto suporta os todos os conceitos da O.O, principalmente os conceitos de Classe, Objeto, Herança e Polimorfismo.

Também no livro, dizia que Convencional e Baseada em Objetos não suporta todos os conceitos de O.O.

Surgiu a dúvida: Concerteza, Convencional e Baseada em objetos não são sinônimos... Então qual é a diferença entre esses dois? Qual é mais completo?

O livro também deu exemplo de linguagens que se encaixam em um dos três tipos:

Convencional -> C, Pascal, Fortan e Basic

Baseada em objeto -> Ada e Modula-2

Orientada a objetos -> C++, Java, Object Pascal e SmallTalk

Mais uma dúvida: Se a linguagem suporta os conceitos de Classes, Objetos, Herança e Polimorfismo ela já é considerada automáticamente O.O?

Espero respostas! Falows!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Também no livro, dizia que Convencional e Baseada em Objetos não suporta todos os conceitos de O.O.

Surgiu a dúvida: Concerteza, Convencional e Baseada em objetos não são sinônimos... Então qual é a diferença entre esses dois? Qual é mais completo?

O livro também deu exemplo de linguagens que se encaixam em um dos três tipos:

Convencional -> C, Pascal, Fortan e Basic

Acredito que essas linguagens sejam chamadas de convencionais (nunca tinha visto esse termo nesse sentido...) justamente por terem um tipo de objeto muito rudimentar (que é a estrutura, um tipo de dados definido pelo usuário).

Baseada em objeto -> Ada e Modula-2

Não conheço Ada nem Modula-2, mas VB se encaixa nessa categoria.

Orientada a objetos -> C++, Java, Object Pascal e SmallTalk

Estas nem é necessário comentar. Mas no paragráfo abaixo eu vou fazer uma observação sobre estas linguagens, relacionando com a sua pergunta.

Mais uma dúvida: Se a linguagem suporta os conceitos de Classes, Objetos, Herança e Polimorfismo ela já é considerada automáticamente O.O?

O conceito de OO é meio relativo, mas existe um certo consenso de que uma linguagem que possua tais características seja OO. Agora vem a observação sobre as linguagens acima e sobre os níveis de OO. C++, Java e Object Pascal ainda mantêm tipos primitivos (int, char, double, real, etc.) em contraste com SmallTalk, Ruby e Python, por exemplo, onde todos os tipos de dados são objetos. SmallTalk vai mais além ainda, e estruturas como if, for, etc. são métodos dos objetos (Ruby também faz isso parcialmente). Não é um quesito fundalmental que todos os tipos de dados sejam objetos, mas acredito que uma linguagem que seja assim seja mais concisa no conceito de OO (por isso que estou adorando VB.NET!) do que linguagens híbridas (C++ e Java), por exemplo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Mas então, Baseada em Objeto têm mais recursos O.O que convencionais, certo? E como assim, estruturas definidas pelo usuário? Convencional não tem nenhum recurso O.O, certo?

Outra coisa, em VB.net e C# todos os tipos de dados são objetos, certo? Mas porque posso atribuir valor direto ao objeto? Por exemplo:

int x;

x = 25;

Já que é objeto, não teria que ter um método (ou propriedade) para receber valor? Por exemplo:

int x;

x.ChangeValue(25); //Logicamente, esse foi um método imaginário que inventei.

Observação: Estou comentando, pois não podemos fazer isso (que eu saiba não), que escrevo logo abaixo:

Text1 = "Teste";

E sim isso:

Text1.Text = "Teste";

Falows! valeu Graymalkin!

Observação final:

SmallTalk vai mais além ainda, e estruturas como if, for, etc. são métodos dos objetos

Apesar de diferente, muito interessante, não acham? Você sabe qual é a vantagem nesse recurso do SmallTalk.?

Link para o comentário
Compartilhar em outros sites

  • 0

Mas então, Baseada em Objeto têm mais recursos O.O que convencionais, certo?

Sim, tem. Tanto que em VB temos o encapsulamento, por exemplo, que é uma característica OO (coisa não presente nas ditas "convencionais").

E como assim, estruturas definidas pelo usuário?

São tipos complexos que podem ter membros (atributos). Em C, por exemplo, pode-se fazer o seguinte:

struct Pessoa {
       char* nome;
       int idade;
};
Depois podemos declarar variáveis com esse tipo:
    Pessoa p1;
    
    p1.nome = "Junior";
    p1.idade = 21;
Em VB6 pode-se fazer a mesma coisa com a instrução Type... End Type (no VB.NET ela passou a ser Structure... End Structure).
Convencional não tem nenhum recurso O.O, certo?
Não, só os tipos definidos pelo usuário é que poderiam chegar mais-ou-menos (mais pra menos) perto do encapsulamento, mas não acredito que isso possa ser levado em consideração.
Outra coisa, em VB.net e C# todos os tipos de dados são objetos, certo?
Certo.
Mas porque posso atribuir valor direto ao objeto? Por exemplo: int x; x = 25;
Porque valores também são objetos. Experimente escrever no Visual Studio...
messagebox.show((25).
... e você vai ver que depois do ponto aparecerão os métodos relativos a um inteiro. O mesmo vale para Char, String, Double, Boolean, Decimal, etc. Veja o seguinte exemplo (VB.NET):
        MessageBox.Show((3).GetType().ToString())
        MessageBox.Show((3.141516).GetType().ToString())
        MessageBox.Show(("um teste").GetType().ToString())
        MessageBox.Show(("a"c).GetType().ToString())
        MessageBox.Show((True).GetType().ToString())
        MessageBox.Show((10.34D).GetType().ToString())
Já que é objeto, não teria que ter um método (ou propriedade) para receber valor? Por exemplo: int x; x.ChangeValue(25); //Logicamente, esse foi um método imaginário que inventei.
Não necessariamente, conforme o que eu disse acima.
Observação: Estou comentando, pois não podemos fazer isso (que eu saiba não), que escrevo logo abaixo: Text1 = "Teste"; E sim isso: Text1.Text = "Teste";
Porque nesse caso você estaria querendo atribuir uma *string* a um objeto do tipo *TextBox*. Do mesmo jeito que para um objeto inteiro você só pode atribuir um inteiro, para um objeto do tipo TextBox você só pode atribuir um objeto TextBox. Ou seja, fazer...
textbox1 = new TextBox();

... é perfeitamente possível (aqui os tipos estão corretos).

Observação final:
SmallTalk vai mais além ainda, e estruturas como if, for, etc. são métodos dos objetos

Apesar de diferente, muito interessante, não acham? Você sabe qual é a vantagem nesse recurso do SmallTalk.?

Não programo em SmallTalk, por isso não posso ressaltar qual seria exatamente a *vantagem* nisso. Ultimamente não tenho tido muito tempo para pesquisar sobre outras linguagens fora as que utilizo, mas assim que possível vou pesquisar sobre isso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa! Obrigadão Graymalkin!

valeu!

P.S: Foi falta de lógica minha perguntar sobre o *Text1 = "Teste"*. XD

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa! Obrigadão Graymalkin!

valeu!

Beleza. biggrin.gif

P.S: Foi falta de lógica minha perguntar sobre o *Text1 = "Teste"*. XD

Não, até que não. O VB6 tem propriedades padrões, o que permitia algo parecido com isso. E, acredito eu que a sobrecarga do operador de atribuição (=), disponível em C++, também possa realizar algo do tipo (mas, nunca vi isso em prática, por isso apenas "acho").

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...