Anda di halaman 1dari 9

TUTORIAL:

A LINGUAGEM DE PROGRAMAO

JAVA

ORIENTAO A OBJETOS

INDCE
1. CLASSES E OBJETOS ................................................................................................................................................. 9
1.1. ESPECIFICANDO UMA CLASSE ................................................................................................................................ 9
1.2. OBJETOS EM JAVA ................................................................................................................................................... 11
1.2.1. PROGRAMA HELLO INTERNET!........................................................................................................................ 12
1.2.2. ATRIBUTOS ......................................................................................................................................................... 14
1.2.3. ATRIBUTOS E MTODOS ................................................................................................................................... 20
1.2.4. MTODOS QUE RETORNAM VALORES. ........................................................................................................... 26
1.2.5. COMPARAO COM UM PROGRAMA EM PASCAL......................................................................................... 27
1.2.6. CONSTRUTORES ................................................................................................................................................ 32
1.2.7. CONSTRUTORES E AGREGAO...................................................................................................................... 35
1.2.8. DESTRUTORES OU finalizers ......................................................................................................................... 37
1.3. PONTEIROS, POINTERS, REFERNCIAS E OBJETOS......................................................................................... 38
1.3.1. PASSAGEM POR REFERNCIA.......................................................................................................................... 38
1.3.2. VETORES E MATRIZES ....................................................................................................................................... 39
1.3.3. COPIA , COMPARAO E DETERMINAO DA CLASSE EM OBJETOS ........................................................ 40
1.4. OBTENDO VALORES DO USURIO ........................................................................................................................ 44
1.4.1. LENDO DO TECLADO ........................................................................................................................................ 44
1.4.1.1. LEITURA DE STRINGS USANDO UM VETOR DE BYTES........................................................................................... 44
1.4.1.2. UMA VISO GERAL SOBRE PACKAGES E STREAMS ............................................................................................... 46

1.4.2. ARGUMENTOS DE LINHA DE COMANDO ........................................................................................................ 48


1.5. ENCAPSULAMENTO COM PRIVATE, PUBLIC, PACKAGE E PROTECTED ....................................................... 49
1.5.1. ENCAPSULANDO MTODOS E ATRIBUTOS ..................................................................................................... 50
1.5.1.1. ATRIBUTOS PRIVATE, MTODOS PUBLIC ................................................................................................................. 52
1.5.1.2. UM ATRIBUTO PUBLIC............................................................................................................................................. 53

1.5.2. ENCAPSULAMENTO E PACKAGES ............................................................................................................... 54


1.5.2.1. ENCAPSULAMENTO DE ATRIBUTOS E MTODOS COM PACKAGES ..................................................................... 55
1.5.2.2. ENCAPSULAMENTO DE CLASSES COM PACKAGES ................................................................................................ 59

1.6. TIPO ABSTRATO DE DADOS ................................................................................................................................... 64


1.6.1. TAD FRAO ...................................................................................................................................................... 64
1.6.2. STRINGS, UM MODELO DE CLASSE ................................................................................................................. 70
1.6.3. TAD E ALOCAO DINMICA. ......................................................................................................................... 73
2. HERANA ................................................................................................................................................................... 80
2.1. HIERARQUIAS DE TIPOS ......................................................................................................................................... 80
2.1.1. UMA HIERARQUIA SIMPLES. ............................................................................................................................ 80
2.1.2. PROTECTED ....................................................................................................................................................... 84
2.1.3. REDEFINIO DE MTODOS HERDADOS ...................................................................................................... 88
2.2. INTERFACES, UMA ALTERNATIVA PARA HERANA MLTIPLA...................................................................... 90
3. POLIMORFISMO, CLASSES ABSTRATAS ............................................................................................................. 93
3.1. REDEFINIO DE MTODOS PARA UMA CLASSE HERDEIRA ........................................................................... 93
3.2. SOBRECARGA ( MTODOS E OPERADORES)........................................................................................................ 93
3.2.1. SOBRECARGA DE MTODOS, COPY CONSTRUCTOR ................................................................................ 93
3.2.2. SOBRECARGA DE OPERADOR .......................................................................................................................... 96
3.3. CLASSES ABSTRATAS E CONCRETAS................................................................................................................... 96
3.3.1. CLASSE ABSTRATA ITERADOR ......................................................................................................................... 99
3.3.2. ACOPLAMENTO DINMICO DE MENSAGENS ............................................................................................... 103
3.3.2.1. UM EXEMPLO ESCLARECEDOR ................................................................................................................................ 104
3.3.2.2. O QUE ACONTECE COM O QUE FOI ACRESCENTADO ........................................................................................... 105

