oo com smalltalk

Click here to load reader

Post on 04-Jul-2015

169 views

Category:

Documents

5 download

Embed Size (px)

TRANSCRIPT

INTRODUO PROGRAMAO ORIENTADA A OBJETOS COM SMALLTALK

Miguel Jonathan Departamento de Cincia da Computao - Inst. Matemtica e Ncleo de Computao Eletrnica Universidade Federal do Rio de Janeiro

Agosto 1994

INDICE

Pg

Apresentao . ............................................................................................. iii Captulo 1 - Conceitos Bsicos ................................................................... 1.1 Histrico. Origens de Smalltalk .......................................................... 1.2 Um novo paradigma de programao - classes, objetos, mtodos e mensagens ...................................................................... 1.3 Uniformidade do ambiente Smalltalk. Mensagens de Classe. Mensagens primitivas . ........................................................ 1.4 Mtodos primitivos e programados ................................................... 1.5 Reviso dos conceitos bsicos . ........................................................ 1 1 1 3 5 5

Captulo 2 - Hierarquia de Classes .............................................................. 6 2.1 Classes e sub-classes ....................................................................... 6 2.2 Herana de caractersticas pelas sub-classes .................................. 7 2.3 Determinao do mtodo correspondente a uma mensagem: as variveis especiais self e super..................................................... 8 2.4 A classe Object e o protocolo comum a todos os objetos .................10 2.5 Metaclasses .......................................................................................12 Captulo 3 - Expresses e Mtodos em Smalltalk ........................................15 3.1 Mtodos e Expresses ......................................................................15 3.2 Categorias de expresses. Atribuio ...............................................15 3.3 Sintaxe dos literais.............................................................................16 3.4 Nomes de variveis - variveis privativas e partilhadas.....................18 3.5 Expresses de mensagem ................................................................18 3.6 Expresses de Bloco .........................................................................21 3.7 Estruturas de controle em Smalltalk ..................................................21 3.7.1 Seleo condicional - ifTrue:ifFalse: ....................................22 3.7.2 Repetio simples - timesRepeat: .......................................22 3.7.3 Repetio condicional - whileTrue: e whileFalse:. ............23 3.8 Sintaxe dos mtodos ........................................................................23 3.9 Mtodos recursivos ............................................................................24 Captulo 4 - Classes bsicas da linguagem Smalltalk .................................25 4.1 Magnitude ..........................................................................................25 4.2 Colees de objetos ..........................................................................26 4.3 Streams .............................................................................................32 4.4 Classes grficas ................................................................................34 4.5 A Interface Grfica ............................................................................34 Captulo 5 - Contribuies para a Engenharia de Software .........................36 Referncias bibliogrficas ............................................................................37

ii

Jornadas de Atualizao em Informtica - Congresso SBC 1994

APRESENTAO

Nos ltimos anos, o interesse pela Orientao a Objetos (O-O) de um modo geral cresceu de forma acentuada, especialmente em Banco de Dados, Sistemas Operacionais e Anlise e Projeto de aplicaes, havendo j um consenso de que o paradigma ser dominante nos prximos anos. A utilizao de Smalltalk como linguagem base para esse curso decorre do fato de Smalltalk ser uma linguagem uniformemente orientada a objetos, e no uma linguagem hbrida, como C++ e Object Pascal. Dessa forma, o aluno levado a se concentrar somente em mecanismos voltados para o paradigma, evitando a iluso de estar programando de forma O-O, quando na realidade est apenas utilizando uma linguagem que pode tambm ser programada de forma O-O. Alm disso, Smalltalk a linguagem mais tradicional no campo, tendo sido pioneira na introduo dos principais conceitos relacionados com a programao O-O, como mtodos, mensagens, polimorfismo, encapsulamento, alm de re-introduzir o conceito de classes e hierarquia de classes, originrios da linguagem Simula. O aprendizado de linguagens O-O mais demorado que o das chamadas linguagens algortmicas convencionais, em parte porque necessrio dominar uma quantidade muito maior de conhecimento para fazer uso efetivo do paradigma. Isso porque uma das idias centrais a re-utilizao macia de cdigo, atravs da utilizao direta de classes pr-fabricadas, ou de sua especializao atravs da criao de sub-classes para adapt-las a situaes especficas. Existe aqui um contraste significativo com a tradio da programao convencional, onde as linguagens so restritas a alguns poucos tipos e comandos elementares, de rpida absoro, e o programador procura principalmente criar programas prprios para resolver cada situao particular, com baixo ndice de re-utilizao de solues para sub-problemas especficos. Esse texto procura apenas apresentar algumas das caractersticas de uma linguagem O-O, sem a pretenso de oferecer um quadro completo, e muito menos a de formar programadores. Destina-se a um curso de aproximadamente 8 horas de durao, e seu objetivo essencialmente o de introduzir conceitos. O leitor interessado deve procurar as referncias no final do texto para se aprofundar no assunto. Rio de Janeiro, julho de 1994. Miguel Jonathan (jonathan@nce.ufrj.br)

