Que construção de uma linguagem de programação fornece abstração de processos?

Voltar

Artigos .NET Os 4 pilares da Programa��o Orientada a Objetos

O desenvolvimento de software � extremamente amplo. Nesse mercado, existem diversas linguagens de programa��o, que seguem diferentes paradigmas. Um desses paradigmas � a Orienta��o a Objetos, que atualmente � o mais difundido entre todos. Isso acontece porque se trata de um padr�o que tem evolu�do muito, principalmente em quest�es voltadas para seguran�a e reaproveitamento de c�digo, o que � muito importante no desenvolvimento de qualquer aplica��o moderna.

A Programa��o Orientada a Objetos (POO) diz respeito a um padr�o de desenvolvimento que � seguido por muitas linguagens, como C# e Java. A seguir, iremos entender as diferen�as entre a POO e a Programa��o Estruturada, que era muito utilizada h� alguns anos, principalmente com a linguagem C. Esse padr�o se baseia em quatro pilares que veremos ao longo desse artigo. Al�m disso, a POO diversas vantagens em sua utiliza��o, que tamb�m ser�o vistas e explicadas.

Saiba mais sobre Orienta��o a Objetos

Programa��o Estruturada vs Programa��o Orientada a Objetos

Na Figura 1 vemos uma compara��o muito clara entre a programa��o estruturada e a programa��o orientada a objetos no que diz respeito aos dados. Repare que, no paradigma estruturado, temos procedimentos (ou fun��es) que s�o aplicados globalmente em nossa aplica��o. No caso da orienta��o a objetos, temos m�todos que s�o aplicados aos dados de cada objeto. Essencialmente, os procedimentos e m�todos s�o iguais, sendo diferenciados apenas pelo seu escopo.

Que construção de uma linguagem de programação fornece abstração de processos?

Figura 1. Estruturada x Orienta��o a Objetos

A linguagem C � a principal representante da programa��o estruturada. Se trata de uma linguagem considerada de baixo n�vel, que atualmente n�o � utilizada para projetos muito grandes. A sua principal utiliza��o, devido ao baixo n�vel, � em programa��o para sistemas embarcados ou outros em que o conhecimento do hardware se faz necess�rio para um bom programa.

Essa coloca��o nos traz a um detalhe importante: a programa��o estruturada, quando bem feita, possui um desempenho superior ao que vemos na programa��o orientada a objetos. Isso ocorre pelo fato de ser um paradigma sequencial, em que cada linha de c�digo � executada ap�s a outra, sem muitos desvios, como vemos na POO. Al�m disso, o paradigma estruturado costuma permitir mais liberdades com o hardware, o que acaba auxiliando na quest�o desempenho.

Entretanto, a programa��o orientada a objetos traz outros pontos que acabam sendo mais interessantes no contexto de aplica��es modernas. Como o desempenho das aplica��es n�o � uma das grandes preocupa��es na maioria das aplica��es (devido ao poder de processamento dos computadores atuais), a programa��o orientada a objetos se tornou muito difundida. Essa difus�o se d� muito pela quest�o da reutiliza��o de c�digo e pela capacidade de representa��o do sistema muito mais perto do que ver�amos no mundo real.

Veremos em detalhes esses e outros pontos que dizem respeito a programa��o orientada a objetos. Como desenvolvedores, � nossa miss�o entender quais s�o as vantagens e desvantagens de cada um dos paradigmas de programa��o e escolhermos o melhor para nossa aplica��o. A escolha da linguagem tamb�m deve estar presente nessa escolha.

DevCast: Por que adotamos Orienta��o a Objetos?

Os 4 pilares da Programa��o Orientada a Objetos

Para entendermos exatamente do que se trata a orienta��o a objetos, vamos entender quais s�o os requerimentos de uma linguagem para ser considerada nesse paradigma. Para isso, a linguagem precisa atender a quatro t�picos bastante importantes:

Abstra��o

A abstra��o consiste em um dos pontos mais importantes dentro de qualquer linguagem Orientada a Objetos. Como estamos lidando com uma representa��o de um objeto real (o que d� nome ao paradigma), temos que imaginar o que esse objeto ir� realizar dentro de nosso sistema. S�o tr�s pontos que devem ser levados em considera��o nessa abstra��o.