3.3.3. LISTA HETEROGNEA DE FORMAS (geomtricas) ......................................................................................... 106


4. CONCEITOS AVANADOS .................................................................................................................................... 109
4.1. ATRIBUTOS STATIC............................................................................................................................................... 109
4.2. MTODOS STATIC................................................................................................................................................. 110
4.3. TRATAMENTO DE EXCEES ............................................................................................................................. 111
4.3.1. TRATANDO AS EXCEES GERADAS POR TERCEIROS ............................................................................... 112
2

4.3.2. GERANDO SUAS PRPRIAS EXCEES .........................................................................................................114


4.4. THREADS .................................................................................................................................................................115
4.4.1. CRIANDO THREADS USANDO INTERFACES OU HERANA .........................................................................116
4.4.1.1. HERANA USADA PARA CRIAR THREADS .............................................................................................................. 116
4.4.1.2. INTERFACES USADAS PARA CRIAR THREADS ....................................................................................................... 118

4.4.2. PENSANDO MULTITHREADED ........................................................................................................................120

Prefcio:
Erro! Indicador no definido.Este texto faz parte de um estudo comparativo de linguagens
de programao orientadas a objetos. O contedo deste estudo tambm est disponvel na World
Wide Web, rea multmidia da internet, sob o endereo http://www.dcc.unicamp.br/~aacesta .
Neste endereo, voc pode complementar seu aprendizado, rodando exerccios iterativos, acessando
links para outros hipertextos sobre linguagens de programao, vendo exemplos de programas e
interagindo com aplicaes para a internet.
A diferena entre este estudo e outros textos que voc possa encontrar sobre o mesmo assunto
o carter prtico. Exemplos completos, dicas de programao, explicaes sobre detalhes
normalmente ignorados em livros, tornaro seu aprendizado mais fcil, principalmente na segunda
parte onde tratamos da construo de aplicaes para a internet.
No inicio, os exemplos podem ser considerados fceis, mas eles vo se complicando cada vez
mais de modo que importante que o leitor acompanhe o texto fazendo os exerccios.
Forneceremos uma srie de idias de programas simples para que voc possa testar seu
conhecimento. Estes programas simples podem ser melhorados atravs do uso de interfaces grficas,
assunto que no coberto neste tutorial.
QUEM DEVERIA LER ESTE TUTORIAL
Qualquer leitor que tenha experincia com pelo menos uma linguagem de programao.
DIAGRAMAO DESTE TEXTO
Erro! Indicador no definido.Apesar de Java ser uma linguagem que serve para vrios
propsitos, o seu sucesso atual (poca do seu lanamento) se deve a possibilidade de elaborao
de aplicaes para a internet. Dada a importncia deste aspecto da linguagem, este texto est
organizado de maneira semelhante as pginas encontradas na WWW, frequentemente voc
encontrar diagramas como o seguinte:
http://www.dcc.unicamp.br/~aacestaErro! Indicador no definido.
TUTORIAL

Estudo comparativo de linguagens de programao orientadas a objetos. Nesta pgina voc


encontrar tutoriais sobre diversas linguagens orientadas a objetos, dentre elas: C++, Modula-3, Java.
Quanto a Java, voc ter a oportunidade de ver cdigo de programas e test-los, alm de poder
adquirir a verso mais nova deste texto.Encontrar tambm links para sites sobre orientao a objetos.

Este diagrama representa um hipertexto que pode ser acessado de modo a complementar seu
estudo. A parte escrita em letra maior o endereo, o texto em itlico faz um resumo do contedo
desta pgina. Usando estes linksErro! Indicador no definido. ou diagramas voc encontrar
uma maneira ordenada de aprender sem se perder no mar de informaes da internet.
URL: Uniform Resource Locator, o endereo de um computador na internet
O diagrama acima aparecer toda vez que introduzirmos uma palavra nova. Caso voc
encontre alguma palavra desconhecida, basta usar o ndice remissivo para obter sua definio.
importante lembrar que os hipertextos citados neste tutorial, no so de nossa
responsabilidade. Como eles esto sujeitos a mudanas, contamos com a sua ajuda para efetuarmos
atualizaes, conte voc tambm com a nossa ajuda na internet.
Os programas exemplo deste texto so apresentados em caixas retangulares, e todo cdigo
escrito em fonte diferente da usada neste texto comum. O trechos de cdigo que aparecem
4