Jornadas de Atualizao em Informtica - Congresso SBC 1994

iii

CAPTULO I - Conceitos bsicos.1.1 Histrico - origens de Smalltalk. Smalltalk o nome da mais popular linguagem orientada para objetos existente. A expresso "orientada para objetos" contrasta com as linguagens de programao convencionais, que so orientadas para programas e dados. A primeira linguagem a incorporar facilidades para definir classes de objetos genricos na forma de uma hierarquia de classes e sub-classes foi a linguagem Simula [Dahl66], [Birtwistle et al.73]. Simula foi idealizada em 1966, na Noruega, como uma extenso da linguagem ALGOL 60. Uma classe em Simula um mdulo englobando a definio da estrutura e do comportamento comuns a todas as suas instncias (objetos). Como o nome indica, uma linguagem adequada programao de Simulaes de sistemas que podem ser modelados pela interao de um grande nmero de objetos distintos. As idias de Simula serviram de base para as propostas de utilizao de Tipos Abstratos de Dados [Liskov e Ziller 74], e tambm para Smalltalk. Smalltalk foi desenvolvida no Centro de Pesquisas da Xerox durante a dcada de 70 [Goldberg83], e incorporou, alm das idias de Simula, um outro conceito importante, devido a Alan Kay, um de seus idealizadores: o princpio de objetos ativos, prontos a "reagir" a "mensagens" que ativam "comportamentos" especficos do objeto. Ou seja, os objetos em Smalltalk deixam de ser meros "dados" manipulados por "programas", e passam a ser encarados como "processadores idealizados" individuais e independentes, aos quais podem ser transmitidos comandos em forma de "mensagens". Outras linguagens orientadas para objetos tem sido desenvolvidas, notadamente C++ [Stroustrup 86], uma extenso de C, Objective-C, outra extenso de C, menos popular que a anterior [Cox86], Pascal orientado a objetos [Borland92], Eiffel [Meyer88] e mais recentemente, no Brasil, TOOL [TOOL94], [Carvalho 93]. Alm da Xerox, que criou a ParcPlace Systems especialmente para comercializar Smalltalk-80 e seus sucedneos (ObjectWorks), a Digitalk lanou em 1986 uma verso de Smalltalk para ambiente DOS, e mais recentemente a verso para Windows, o que contribuiu para uma maior difuso da linguagem [Digitalk]. Smalltalk, assim como outras linguagens orientadas para objetos, tem sido usada em aplicaes variadas onde a nfase est na Simulao de modlos de sistemas, como automao de escritrios, animao grfica, informtica educativa, instrumentos virtuais, editores de texto e bancos de dados genricos, etc. Tais aplicaes diferem substancialmente daquelas em que a nfase est na resoluo de problemas atravs de algortmos, tais como problemas de busca, otimizao e resoluo numrica de equaes. Para essas aplicaes, mais adequado o uso de linguagens algortmicas convencionais, como Pascal, Algol e Fortran.

Jornadas de Atualizao em Informtica - Congresso SBC 1994

1

1.2. Um novo paradigma de programao: classes, objetos, mtodos e mensagens. Em Smalltalk, assim como em outras Linguagens Orientadas para Objetos (LOO), no existe a mesma distino conceitual entre "programas" e "dados", como nas linguagens algortmicas tradicionais. Nestas, toda a ao concentra-se no programa, que contm a sequncia de instrues, enquanto os dados so passivos e atuam como parmetros ou argumentos das instrues. Em Smalltalk a ao reside nos objetos do sistema, onde cada objeto constitui uma espcie de cpsula englobando no s uma estrutura de dados, mas tambm um conjunto de rotinas associadas. Cada objeto simula um conceito ou abstrao, e pode "reagir" a mensagens que recebe e que fazem parte do seu protocolo de comunicao com os demais objetos do sistema. Ao reconhecer uma mensagem, o objeto ativa uma das rotinas de seu repertrio particular (um mtodo), que descreve o comportamento do objeto associado a essa mensagem. Mais exatamente, cada objeto uma instncia de sua classe. a classe que contm a descrio da representao interna e dos mtodos comuns a todas as suas instncias. Cada instncia da classe, por sua vez, poss

View more