O primeiro ponto � darmos uma identidade ao objeto que iremos criar. Essa identidade deve ser �nica dentro do sistema para que n�o haja conflito. Na maior parte das linguagens, h� o conceito de pacotes (ou namespaces). Nessas linguagens, a identidade do objeto n�o pode ser repetida dentro do pacote, e n�o necessariamente no sistema inteiro. Nesses casos, a identidade real de cada objeto se d� por <nome_do_pacote>.<nome_do_objeto>.</nome_do_objeto></nome_do_pacote>

A segunda parte diz respeito a caracter�sticas do objeto. Como sabemos, no mundo real qualquer objeto possui elementos que o definem. Dentro da programa��o orientada a objetos, essas caracter�sticas s�o nomeadas propriedades. Por exemplo, as propriedades de um objeto �Cachorro� poderiam ser �Tamanho�, �Ra�a� e �Idade�.

Por fim, a terceira parte � definirmos as a��es que o objeto ir� executar. Essas a��es, ou eventos, s�o chamados m�todos. Esses m�todos podem ser extremamente vari�veis, desde �Acender()� em um objeto l�mpada at� �Latir()� em um objeto cachorro.

Saiba mais sobre Abstra��o e Polimorfismo

Encapsulamento

O encapsulamento � uma das principais t�cnicas que define a programa��o orientada a objetos. Se trata de um dos elementos que adicionam seguran�a � aplica��o em uma programa��o orientada a objetos pelo fato de esconder as propriedades, criando uma esp�cie de caixa preta.

A maior parte das linguagens orientadas a objetos implementam o encapsulamento baseado em propriedades privadas, ligadas a m�todos especiais chamados getters e setters, que ir�o retornar e setar o valor da propriedade, respectivamente. Essa atitude evita o acesso direto a propriedade do objeto, adicionando uma outra camada de seguran�a � aplica��o.

Para fazermos um paralelo com o que vemos no mundo real, temos o encapsulamento em outros elementos. Por exemplo, quando clicamos no bot�o ligar da televis�o, n�o sabemos o que est� acontecendo internamente. Podemos ent�o dizer que os m�todos que ligam a televis�o est�o encapsulados.

Saiba mais sobre Encapsulamento em Java

Heran�a

O reuso de c�digo � uma das grandes vantagens da programa��o orientada a objetos. Muito disso se d� por uma quest�o que � conhecida como heran�a. Essa caracter�stica otimiza a produ��o da aplica��o em tempo e linhas de c�digo.

Para entendermos essa caracter�stica, vamos imaginar uma fam�lia: a crian�a, por exemplo, est� herdando caracter�sticas de seus pais. Os pais, por sua vez, herdam algo dos av�s, o que faz com que a crian�a tamb�m o fa�a, e assim sucessivamente. Na orienta��o a objetos, a quest�o � exatamente assim, como mostra a Figura 2. O objeto abaixo na hierarquia ir� herdar caracter�sticas de todos os objetos acima dele, seus �ancestrais�. A heran�a a partir das caracter�sticas do objeto mais acima � considerada heran�a direta, enquanto as demais s�o consideradas heran�as indiretas. Por exemplo, na fam�lia, a crian�a herda diretamente do pai e indiretamente do av� e do bisav�.

Que construção de uma linguagem de programação fornece abstração de processos?

Figura 2. Heran�a na orienta��o a objetos

A quest�o da heran�a varia bastante de linguagem para linguagem. Em algumas delas, como C++, h� a quest�o da heran�a m�ltipla. Isso, essencialmente, significa que o objeto pode herdar caracter�sticas de v�rios �ancestrais� ao mesmo tempo diretamente. Em outras palavras, cada objeto pode possuir quantos pais for necess�rio. Devido a problemas, essa pr�tica n�o foi difundida em linguagens mais modernas, que utilizam outras artimanhas para criar uma esp�cie de heran�a m�ltipla.

Outras linguagens orientadas a objetos, como C#, trazem um objeto base para todos os demais. A classe object fornece caracter�sticas para todos os objetos em C#, sejam criados pelo usu�rio ou n�o.

Polimorfismo

Outro ponto essencial na programa��o orientada a objetos � o chamado polimorfismo. Na natureza, vemos animais que s�o capazes de alterar sua forma conforme a necessidade, e � dessa ideia que vem o polimorfismo na orienta��o a objetos. Como sabemos, os objetos filhos herdam as caracter�sticas e a��es de seus �ancestrais�. Entretanto, em alguns casos, � necess�rio que as a��es para um mesmo m�todo seja diferente. Em outras palavras, o polimorfismo consiste na altera��o do funcionamento interno de um m�todo herdado de um objeto pai.

