Skip to content

Commit

Permalink
translated object oriented programming in javascript - typo fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexandrinoMaranhao committed Sep 17, 2024
1 parent c152433 commit 839a644
Showing 1 changed file with 2 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -234,11 +234,11 @@ Nos dois antigos anteriores, demos uma olhada em alguns recursos centrais do Jav

- **a cadeia de protótipos** pode parecer então uma forma natural de estabelecer herança entre as classes. Por exemplo, se tivermos um objeto `Aluno` cujo protótipo é `Pessoa`, então o objeto poderá **_herdar_** a propriedade `nome` e **_sobrescrever_** o método `apresentaSe()`.

Contudo é importante ressaltar as diferenças exstentes entre esses recursos e os conceitos da POO "clássica" como eles foram descritos e é isso o que faremos a seguir.
Contudo é importante ressaltar as diferenças existentes entre esses recursos e os conceitos da POO "clássica" como eles foram descritos e é isso o que faremos a seguir.

Para começar, na POO baseada em classes, as classe e os objetos são entidades separadas e objetos sempre são criados como instâncias de classe. Além disso, há uma distinção entre a característica usada para definir uma classe (a sintaxe da classe em si) e a característica usada para instanciar um objeto (o construtor). No JavScript, é possível e frequente a criação de objetos sem qualquer definição separada de classe, seja com o uso de uma função ou um objeto literal. Essa peculiaridade do JavaScript permite que as operar com objetos seja bem mais leve se comparado com linguagens que operam estritamente conforme a POO clássica.

Em segundo lugar, apesar de uma cadeia de protótipos parecer-se com e, em algumas partes, comportar-se tal como uma hierarquia de herança padrão, no final existem diferenças que tornam ambas distintas entre si. Quando uma subclasse é instanciada, um único objeto é criado de forma tal que ele combina propriedades definidas na subclasse com as propriedades definidas na superclasse mais acima na cadeia hierárquica. Com o uso de protótipos, cada nível da hierarquia é representado por um objeto segregado distinto e todos esses objetos são coligados através da propriedade `proto`. O comportamento da cadeia de protótipos de fato é bem mais parecido com **delegação** do que herança. Delegação é um padrão de programação no qual um objeto, quando solicitado para realizar uma tarefa, pode fazê-la por conta própria ou pedir para outro objeto (**seu delegado**) fazê-la em seu favor. De várias maneiras, delegação é um jeito mais flexível e dinâmica de combinar objetos se compararmos com a herança, bem mais rígida e estática (uma dessas maneiras trata da possibilidade de mudar ou substituir totalmente o delegado em tempo de execução).
Em segundo lugar, apesar de uma cadeia de protótipos parecer-se com e, em algumas partes, comportar-se tal como uma hierarquia de herança padrão, no final existem diferenças que tornam ambas distintas entre si. Quando uma subclasse é instanciada, um único objeto é criado de forma tal que ele combina propriedades definidas na subclasse com as propriedades definidas na superclasse mais acima na cadeia hierárquica. Com o uso de protótipos, cada nível da hierarquia é representado por um objeto segregado distinto e todos esses objetos são coligados através da propriedade `proto`. O comportamento da cadeia de protótipos de fato é bem mais parecido com **delegação** do que herança. Delegação é um padrão de programação no qual um objeto, quando solicitado para realizar uma tarefa, pode fazê-la por conta própria ou pedir para outro objeto (**seu delegado**) fazê-la em seu favor. De várias maneiras, a delegação é um jeito mais flexível e dinâmico de combinar objetos se compararmos com a herança, bem mais rígida e estática (uma dessas maneiras trata da possibilidade de mudar ou substituir totalmente o delegado em tempo de execução).

Tendo dito isso, construtores e protótipos podem ser utilizados para implementar padrões POO baseados em classe no JavaScript sem maiores problemas. Só é preciso atentar que usá-los para diretamente implementar recursos como herança é algo complicado, então o JavaScript oferece recursos adicionais, em sobreposição ao modelo de protótipos, que mapeiam mais proximamente aos conceitos da POO baseada em classes. Esses recursos adicionais são assunto do próximo artigo.

Expand Down

0 comments on commit 839a644

Please sign in to comment.