Você está na página 1de 6

[Linguagens de Programao Orientada a Objeto - LPOO] Curso: Tecnologia em Sistemas de Informao TSI

Apostila 01

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Paradigmas de LPs Chamamos de paradigma um conjunto de caractersticas que servem para categorizar um grupo de linguagens. Existem diversas classificaes de paradigmas de LPs, sendo a mais comum a que divide os paradigmas de LPs nos paradigmas imperativo, orientado a objetos, funcional e lgico. A classificao utilizada aqui foi adaptada da apresentada por Appleby (1991). As nicas alteraes realizadas nessa classificao so a substituio do paradigma "distribudo" pelo "concorrente" e a excluso do paradigma de "linguagens de bancos de dados". Cabe ressalvar a no rigidez dessa classificao, deixando aberta a possibilidade de LPs se enquadrarem em mais de um desses paradigmas simultaneamente. A Figura abaixo ilustra a classificao adotada nesta apostila.

Nessa classificao, os paradigmas so subdivididos em duas categorias principais: imperativo e declarativo. Paradigma imperativo O paradigma imperativo engloba os paradigmas fundamentados na ideia de computao como um processo que realiza mudanas de estados. Nesse sentido, um estado representa uma configurao qualquer da memria do computador. Os programas de LPs includas nesse paradigma especificam como uma computao realizada por uma sequncia de alteraes no estado da memria do computador. O foco dos programas no paradigma imperativo especificar como um processamento deve ser feito no computador. Os conceitos fundamentais so de varivel, valor e atribuio. Variveis so vistas como sendo um conjunto de clulas de memria. Elas possuem um valor associado em um determinado instante do processamento e podem ter seu valor modificado por meio de operaes de atribuio. O paradigma imperativo subdividido nos paradigmas estruturado, orientado a objetos e concorrente. O paradigma estruturado As primeiras LPs foram fortemente influenciadas pela programao em linguagem de mquina. Esse tipo de programao se caracterizava pela existncia de uma sequncia monoltica de comandos e pelo uso de desvios condicionais e incondicionais para determinar o fluxo de controle da execuo do programa. Logo se percebeu que esse estilo de programao estimulava a ocorrncia de erros e reduzia a produtividade do programador. Para contornar essa dificuldade, surgiu a programao estruturada. Esse tipo de programao se baseia na ideia de desenvolvimento de programas Professor Msc Rafael Soares Pgina |2

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

por refinamentos sucessivos (top-down). A programao estruturada consegue organizar o fluxo de controle de execuo dos programas desestimulando o uso de comandos de desvio incondicional e incentivando a diviso dos programas em subprogramas e em blocos aninhados de comandos. PASCAL, C, Cobol, Clipper entre outras, so linguagens que adotam o paradigma estruturado. O paradigma orientado a objetos Com o avano da computao, os sistemas de software tm se tornado cada vez maiores e mais complexos. O paradigma orientado a objetos oferece conceitos que objetivam tornar mais rpido e confivel o desenvolvimento desses sistemas. Enquanto as linguagens que adotam o paradigma estruturado enfocam as abstraes de controle de execuo dos programas, as linguagens que adotam o paradigma orientado a objetos enfocam as abstraes de dados como elemento bsico de programao. Classes so abstraes que definem uma estrutura de dados e um conjunto de operaes que podem ser realizadas sobre elas, chamadas mtodos. Objetos so instncias de classes. Outros conceitos importantes nesse paradigma so a herana e o polimorfismo. Por utilizarem os conceitos do paradigma estruturado na especificao dos mtodos, o paradigma orientado a objetos pode ser considerado uma evoluo do paradigma estruturado. SMALLTALK [GOLDBERG & ROBSON, 1989], C++, JAVA, C# .NET, entre outras, so linguagens que adotam o paradigma orientado a objetos. O paradigma concorrente A programao concorrente ocorre quando vrios processos executam simultaneamente e concorrem por recursos. Os sistemas concorrentes tm se tornado cada vez mais usados. Eles podem utilizar uma nica unidade de processamento ou vrias unidades em paralelo. Nesse ltimo caso as unidades de processamento podem estar localizadas em um mesmo computador ou distribudas entre vrios. Sistemas concorrentes tambm podem compartilhar dados ou dispositivos perifricos. O paradigma concorrente engloba linguagens que oferecem facilidades para o desenvolvimento desses sistemas. ADA e JAVA so provavelmente as linguagens mais conhecidas a oferecer suporte a concorrncia. Paradigma declarativo Em contraste com o paradigma imperativo, no qual os programas so especificaes de como o computador deve realizar uma tarefa, no paradigma declarativo os programas so especificaes sobre o que essa tarefa. No paradigma declarativo, o programador no precisa se preocupar sobre como o computador implementado, nem sobre a maneira pela qual ele melhor utilizado para realizar uma tarefa. A preocupao do programador descrever de forma abstrata a tarefa a ser resolvida. Tipicamente, programas em linguagens declarativas so especificaes de relaes ou funes. No existem atribuies a variveis dos programas uma vez que as variveis declarativas so de fato incgnitas e no representam clulas de memria. Os interpretadores ou compiladores das LPs declarativas gerenciam a memria do computador, tornando transparente para o programador a necessidade de alocao e desalocao de memria. O paradigma funcional Professor Msc Rafael Soares