Como um exemplo, temos um objeto gen�rico �Eletrodom�stico�. Esse objeto possui um m�todo, ou a��o, �Ligar()�. Temos dois objetos, �Televis�o� e �Geladeira�, que n�o ir�o ser ligados da mesma forma. Assim, precisamos, para cada uma das classes filhas, reescrever o m�todo �Ligar()�.

Com rela��o ao polimorfismo, valem algumas observa��es. Como se trata de um assunto que est� intimamente conectado � heran�a, entender os dois juntamente � uma boa ideia. Outro ponto � o fato de que as linguagens de programa��o implementam o polimorfismo de maneiras diferentes. O C#, por exemplo, faz uso de m�todo virtuais (com a palavra-chave virtual) que podem ser reimplementados (com a palavra-chave override) nas classes filhas. J� em Java, apenas o atributo �@Override� � necess�rio.

Esses quatro pilares s�o essenciais no entendimento de qualquer linguagem orientada a objetos e da orienta��o a objetos como um todo. Cada linguagem ir� implementar esses pilares de uma forma, mas essencialmente � a mesma coisa. Apenas a quest�o da heran�a, como comentado, que pode trazer varia��es mais bruscas, como a presen�a de heran�a m�ltipla. Al�m disso, o encapsulamento tamb�m � feito de maneiras distintas nas diversas linguagens, embora os getters e setters sejam praticamente onipresentes.

Saiba mais sobre Polimorfismo em Java

Principais vantagens da POO

A programa��o orientada a objetos traz uma ideia muito interessante: a representa��o de cada elemento em termos de um objeto, ou classe. Esse tipo de representa��o procura aproximar o sistema que est� sendo criado ao que � observado no mundo real, e um objeto cont�m caracter�sticas e a��es, assim como vemos na realidade. Esse tipo de representa��o traz algumas vantagens muito interessantes para os desenvolvedores e tamb�m para o usu�rio da aplica��o. Veremos algumas delas a seguir.

A reutiliza��o de c�digo � um dos principais requisitos no desenvolvimento de software atual. Com a complexidade dos sistemas cada vez maior, o tempo de desenvolvimento iria aumentar exponencialmente caso n�o fosse poss�vel a reutiliza��o. A orienta��o a objetos permite que haja uma reutiliza��o do c�digo criado, diminuindo o tempo de desenvolvimento, bem como o n�mero de linhas de c�digo. Isso � poss�vel devido ao fato de que as linguagens de programa��o orientada a objetos trazem representa��es muito claras de cada um dos elementos, e esses elementos normalmente n�o s�o interdependentes. Essa independ�ncia entre as partes do software � o que permite que esse c�digo seja reutilizado em outros sistemas no futuro.

Outra grande vantagem que o desenvolvimento orientado a objetos traz diz respeito a leitura e manuten��o de c�digo. Como a representa��o do sistema se aproxima muito do que vemos na vida real, o entendimento do sistema como um todo e de cada parte individualmente fica muito mais simples. Isso permite que a equipe de desenvolvimento n�o fique dependente de uma pessoa apenas, como acontecia com frequ�ncia em linguagens estruturadas como o C, por exemplo.

A cria��o de bibliotecas � outro ponto que � muito mais simples com a orienta��o a objetos. No caso das linguagens estruturadas, como o C, temos que as bibliotecas s�o cole��es de procedimentos (ou fun��es) que podem ser reutilizadas. No caso da POO, entretanto, as bibliotecas trazem representa��es de classes, que s�o muito mais claras para permitirem a reutiliza��o.

Entretanto, nem tudo � perfei��o na programa��o orientada a objetos. A execu��o de uma aplica��o orientada a objetos � mais lenta do que o que vemos na programa��o estruturada, por exemplo. Isso acontece devido � complexidade do modelo, que traz representa��es na forma de classes. Essas representa��es ir�o fazer com que a execu��o do programa tenha muitos desvios, diferente da execu��o sequencial da programa��o estruturada. Esse � o grande motivo por tr�s da prefer�ncia pela linguagem C em hardware limitado, como sistemas embarcados. Tamb�m � o motivo pelo qual a programa��o para sistemas m�veis como o Google Android, embora em Java (linguagem orientada a objetos), seja feita o menos orientada a objetos poss�vel.

