TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Importância das Linguagens Orientadas a Objetos em nosso cotidiano

Por:   •  13/2/2020  •  Trabalho acadêmico  •  2.105 Palavras (9 Páginas)  •  157 Visualizações

Página 1 de 9

[pic 1]

UNIVERSIDADE DO ESTADO DA BAHIA

UNIDADE ACADÊMICA DE EDUCAÇÃO À DISTÂNCIA - UNEAD

LICENCIATURA EM CIÊNCIA DA COMPUTAÇÃO

Importância das Linguagens Orientadas a Objetos em nosso cotidiano

IBOTIRAMA-BA

Importância das Linguagens Orientadas a Objetos em nosso cotidiano

Pesquisa apresentado ao Curso de Licenciatura em Ciência da Computação da Universidade do Estado da Bahia - UNEB, para a disciplina Programação II, 4º Semestre de 2019, Polo UAB de Ibotirama.

IBOTIRAMA-BA

Uma das tarefas mais importantes para os engenheiros/analistas/programadores de software é a escolha da linguagem que irão utilizar para realizar o trabalho da "melhor forma possível". Acho importante enfatizar a "melhor forma possível" com aspas, pois ela varia de acordo com uma série de parâmetros que geralmente estão ligados à época (arquitetura dominante, teoria e até modismo ...), filosofia da empresa e/ou do sistema, quesitos como performance, estabilidade, funcionalidade, segurança, user friendliness etc. Portanto, a "melhor forma possível" varia dependendo do referencial.

Dito isso, vou escrever um pouco sobre Programação Orientada a Objetos (OOP), que é provavelmente a principal razão pela qual estamos interessados em diferenciar linguagens baseadas em objetos e orientadas a objetos.

A OOP é um paradigma (padrão a ser seguido) que utiliza objetos para construir programas de computador. Apesar de haver muita controvérsia sobre o assunto, muitas vezes a OOP está relacionada à "melhor forma possível" de se programar, principalmente quando ela resulta de uma simples e coerente compreensão da realidade sob o ponto de vista da Análise Orientada a Objetos (OOA), tornando o Design Orientado a Objetos (OOD) consistente, o que, por fim, facilita a OOP, resultando em programas claros e fáceis de manter.

Entretanto, nem sempre uma modelagem da realidade pode ser expressa através de objetos, ou simplesmente talvez não seja a melhor forma de fazê-lo. Existem vários dilemas e casos onde, dependendo do que se busca, não vale a pena utilizar OO. Nesse ponto, não posso deixar de citar os artigos "Why OO Sucks" de Joe Armstrong, criador da linguagem Erlang; "Bad Engineering Properties of Object-Oriented Languages" de Luca Cardelli, principal pesquisador e líder dos grupos "Programming Principles and Tools" e "Security" na Microsoft Research em Cambridge; e o desabafo de Richard Stallman, criador do projeto GNU e fundador da Free Software Foundation, no Google Group comp.emacs.xemacs, que diz que "adicionar OOP no Emacs não é claramente uma melhoria; usei OOP quando trabalhava no sistema de janela da Lisp Machine e não concordo com a visão usual de que ela seja uma forma superior de se programar." (ver thread original ).

Atualmente é bem aceito que: "object-oriented = data abstractions + object types + type inheritance" (OO). Tanto Cardelli (1985), Wegner (1985), como Booch (1991) chegaram a este consenso.

Mais tarde, Booch (1994) separou object types em encapsulation e modularity e chamou type inheritance de hierarchy. Imagino que Booch fez isso possivelmente para enfatizar que os objetos muitas vezes, para modelar melhor a realidade, possuem um estado interior ao qual o mundo externo não possui acesso (encapsulation).

Imagine a tarefa de modelar uma pessoa sem levar em consideração o "encapsulamento": a pessoa simplesmente seria incapaz de mentir sobre seu estado atual, todos saberiam se a pessoa está realmente feliz ou infeliz. Não haveria os mistérios do tipo "A vida dela era tão perfeita, por que será que ela se matou?". Parece-me, portanto, que é válido permitir que a modelagem de objetos em programação também selecione quais estados o mundo exterior terá acesso e também que este acesso seja filtrado antes da informação ser emitida. Quantas vezes já perguntamos para uma pessoa querida: "Tudo bem com você?" e ouvimos: "Tudo bem...", mesmo quando a situação era difícil...

Além desses requisitos, existem outras três características (pure) que geralmente são verificadas para classificar uma linguagem puramente orientada a objetos:

  1. Todos os tipos pré-definidos são objetos.
  2. Todas as operações são realizadas através do envio de mensagens a objetos.
  3. Todos os tipos definidos pelo usuário são objetos.

Esse conjunto de requisitos, somado à hipótese de que uma linguagem só é orientada a objetos se todas essas características estão presentes na linguagem de forma explícita; isto é, sem ter que escrever uma plataforma ou utilizar convenções de codificação para suprir todos os requisitos; é o que nos permite diferenciar linguagens baseadas em objetos e orientadas a objetos.

Antes de começar a citar algumas linguagens famosas e o porquê de elas serem orientadas a objetos ou não, gostaria de enfatizar que a OOP existe independentemente do fato de a linguagem ser orientada a objetos, pois para isso basta que a linguagem e a forma de se programar utilizem como base "data abstractions + object types + type inheritance".

Outro fato que acho interessante é o grande número de pessoas que discutem e brigam, tentando defender que a sua linguagem é orientada a objetos. Gente, ser uma linguagem orientada a objetos não é uma característica que faz a linguagem ser melhor do que as outras. Nem a programação orientada a objetos, nem a linguagem ser orientada a objetos são garantias de qualidade. Muito pelo contrário, se apegar tanto a uma forma de pensar e escrever traz algumas vantagens para os iniciantes, mas existem também desvantagens que só aparecem sob a luz da experiência no desenvolvimento de muitos sistemas conceitualmente diferentes e experimentação de muitas linguagens.

Acho que uma analogia pertinente é a questão: "Linguagens (humanas) só de ideogramas, como o chinês, são melhores do que linguagens sem nenhum ideograma, como o português?" e a resposta, embora eu não saiba, é que vejo tanto chineses como portugueses se expressando muito bem, não importando qual conjunto de regras impostas pela linguagem.

Aliás, vivemos atualmente um forte retorno à iconografia. Basta você escrever :) no messengerque automaticamente a pessoa com quem você está conversando sabe seu estado emocional (feliz), não é verdade? Não seria a utilização dos emoticons uma evidência de que os ideogramas tem seu espaço na comunicação? Ou a escrita japonesa que possui tanto Kanjis(ideogramas) quanto Hiraganas e Katakanas (esses dois últimos como se fossem sílabas) um exemplo da vantagem do "multi-paradigmatismo"?

...

Baixar como (para membros premium)  txt (14.5 Kb)   pdf (167.6 Kb)   docx (64.3 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com