Pgina |3

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

Linguagens funcionais operam apenas sobre funes, as quais recebem listas de valores e retornam um valor. O objetivo da programao funcional definir uma funo que retorne um valor como a resposta do problema. Um programa funcional uma chamada de funo que normalmente chama outras funes para gerar um valor de retorno. As principais operaes nesse tipo de programao so a composio de funes e a chamada recursiva de funes. Outra caracterstica importante que as funes podem ser passadas como parmetros a outras funes. LISP [MCCARTHY, 1960], HASKELL [JONES, 2003] e ML [MILNER et al., 1997] so exemplos de linguagens funcionais. O paradigma lgico Linguagens lgicas so normalmente baseadas em um subconjunto do clculo de predicados. Um predicado define uma relao entre constantes ou variveis. Um programa lgico composto por clusulas que definem predicados e relaes factuais. A caracterstica diferencial do paradigma lgico que a execuo dos programas corresponde a um processo de deduo automtica. Assim, quando uma questo formulada, um mecanismo de inferncia tenta deduzir novos fatos a partir dos existentes para verificar a veracidade da questo. PROLOG [ISO, 1995b] o exemplo mais conhecido de linguagem que adota o paradigma lgico. Evoluo das LPs Antes do surgimento das LPs, a programao de computadores era feita exclusivamente em linguagem de mquina. Os programadores tinham de conhecer profundamente a arquitetura da mquina na qual o programa seria executado, seu conjunto de instrues e sua forma de funcionamento. Mesmo dominando todo esse conhecimento, a atividade de programao era pouco produtiva porque as instrues das linguagens de mquina so muito simples. As primeiras LPs surgiram no final dos anos 50 e incio dos anos 60 para facilitar o trabalho de programao. Por conta da cultura de programao dessa poca e da limitao de recursos dos computadores, essas linguagens foram fortemente influenciadas pelas linguagens de mquina e pela arquitetura de Von Neumman dos computadores. A eficincia computacional era o foco principal das LPs, porque os recursos como memria e processadores eram escassos. FORTRAN e COBOL [ANSI, 1985] so exemplos de linguagens que surgiram nessa poca. medida que os recursos computacionais se desenvolviam, os computadores iam se tornando mais poderosos e teis. Novamente, a atividade de programao se tornava um gargalo para a disseminao dos sistemas computacionais. No final dos anos 60, as LPs passaram a enfocar a eficincia na produtividade dos programadores. Surgiram as LPs que enfatizavam a programao estruturada. PASCAL e C so exemplos de linguagens que surgiram nessa poca. Com o aumento da complexidade dos sistemas computacionais, uma nova tcnica de programao passou a ser o foco das LPs no final dos anos 70 e incio dos anos 80 - a abstrao de dados. Essas LPs enfocavam a construo modularizada de programas e bibliotecas e o conceito de tipos abstratos de dados. MODULA-2 e ADA so exemlos de linguagens que surgiram nessa poca. Durante os anos 80 e 90 houve uma vasta disseminao do uso de computadores pessoais e das estaes de trabalho. Surge a indstria do software, e com ela, a necessidade de se produzir e atualizar software rapidamente. O reso passa a ser um conceito central para a produtividade no desenvolvimento de software. Para atender esse requisito so desenvolvidas Professor Msc Rafael Soares Pgina |4

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