No momento atual em que estamos, tecnologicamente essa execu��o mais lenta n�o � sentida. Isso significa que, em termos de desenvolvimento de sistemas modernos, a programa��o orientada a objetos � a mais recomendada devido as vantagens que foram apresentadas. Essas vantagens s�o derivadas do modelo de programa��o, que busca uma representa��o baseada no que vemos no mundo real.

Saiba mais sobre vantagens e desvantagens da Orienta��o a Objetos

Exemplos de Linguagens Orientadas a Objetos

H� uma grande quantidade de linguagens de programa��o orientada a objetos no mercado atualmente. Nesse artigo, iremos apresentar 3 das mais utilizadas no momento: Java, C# e C++. Cada uma delas possui uma abordagem diferente do problema que as torna muito boas para alguns tipos de aplica��es e n�o t�o boas para outros.

Java

O Java �, muito provavelmente, a linguagem de programa��o mais utilizada no mercado atual. Auxiliado pela presen�a do JRE (Java Runtime Environment), ou varia��es dele, em quase todos os dispositivos eletr�nicos do momento, a linguagem Java � um grande sucesso entre os desenvolvedores. O sucesso da linguagem aumentou ainda mais com o Google Android, que escolheu o Java como linguagem preferencial de desenvolvimento de aplica��es.