desmembrados de seus arquivos, tem fundo cinza claro. Todos os arquivos presentes dentro dos
retngulos, so arquivos text-only, qualquer formatao (negrito) tem apenas funo didtica.
Os resultados dos programas so indicados pelo diagrama ao lado:
Erro! Indicador no definido.

DIVISO DO TUTORIAL
Erro! Indicador no definido.Este tutorial contm uma sequncia de tpicos que permite
apresentar a linguagem sob a tica da teoria de orientao a objetos. A apresentao do modelo de
objetos da linguagem e conceitos relacionados tais como polimorfismo, tratamento de excees
est em primeiro plano. Ao longo dessa apresentao, em segundo plano, voc aprender os
aspectos bsicos da linguagem tais como loops, desvios condicionais, etc.
Estes tpicos so frequentemente retomados, cada vez de maneira mais aprofundada. Quando
terminamos o assunto mtodos, voc j est pronto para saber o que so contrutores, e
exatamente isto que ensinamos. Porm o assunto contrutores no esgotado, voc ainda vai
aprender a usar construtores em conjunto com agregao e depois em conjunto com herana.
A maioria dos leitores fica ansiosa para aprender como criar aplicaes para a internet, mas
depois de satisfeita esta ansiedade voltam para o ponto onde aprendem como programar na
linguagem e no apenas experimentar com a criao de botes, caixas de dilogo, imagens, etc. Se
esse o seu caso, recomendvel um tour pela WWW antes de comear a programar, um bom
site para comear a pesquisar com um browser compatvel com Java (Netscape Navigator
2.0 ou superior) :
http://www.Javasoft.com/applets
APPLETS

Links para vrios applets, divididos por categorias: games, sound, busines, animation... Divirtase...

APPLETS: So pequenos programas escritos em Java que podem ser embebidos em documentos
hipetextos. So exemplos de applets: animaes, imagens, botes, etc. Applets podem suportar efeitos de
multimidia como sons, iteraes com o usurio (mouse, teclado), imagens, animaes, grficos, etcErro!
Indicador no definido..

Ao longo do texto,voc perceber que Java excelente para desenvolver aplicaes


comerciais e para ser usada em universidades. Java pode ser vista como uma fuso de vrias
tcnologias que vm sendo desenvolvidas na rea de computao, de modo que estudantes dessa
linguagem tem a oportunidade de tomar contato com vrios tpicos recentes: programao
concorrente, sitemas distribudos, orientao a objetos, protocolos da internet, e uma srie de outros
assuntos fceis de praticar nessa linguagem.
claro que os resultados dependero de seu esforo, portanto depois de ler esta introduo,
descanse um pouco, tome um cafezinho 1. Pois durante o restante do texto esperaremos que voc se
envolva com a linguagem, reuse programas encontrados na W.W.W, se comunique com colegas
programadores, participe de listas de discusses, newsgroups (comp.lang.Java &
alt.www.hotJava), e o mais importante: PROGRAME, PROGRAME, RE-PROGRAME!
ADQUIRINDO O SOFTWARE NECESSRIO, PLATAFORMAS SUPORTADAS
1

Um dos smbolos da linguagem uma xcara de caf que aparece em animaes com sua fumaa quente tremulando.
5

Erro! Indicador no definido.Erro! Indicador no definido.Um ambiente de programao


Java normalmente composto de um kit de desenvolvimento de aplicaes Java e um browser
compatvel com esta linguagem (recomendvel). Se voc no tem acesso a esse ambiente de
programao, tente estes endereos:

DOWNLOAD

JAVA

http://Java.sun.comErro! Indicador no definido.


. Raiz do hipertexto montado pelos criadores da linguagem. Sob este endereo voc pode obter o
compilador e outras ferramentas de desenvolvimento de aplicaes Java para a sua plataforma de
programao. Fique atento! Outros desenvolvedores esto criando ambientes de programao Java.

http://www.netscape.comErro! Indicador no definido.


Raiz do hipertexto montado pelos criadores do Netscape Navigator. Sob este endereo voc pode
DOWNLOAD obter o browser Java compatible da Netscape Comunications INC.. Outros desenvolvedores esto
BROWSERS lanando browsers compatveis com Java.