as LPs orientadas a objetos. SMALLTALK, EIFFEL [MEYER. 1992], C++, JAVA e C#.NET so exemplos de linguagens que surgiram nessa poca. importante dizer que muitas linguagens foram incorporando novas caractersticas medida que se constatava a sua necessidade. Assim, verses atuais de FORTRAN e COBOL, por exemplo, j incorporam os conceitos de programao estruturada. Cabe dizer ainda que as linguagens declarativas evoluram em paralelo com as imperativas. LISP surgiu no final dos anos 50, e PROLOG no incio dos anos 70. O maior interesse no desenvolvimento dessas linguagens tem ocorrido no meio acadmico, em particular, nas reas de pesquisa sobre Linguagens de Programao e Inteligncia Artificial. A seguir, apresentamos uma breve descrio da origem e principais caractersticas de algumas das LPs mais conhecidas. Origem de LPs FORTRAN (195 7): Desenvolvida inicialmente por Backus para computadores IBM. Destinouse a aplicaes numrico-cientfcas (caracterizadas por poucos dados e muita computao). Enfatizava a eficincia computacional (por exemplo, no havia alocao dinmica de memria). No enfocava a eficincia dos programadores (por exemplo, as estruturas de controle eram todas baseadas no comando GOTO). Verses atuais de FORTRAN incorporaram avanos das outras LPs. LISP (1959): Criada por John McCarthy no MIT. Adota o paradigma funcional. Apropriada para processamento simblico. Ainda hoje a LP mais usada na Inteligncia Artificial. COMMON LISP [ABELSON et al., 1998] e SCHEME [GRAHAM, 1995] so dialetos. ALGOL (1960) [NAUR, 1960]: Criada por um comit de especialistas. Primeira LP com sintaxe formalmente definida. Importncia terica enorme, tendo influenciado todas as LPs imperativas subsequentes, embora ela prpria no tenha sido muito usada (at hoje se usa o termo ALGOL-like). COBOL (1960): Criada por um comit de especialistas. Primeira LP encomendada pelo Departamento de Defesa Americano (DoD). Destinada para aplicaes comerciais (caracterizada por muitos dados e pouca computao). Tentou enfatizar legibilidade (LP mais prxima do ingls), mas acabou comprometendo redigibilidade. BASIC (1964): Criada por Kemeny e Kurtz na Universidade de Darmouth. Objetivava ser de fcil aprendizado para uso por estudantes de artes e cincias humanas. PASCAL (1971): Criada por Niklaus Wirth. Foi projetada para ser usada no ensino de programao estruturada. Enfocou a simplicidade. C (1972): Criada por Dennis Ritchie no Bell Labs. Projetada para ser usada no desenvolvimento de sistemas de programao (em particular, para a implementao do sistema operacional UNIX). PROLOG (1972): Criada por Comerauer e Roussel, na Universidade de Aix-Marseille, com o auxlio de Kowaiski, da Universidade de Edinburgo. Adota o paradigma lgico, sendo bastante usada em Inteligncia Artificial. SMALLTALK (1972): Criada por Alan Key e Adele Goldberg no Xerox PARC. Primeira LP totalmente orientada a objetos. O ambiente de programao da SMALLTALK apresentou o conceito de interfaces grficas com o usurio que hoje amplamente utilizado. ADA (1983): Criada pela empresa Cii-Honeywell Bull, liderada pelo francs Jean Ichbiah, vencedora de licitao promovida pelo DoD para atender demanda de uma linguagem de programao de alto-nvel padronizada. Demandou o maior esforo para o desenvolvimento de uma LP, envolvendo centenas de pessoas durante oito anos. LP muito grande e complexa. Apropriada para programao concorrente e sistemas de tempo real. Professor Msc Rafael Soares Pgina |5

Centro Universitrio Planalto do Distrito Federal Uniplan Linguagens de Programao Orientada a Objeto - LPOO Curso: Tecnologia em Sistemas de Informao TSI

C++ (1985): Criada por Bjarne Stroustrup no Bell Labs. Projetada para ser uma extenso de C com orientao a objetos. Tinha como requisito no implicar perda significativa de eficincia em relao ao cdigo em C. Responsvel pela rpida aceitao da orientao a objetos. Tornou-se uma LP muito complexa. JAVA (1995): Criada pela Sun Mycrosystems para ser usada na construo de softwares para sistemas de controle embutido (como eletrodomsticos), mas acabou no sendo usada para esse fim. Baseou-se fortemente em C++, mas bem mais simples. uma LP orientada a objetos. No utiliza explicitamente o conceito de ponteiros e foi projetada para enfatizar a portabilidade. Tem se tornado amplamente utilizada por causa da sua confabilidade e portabilidade, pelo advento da INTERNET e porque os programadores de C e C++ a aprendem facilmente. C# (ou C Sharp) (2001): uma linguagem de programao orientada a objetos desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objectos foi baseada no C++ mas inclui muitas influncias de outras linguagens de programao, como Delphi e Java.

Professor Msc Rafael Soares

Pgina |6