O Java implementa os quatro pilares de forma bastante intuitiva, o que facilita o entendimento por parte do desenvolvedor. A abstra��o, o primeiro pilar, � implementado atrav�s de classes, que cont�m propriedades e m�todos, de forma bastante simples. J� o encapsulamento � realizado atrav�s de propriedades privadas, auxiliadas por m�todos especiais getters e setters, como mostra a Listagem 1. Vale ressaltar a palavra-chave �this� mostrada no m�todo SetId(). Essa palavra-chave funciona como um representante da classe atual, uma auto-refer�ncia ao pr�prio objeto.

 private int id;
  public int GetId()
  {
       return id;
  {
   
  public void SetId(int id)
  {
       this.id = id;
  }

Listagem 1. Encapsulamento em Java

As quest�es de heran�a e polimorfismo no Java s�o um pouco mais complexas. O Java possui heran�a simples, o que significa que cada classe pode herdar de apenas uma outra. Entretanto, o Java possui as chamadas Interfaces, que possuem propriedades e assinaturas de m�todos. Essas interfaces precisam ser implementadas para funcionar, o que significa que uma classe pode implementar v�rias interfaces e herdar de apenas uma classe. Na quest�o de polimorfismo, o atributo @Override � respons�vel por informar ao Java que o m�todo em quest�o est� sendo reescrito.

C#

O C#, por sua vez, � outra das linguagens mais utilizadas no mercado. Como os computadores pessoais no mundo, em sua maioria, possuem o sistema operacional Windows, da Microsoft, o C# se popularizou. Isso porque o Windows implementa o Framework .NET, ao qual o C# est� associado. O C# � uma linguagem de uso geral e especialmente criada para utiliza��o com a orienta��o a objetos. Vale ressaltar que, em C#, tudo � um objeto (herda da classe object).

A abstra��o � muito simples, e segue o modelo do Java. A quest�o de encapsulamento � um pouco diferente devido a implementa��o dos m�todos getter e setter. A nomenclatura tamb�m � um pouco diferente. A vari�vel que realmente guarda o valor do dado � chamada atributo, enquanto a propriedade � o elemento que realmente acessa aquele dado do mundo externo. Isso est� mostrado na Listagem 2. Al�m disso, o C# faz uso de duas palavras-chave especiais: get e set.

 // Atributo
  private int id;
   
  // Propriedade
  public int Id
  {
       get;
       set;
  }

Listagem 2. Encapsulamento em C#

A quest�o da heran�a em C# tamb�m segue o modelo do Java: heran�a simples e a possibilidade de utiliza��o de interfaces. A import�ncia das interfaces � muito grande, uma vez que elas podem dar o tipo dos dados, que somente posteriormente ser�o associados a um tipo real, como mostra a Listagem 3. Isso tamb�m � v�lido para o Java. Por padr�o, as identidades das interfaces come�am com a letra �I�. O polimorfismo, por sua vez, � baseado em m�todos virtuais (com a palavra-chave virtual) na classe pai e reescritos com a palavra-chave override na classe filha.

 IExemploInterface exemplo;
  exemplo = new ImplementacaoIExemploInterface();

Listagem 3. Interfaces em C#

C++

O C++, por sua vez, � uma linguagem um pouco mais primitiva, e permite muito mais liberdades com o hardware. Como ele foi derivado imediatamente do C, o C++ permite a utiliza��o de ponteiros, por exemplo, que ir�o trabalhar diretamente com a mem�ria. Al�m disso, o C++ pode utilizar todas as bibliotecas C que existem diretamente.

Em termos de abstra��o, o C++ implementa classes, assim como qualquer linguagem orientada a objetos. Ele tamb�m possui o sentido de privado e p�blico, que � utilizado para encapsulamento. Esse encapsulamento � realizado atrav�s de m�todos getter e setter, muito similar ao visto em Java, como mostra a Listagem 4. Repare que a listagem mostra somente a assinatura dos m�todos especiais, sendo que sua implementa��o � a mesma que em Java. Esse tipo de adapta��o � muito comum em C++, onde a classe � guardada em um arquivo .h e sua implementa��o em um arquivo .cpp.

 private:
 int id;
 public:
 int GetId() const;
 void SetId(int const id);

Listagem 4. Encapsulamento em C++

A quest�o da heran�a no C++ � um pouco diferente. A linguagem permite a heran�a m�ltipla, o que significa que cada classe pode herdar de quantas classes desejar. Isso pode causar problemas de m�todos que possuem o mesmo nome, portanto o desenvolvedor precisa estar atento. O polimorfismo � baseado em m�todos virtuais, da mesma forma como o C#. A complexidade, entretanto, � maior, uma vez que temos que cuidar de detalhes de mais baixo n�vel, como acesso a mem�ria.

Al�m dessas exemplificadas, existem outras linguagens que merecem ser citadas. Entre elas, podemos elencar: Python, linguagem de script orientada a objetos que � muito utilizada em pesquisas cient�ficas devido a sua velocidade; Object Pascal (tamb�m conhecida como Delphi, devido ao nome de sua IDE), apesar do grande n�mero de sistemas mais antigos que a utilizam; Objective-C, que � a linguagem de prefer�ncia para desenvolvimento de aplica��es para os sistemas da Apple, como iPhone e iPad; Ruby, voltada para o desenvolvimento web; e Visual Basic .NET, muito utilizada at� pouco tempo, mas tamb�m caindo em desuso, principalmente devido ao avan�o do C# em popularidade.

Ao longo desse artigo, procuramos elencar os elementos que fazem da programa��o orientada a objetos um sucesso no momento. Vimos os quatro pilares desse paradigma e entendemos como eles s�o implementados em algumas das linguagens mais utilizadas no mercado de desenvolvimento. Al�m disso, entendemos algumas das vantagens que tornaram a programa��o orientada a objetos um grande sucesso para o desenvolvimento de sistemas modernos.

Confira tamb�m

Que construção de uma linguagem de programação fornece abstração de processos?

Voltar

Plano PRO

  • Acesso completo
  • Projetos reais
  • Professores online
  • Exerc�cios gamificados
  • Certificado de autoridade

Que construção de uma linguagem de programação fornece abstração de processos?

Por Henrique Em 2014

Receba nossas novidades

Quais são os dois tipos de abstração em linguagens de programação?

Por exemplo, uma abstração de função contém uma expressão para ser avaliada, que quando chamada produzirá um valor resultante; e uma abstração de procedimento contém um comando a ser executado, que quando chamado irá atualizar as variáveis.

Quais são as três formas de implementar uma linguagem de programação?

[Sebesta, 2000] Quais são os três métodos gerais para implementar uma linguagem de programação​? Compilação, Interpretação pura e os Sistemas de implementação híbridos.

Quais recursos importantes uma linguagem de programação perfeita incluiria?

Um dos critérios mais importantes de linguagens de programação é a legibilidade, que é facilidade com a qual os programas podem ser lidos e entendidos..
3.1 Muitos recursos de escrita. Existem diversos fatores que afetam a legibilidade. ... .
3.2 Poucos recursos de escrita. ... .
3.3 Sobrecargas..

Qual linguagem usou a ortogonalidade como principal critério de projeto?

Qual linguagem usou a ortogonalidade como principal critério de projeto? A linguagem de programação que mais se utilizou da ortogonalidade foi o ALGOL 68.