http://www.microsoft.comErro! Indicador no definido.


A microsoft licenciou a tecnologia Java e a incorporou em seu novo browser: Internet Explorer
DOWNLOAD verso 3.0 ou superior.
BROWSERS

BROWSERS: So uma categoria de programas que permitem voc visualizar um documento criado
em um certo padro, no caso html (hipertext markup language). Atualmente os browsers tem se tornado
complexos devido a quantidade de padres existentes (ex. imagens .gif .jpg, etc). A linguagem Java pode
contribuir para minimizar esta complexidade.Erro! Indicador no definido.

CARACTERSTICAS DA LINGUAGEM
Parecida com C, C++:
Erro! Indicador no definido.Java tem a aparncia de C ou de C++, embora a filosofia da
linguagem seja diferente. Por este motivo estaremos frequentemente fazendo comparaes alguma
destas linguagens. O leitor que programa em qualquer uma delas, ou em uma linguagem orientada a
objetos, se sentir mais a vontade e se tornar um bom programador Java em menos tempo.
Erro! Indicador no definido.Java tambm possui caractersticas herdadas de muitas outras
linguagens de programao: Objective-C, Smalltalk, Eiffel, Modula-3, etc. Muitas das caractersticas
desta linguagem no so totalmente novas. Java uma feliz unio de tecnologias testadas por
vrios centros de pesquisa e desenvolvimento de software.
Compilada:
Erro! Indicador no definido.Um programa em Java compilado para o chamado bytecode, que prximo as instrues de mquina, mas no de uma mquina real. O byte-code um
cdigo de uma mquina virtual idealizada pelos criadores da linguagem. Por isso Java pode ser
mais rpida do que se fosse simplesmente interpretada.
Portvel:
Java foi criada para ser portvel. O byte-code gerado pelo compilador para a sua aplicao
especfica pode ser transportado entre plataformas distintas que suportam Java (Solaris 2.3,
Windows-NT, Windows-95, Mac/Os etc)Erro! Indicador no definido.Erro! Indicador no
definido.Erro! Indicador no definido.. No necessrio recompilar um programa para que ele
6

rode numa mquina e sistema diferente, ao contrrio do que acontece por exemplo com programas
escritos em C e outras linguagens.
Esta portabilidade importante para a criao de aplicaes para a heterognea internet.
Muitos d os programas exemplo deste tutorial foram escritos e compilados numa plataforma
Windows-95 e rodaram perfeitamente quando simplesmente copiados para uma plataforma Solaris
2.3. Em Java um inteiro por exemplo, tem sempre 32 bits, independentemente da arquitetura. O
prprio compilador Java escrito em Java, de modo que ele portvel para qualquer sistema que
possua o interpretador de byte-codes. Um exemplo de programa escrito em Java o browser
hotjava.
Orientada a Objetos:
A portabilidade uma das caractersticas que se inclui nos objetivos almejados por uma
linguagem orientada a objetos. Em Java ela foi obtida de maneira inovadora com relao ao grupo
atual de linguagens orientadas a objetos.
Java suporta herana, mas no herana mltipla. A ausncia de herana mltipla pode ser
compensada pelo uso de herana e interfaces, onde uma classe herda o comportamento de sua
superclasse alm de oferecer uma implementao para uma ou mais interfaces.
Java permite a criao de classes abstratas. Outra caracterstica importante em linguagens
orientadas a objetos a segurana. Dada a sua importncia o tpico foi escrito a parte.
Segura:
Erro! Indicador no definido.A presena de coleta automtica de lixo, evita erros comuns
que os programadores cometem quando so obrigados a gerenciar diretamente a memria (C ,
C++, Pascal ). A eliminao do uso de ponteiros, em favor do uso de vetores, objetos e outras
estruturas substitutivas traz benefcios em termos de segurana. O programador proibido de obter
acesso a memria que no pertence ao seu programa, alm de no ter chances de cometer erros
comuns tais como reference aliasing e uso indevido de aritmtica de ponteiros. Estas medidas so
particularmente teis quando pensarmos em aplicaes comerciais desenvolvidas para a internet.
Ser strongly typed tambm uma vantagem em termos de segurana, que est aliada a
eliminao de converses implcitas de tipos de C++.
A presena de mecanismos de tratamento de excees torna as aplicaes mais robustas, no
permitindo que elas abortem, mesmo quando rodando sob condies anormais. O tratamento de
excees ser til na segunda parte para modelar situaes tais como falhas de transmisso e
formatos incompatveis de arquivos.
Suporta concorrncia:
Erro! Indicador no definido.Erro! Indicador no definido.A linguagem permite a criao
de maneira fcil, de vrios threads de execuo. Este tpico ser til quando voc estudar
animaes, e particularmente poderoso nos ambientes em que aplicaes Java so suportadas,
ambientes estes que geralmente podem mapear os threads da linguagem em processamento paralelo
real.
Eficiente:
Erro! Indicador no definido.Como Java foi criada para ser usada em computadores
pequenos, ela exige pouco espao, pouca memria. Java muito mais eficiente que grande parte
das linguagens de scripting existentes, embora seja cerca de 20 vezes mais lenta que C, o que no
7

um marco definitivo. Com a evoluo da linguagem, sero criados geradores de byte-codes cada
vez mais otimizados que traro as marcas de performance da linguagem mais prximas das de C++ e
C. Alm disso um dia Java permitir a possibilidade de gerar cdigo executvel de uma particular
arquitetura on the fly, tudo a partir do byte-code.
Suporte para programao de sistemas distribudos:
Erro! Indicador no definido.Java fornece facilidades para programao com sockets,
remote method call, tcp-ip, etc. Estes tpicos no sero abordados neste texto.

PROGRAMAO ORIENTADA A OBJETOS


Erro! Indicador no definido.

NOTA AOS PROGRAMADORES C


Erro! Indicador no definido.A leitura deste hipertexto fortemente recomendada para os
programadores que tem C ou C++ como sua principal linguagem de programao, mesmo antes
de iniciar a leitura deste tutorial:
http://www.dcc.unicamp.br/~aacesta/java/group.html (Clique em brewing Java
tutorial)
DOWNLOAD
BROWSERS Brewing Java: A Tutorial, Um tutorial de Java que segue o estilo do livro inicial sobre C,

escrito por Kernighan & Ritchie [Erro! Argumento de opo desconhecido.[2]], a referncia bsica
para este texto. Cobre principalmente sintaxe de loops e outros assuntos fceis no abordados aqui.

Iniciaremos com um pouquinho de teoria sobre orientao a objetos. Se voc quiser algum
hipertexto para aprofundamento ou para ler em paralelo com esta introduo sobre classes e objetos
e use:
http://www.dcc.unicamp.br/~aacesta/java/group.html
TUTORIAIS

1.

Esta a homepage do grupo de estudos em Java. Voc vai encontrar links atualizados para diversos
lugares na internet onde se estuda Java.

CLASSES E OBJETOS

Erro! Indicador no definido.Uma classe um tipo definido pelo usurio que contm o
molde, a especificao para os objetos, algo mais ou menos como o tipo inteiro contm o molde
para as variveis declaradas como inteiros. A classe envolve, associa, funes e dados, controlando
o acesso a estes, defin-la implica em especificar os seus atributos (dados) e seus mtodos (funes).
Um programa que utiliza uma interface controladora de um motor eltrico provavelmente
definiria a classe motor. Os atributos desta classe seriam: temperatura, velocidade, tenso aplicada.
Estes provavelmente seriam representados na classe por tipos como int ou float. Os mtodos desta
classe seriam funes para alterar a velocidade, ler a temperatura, etc.
Um programa editor de textos definiria a classe pargrafo que teria como um de seus atributos
uma String ou um vetor de Strings, e como mtodos, funes que operam sobre estas strings.
Quando um novo pargrafo digitado no texto, o editor cria a partir da classe Pargrafo um
objeto contendo as informaes particulares do novo texto. Isto se chama instanciao ou criao
do objeto.
1.1.

ESPECIFICANDO UMA CLASSE

Erro! Indicador no definido.Suponha um programa que controla um motor eltrico atravs


de uma sada serial. A velocidade do motor proporcional a tenso aplicada e esta proporcional aos
bits que vo para sada serial e passam por um conversor digital analgico.
Vamos abstrair todos estes detalhes por enquanto e modelar somente a interface do motor
como uma classe, a pergunta que mtodos e que atributos deve ter nossa classe, que argumentos e
valores de retorno devem ter os mtodos?
Representao da velocidade:

Anda mungkin juga menyukai