apostila linguagem java em português | curso java web 3way networks

21
Linguagem Java www.3way.com.br Apostila Java OO

Upload: 3way-networks

Post on 02-Jan-2016

166 views

Category:

Documents


0 download

DESCRIPTION

Esta apostila faz parte do curso Java Web da 3WAY Networks.Objetivos do curso:Desenvolver aplicações voltadas para Web, baseadas no modelo de arquitetura em 3 camadas para Internet, utilizando os fundamentos e recursos inerentes às tecnologias: Servlets e JSP.Conteúdo da apostila1 Introdução à Linguagem Java 61.1 O que é a Tecnologia Java ? 61.1.1 JSE - Java Standard Edition 61.1.2 JEE - Java Enterprise Edition 61.1.3 JME - Java Micro Edition 61.1.4 Java Card 71.2 Quanto tempo é necessário para aprender Java? 71.3 O curso 81.3.1 Convenções de Código 81.3.2 Sobre os exercícios 81.4 Fazer Laboratório 0 82 Bases da Programação em Java 92.1 Classes 92.1.1 Declarando Membros: Variáveis e Métodos 102.2 Objetos 102.2.1 Instância de Classes 102.2.2 Referência de Objetos 112.3 Membros de Instância 122.3.1 Invocação de Métodos 122.3.1.1 Chamando Métodos de Objeto 132.3.2 Envio de Argumentos para Métodos 132.3.2.1 Passagem de Parâmetros por valor 132.3.2.2 Passagem de Parâmetros por referência 142.4 Membros Estáticos 152.5 Herança - Relacionamentos do tipo "é-um" 162.6 Agregação - Relacionamentos do tipo "tem-um" 172.7 Princípios de Programação Com Java 182.8 Estrutura de Arquivos Fontes em Java 182.9 O método main() 192.10 Fazer Laboratório 1 192.11 Exercícios

TRANSCRIPT

Page 1: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem Java

www.3way.com.br

Apostila

Java OO

Page 2: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

2Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 Introdução à Linguagem Java 61.1 O que é a Tecnologia Java ? 61.1.1 JSE - Java Standard Edition 61.1.2 JEE - Java Enterprise Edition 61.1.3 JME - Java Micro Edition 61.1.4 Java Card 71.2 Quanto tempo é necessário para aprender Java ? 71.3 O curso 81.3.1 Convenções de Código 81.3.2 Sobre os exercícios 81.4 Fazer Laboratório 0 82 Bases da Programação em Java 92.1 Classes 92.1.1 Declarando Membros: Variáveis e Métodos 102.2 Objetos 102.2.1 Instância de Classes 102.2.2 Referência de Objetos 112.3 Membros de Instância 122.3.1 Invocação de Métodos 122.3.1.1 Chamando Métodos de Objeto 132.3.2 Envio de Argumentos para Métodos 132.3.2.1 Passagem de Parâmetros por valor 132.3.2.2 Passagem de Parâmetros por referência 142.4 Membros Estáticos 152.5 Herança - Relacionamentos do tipo "é-um" 162.6 Agregação - Relacionamentos do tipo "tem-um" 172.7 Princípios de Programação Com Java 182.8 Estrutura de Arquivos Fontes em Java 182.9 O método main() 192.10 Fazer Laboratório 1 192.11 Exercícios 193 Identificadores, Palavras-chave e Tipos 193.1 Comentários 193.2 Ponto-e-Vírgula, Blocos e Espaço 203.3 Identificadores 203.4 Palavras Reservadas 203.5 Variáveis, Declarações e Atribuição 213.5.1 Declarando e inicializando Variáveis 213.5.2 Exibindo o valor de uma Variável 223.5.3 Variáveis de Referência e de Valor 223.6 Tipos Básicos em Java 233.6.1 Literais Java 233.6.2 Tipos Dados Primitivos 233.6.2.1 Lógico – boolean 233.6.2.2 Textual – char and String 233.6.2.3 Inteiro – byte, short, int e long 243.6.2.4 Ponto Flutuante – float e double 243.6.2.5 Exemplos de declarações e atribuições 253.7 Conversões 263.7.1 Casting de Tipos Primitivos 263.7.2 Literais numéricos e Promoção Numérica 263.8 Classes Wrapper (Empacotadoras) 273.8.1 Construtores Wrapper 283.8.2 Método valueOf 283.8.3 Conversões 28

33333445555778889

1111121212131416171818191919

*Apostilha referente somente ao primeiro módulo do curso Formação Java Web 3Way Networks.

Page 3: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

3Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

6

1 Introdução à Linguagem Java 1.1 O que é a Tecnologia Java?

Talvez não seja a primeira vez que você ouve falar em Java, Java 5, Java 6, JRE, Máquina Virtual, J2SE,J2EE, JSP, EJB e etc. Bom, a resposta é muito longa e pouco proveitosa neste momento. Você não vai encontrarneste material todas as explicações para tantas siglas e nomes que estão relacionados com a tecnologia Java.

De forma bastante simplificada podemos dizer que a tecnologia Javaé composta por uma gama de produtos pensados para utilizar o melhor dasredes de computadores e capaz de serem executados (rodar) em diferentesmáquinas, sistemas operacionais e dispositivos. Por diferentes dispositivosentendemos: PCs, servidores, notebooks, handhelds, PDAs (Palm), celulares,TV, geladeiras e tudo que for possível instalar e executar uma JVM.

Os programas feitos em Java rodam em diferentes ambientes graçasa um componente da plataforma chamado JVM (Java Virtual Machine) – queé um tipo de tradutor de código Java para instruções específicas de cadasistema operacional e/ou dispositivo.

A tecnologia Java foi lançada em 1995 e desde então tem crescidoem popularidade e se tornado uma plataforma muito estável e madura.

A Plataforma Java pode ser subdividida nos seguintes grupos:

- JSE (Java Standard Edition)- JEE (Java Enterprise Edition)- JME (Java Micro Edition)- Java Card

1.1.1 JSE - Java Standard EditionA JSE é uma rica plataforma que oferece um completo ambiente para o desenvolvimento de aplicações

para clientes e servidores. A JSE é também a base da tecnologia JEE e está dividida em dois grupos conceituais:Core Java e Desktop Java.

Empresas como Sun, IBM, BEA, entre outras, distribuem a JSE na forma de um SDK (SoftwareDevelopment Kit), em conjunto com uma JRE (Java Runtime Environment).

O pacote do SDK da JSE vem com ferramentas para: compilação, debugging, geração de documentação(javadoc), empacotador de componentes (jar) e a JRE, que contém a JVM e outros componentes necessários pararodar aplicações Java.

O JDK (SDK Java) é usado para compilar e depurar programas, sendo utilizados pelos desenvolvedores desistemas.

A JRE é o ambiente de execução, sendo utilizado por qualquer um que deseje executar um programa quetenha sido compilado como byte code Java.

1.1.2 JEE - Java Enterprise EditionA tecnologia JEE não é um produto, mas sim uma especificação definida por grandes empresas, através do

JCP (Java Community Process). Simplifica o desenvolvimento de aplicações empresariais e multi-camadas. Ébaseado nos componentes padronizados, modulares e reusáveis, como os EJB (Enterprise JavaBeans). Oferece umconjunto completo de serviços para estes componentes. Define muitos comportamentos da aplicação. Você nãoprecisa reaprender a programar pois você vai utilizar os mesmo recursos do Java SE . Necessita de servidores deaplicações JEE. A tecnologia JEE não está no escopo deste curso.

1.1.3 JME - Java Micro EditionA tecnologia JME é voltada para aplicações que rodam em pequenos dispositivos como celulares, PDAs,

smart cards e etc. Ela possui uma API bastante completa para o desenvolvimento de aplicações de dispositivosmóveis. A tecnologia J2ME não está no escopo deste curso.

Os programas feitos em Javarodam em diferentes

ambientes graças a JVM (JavaVirtual Machine).

Page 4: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

4Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

7

1.1.4 Java CardJava Card é uma tecnologia que permite pequenos aplicativos (applets)

baseados em plataforma Java sejam executados com segurança em smart cards edispositivos similares com limitações de processamento e armazenamento, comoo Java Ring. É muito utilizado em cartões SIM (usados em celulares GSM) e emcaixas eletrônicos.

Os produtos Java Card são baseados nas especificações da plataformaJava Card desenvolvida pela Sun Microsystems, e suas principais característicassão portabilidade e segurança.

1.2 Quanto tempo é necessário para aprender Java?Podemos dizer que muito tempo, basicamente o que será apresentado

neste material. Como já dissemos e você vai perceber, Java é muito mais que umalinguagem de programação, é um conjunto de ferramentas e bibliotecas de apoioao desenvolvimento de sistemas em diversas áreas de tecnologia de software.Porém, mais importante que aprender a linguagem é aprender a programar noparadigma de orientação a objetos.

O texto abaixo é uma tradução do artigo de autoria de Peter Norvig(http://norvig.com/21-days.html, para ver original ou busque na internet "Aprendaa programar em dez anos"), os conselhos apresentados servem para todos os quedesejam ou necessitam aprender programar.

Abaixo está a receita de Peter Norvig para sucesso na programação:

Aprenda inglês. Leia o texto original. Essa tradução só está aqui para exercitar o meu inglês, não o seu.(Nota do tradutor)Se interesse por programação e programe porque você acha legal. Tenha certeza que isso continue aser legal para você dedicar dez anos nisso.Converse com outros programadores; leia outros programas. Isso é mais importante do que qualquerlivro ou curso de treinamento.Programe. O melhor tipo de aprendizado é aprender fazendo. Colocando de uma forma mais técnica,"o nível máximo de performance individual em um domínio não é alcançado automaticamente emfunção de uma experiência estendida, mas sim aumentado, mesmo por indivíduos extremamenteexperientes, por um esforço deliberativo de melhorar." (p. 366) e "o aprendizado mais efetivo requeruma tarefa bem definida com uma dificuldade apropriada para o indivíduo em particular, dado queexista um retorno sobre a experiência e oportunidades de repetição e correções de erros." (p. 20-21)do livro Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, que é uma referênciainteressante deste ponto de vista.Se você quiser, gaste quatro anos em uma universidade (ou mais em uma pós-graduação). Isso lhe daráacesso a alguns empregos que requerem alguma formação e um grande entendimento do campo detrabalho, mas se você não gosta muito de ir para escola, você pode (com alguma dedicação) conseguiralguma experiência similar sobre esse tipo de trabalho. Em qualquer caso, apenas ler livros não serásuficiente. "Educação em ciências da computação não faz de ninguém um gênio em programaçãotanto quanto estudar pincéis e pigmentos não fazem um bom pintor." diz Eric Raymond, autor deThe New Hacker’s Dictionary. Um dos melhores programadores que eu já contratei tinha apenas osegundo grau, e ele produziu vários softwares incríveis, tem seu próprio grupo de discussão, e fezdinheiro suficiente em ações para comprar seu próprio clube noturno.Trabalhe em projetos com outros programadores. Seja o melhor programador em alguns projetos, sejao pior em outros. Quando você é o melhor você testa suas habilidades para liderar um projeto e parainspirar os outros com a sua visão. Quando você for o pior aprenderá o que os mestres ensinam e oque eles não gostam de fazer (porque eles fazem você fazer por eles).Trabalhe em projetos após outros programadores. Esteja envolvido em entender um programa escrito

Não se preocupe com oquanto tempo, mas com oque devo aprender para

programar em Java.Mais importante que

aprender a linguagemJava é aprender a

programar no paradigmade orientação a objetos.

Page 5: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

5Todos os direitos reservados a 3Way Networks

Page 6: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

6Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

8

por outro. Veja o que é preciso para entender e consertar quando o programador original não está porperto. Pense em como desenvolver seus programas para que seja fácil mantê-los, se não for você.Aprenda pelo menos meia dúzia de linguagens de programação. Inclua na lista uma linguagemorientada a objetos (como Java ou C++), uma que seja de abstração funcional (como Lisp ou ML),uma que suporte abstração sintática (como Lisp), uma que suporte especificação declarativa (comoProlog ou C++ com templates), uma que suporte co-rotinas (como Icon ou Scheme), e uma quesuporte paralelismo (como Sisal).Lembre-se que há um "computador" em "ciência da computação". Saiba quanto tempo leva para o seucomputador computar uma instrução, carregar uma palavra até a memória (com e sem cache), lerpalavras consecutivas do disco rígido, procurar por uma nova posição no disco.Se envolva no esforço de padronização de uma linguagem. Pode ser o comité ANSI C++, ou napadronização de programação na sua empresa, se utilizaram edentação com 2 ou 4 espaços. Emqualquer caso, você aprende o que outras pessoas gostam em uma linguagem, o quanto elas gostam etalvez um pouco do porque elas gostam.Tenha o bom senso de cair fora desse processo de padronização tão rápido quanto possível.

1.3 O cursoEste curso é abordado de forma bastante prática, ou seja, construindo programas com a linguagem de

programação o máximo possível durante o treinamento.Você tem um material com a teoria necessária e um conjunto de atividades práticas, denominadas

laboratórios. Todo o conteúdo corresponde ao que já definimos como JSE.O material não é e não deve ser adotado como sua única referência para estudos da linguagem, a

aquisição de livros ou leitura do tutorial oficial da Sun é recomendado.Seu material está ordenado numa seqüência didática que consideramos a mais adequada para o seu

aprendizado. A cada exemplo ou exercício apresentado em um capítulo tentamos não utilizar recursos dalinguagem que ainda não tenham sido apresentados no capítulo corrente ou anterior. No entanto, sempre quepossível nós introduzimos vários destes recursos em exemplos de códigos com o objetivo de apresentá-lodeliberadamente para você ou simplesmente para simplificar o código exemplo. Assim vamos apresentado algumasbibliotecas da linguagem, sem entrar em detalhes, para que você vá se familiarizando com uso das mesmas.

1.3.1 Convenções de CódigoOs códigos e exemplos apresentados neste material seguem as convenções de código-fonte Java, sempre

que possível, mas podem sofrer adaptações para melhorar a impressão.Você deve se familiarizar com essa convenção veja em

http://www.oracle.com/technetwork/java/codeconv-138413.html

1.3.2 Sobre os exercíciosNo curso Java e Orientação a Objetos, é recomendado estudar em casa aquilo que foi visto durante a aula,

fazendo os exercícios que não foram feitos ou refazendo os que já foram feitos em sala.Os laboratórios deverão ser resolvidos durante o treinamento com objetivo de exercitar a linguagem de

programação e não a sua capacidade de programar. Contudo eles apresentam uma pequena aplicação que serácompletada ao final de todos os laboratórios.

Durante a execução de um laboratório o mesmo pode necessitar de listagem de códigos que já foramconstruídos nos laboratórios anteriores, portanto não deixe de fazer o exercício do laboratório, especialmente astarefas que forem indicadas para você fazer. Os laboratórios possuem uma duração estimada e o instrutor deverásegui-la a fim de concluir os laboratórios com sucesso. Não atrase o andamento do curso, se sentir dificuldadechame o instrutor.

1.4 Fazer Laboratório 0Siga instruções do Laboratório 0 e tome cuidado com o tempo de execução, sempre recorra ao instrutor

em caso de dúvida, nunca deixe uma dúvida sem reposta.

Page 7: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

7Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

9

2 Bases da Programação em JavaAntes de começarmos nossa jornada no mundo da programação em

Java, é importante compreendermos a terminologia básica e os conceitos emprogramação orientada a objetos. Neste capítulo veremos os princípios básicosda programação em Java sem aprofundamento dos temas, que serão revistoscom maior profundidade nos capítulos subseqüentes.

2.1 ClassesAbstrações são o fundamento utilizado por nós, seres humanos, a fim de

lidar com a complexidade. Uma abstração demonstra o comportamento epropriedades essenciais de um objeto, que o diferencia de outro objeto qualquer.Por exemplo, ao utilizar um carro, você não pensa nele como um conjunto dedezenas de milhares de peças individuais. Pensamos em um carro como um únicoobjeto sobre qual podemos realizar um determinado conjunto de operações. Essaabstração permite que as pessoas utilizem um carro sem nenhum conhecimentosobre mecânica de automóveis. Podemos ignorar os detalhes do motor como:sistema de injeção de combustíveis, transmissão, sistema de freios funcionamindividualmente ou em conjunto. Ao invés disso, utilizamos o objeto automóvel como um elemento único.

A essência da Programação Orientada a Objetos (POO) consiste modelaras abstrações usando Classes e Objetos. A parte difícil deste trabalho é encontrar aabstração mais correta. Uma Classe modela uma abstração pela definição daspropriedades e comportamentos dos objetos representados pela abstração. UmaClasse, então, especifica a categoria dos Objetos e funciona como uma "plantabaixa" na criação desses objetos. Um Objeto é qualquer coisa criada a partir dessaClasse, algo contendo as propriedades e comportamentos definidos na Classe.Voltando ao exemplo do carro, um grupo de engenheiros mecânicos criam oprojeto de um carro (a Classe) e a partir deste projeto são reproduzidos milharesde automóveis (os Objetos), praticamente idênticos entre si.

Propriedades de um Objeto da Classe são chamados de atributos e sãodefinidos usando variáveis em Java, também denominado Campos da Classe. Ocomportamento de um Objeto, também conhecido por operações, são definidosusando-se métodos em Java. Variáveis e métodos utilizados na definição da classesão, juntos, denominados de Membros da Classe.

Usando notação de Classe da UML (Unified Modeling Language),podemos descrever graficamente o exemplo de uma classe Carro, ver Figura 2.1.Ambos atributos (variáveis) e métodos são mostrados na forma expandida naFigura 2.1.

Figura 2.1 Notação UML para Classe

A essência daProgramação Orientada a

Objetos (POO) consisteem modelar as abstraçõesusando Classes e Objetos.

Um Objeto é qualquercoisa criada a partir dessaClasse, algo contendo as

propriedades ecomportamentos

definidos na Classe.

Page 8: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

8Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

10

2.1.1 Declarando Membros: Variáveis e MétodosNa Listagem 2.1 mostra a implementação em Java da definição da classe mostrada na Figura 2.1. O

exemplo, apesar de não se preocupar com a utilidade desta implementação, mostra as principais características dadefinição de uma classe em Java.

public class Carro { // nome da classe

// Variaveisprivate String cor;private String ano;private String modelo;private String nome;

// Constructorpublic Carro() {

modelo = "2000";}// Métodospublic String acelerar() {

return "acelerando !";}public String frear() {

return "freando !";}public String abrirPorta() {

return "abre porta !";}

}

Listagem 2.1 – Elementos Básicos da Definição de uma Classe

A classe possui quatro variáveis, toda variável em Java deve ter um tipo, neste caso todas são do tipo String(linhas 4 a 7), possui três métodos (linhas 13 a 15) representado as operações disponíveis aos objetos da classe eum método especial (linha 10) com o mesmo nome da classe, este método é denominado construtor e seupropósito é inicializar o objeto quando este é criado a partir da classe.

String é uma classe em Java, ela armazena um conjunto de caracteres.Como estamos aprendendo o que é uma classe, detalharemos a classe Stringposteriormente.

2.2 ObjetosUm objeto é uma instância de uma classe. Ele é construído usando-se a

classe, da mesma maneira que usamos uma "planta baixa" para construir umacasa, é uma entidade real da abstração que a classe representa; usando o exemplodo carro, uma instância representa um veículo criado a partir do projeto dosengenheiros mecânicos. Um objeto deve ser explicitamente criado a partir de umaclasse antes que possa ser utilizado em umprograma.

2.2.1 Instância de ClassesEm Java, objetos são manipulados através de referências de objetos (ou

simplesmente referência). O processo de criação de um objeto normalmenteenvolve os seguintes passos:

Declaração de uma variável de referência: isto corresponde a declararuma variável de uma classe apropriada para armazenar a referência aoobjeto criado.

Um Objeto é instância deuma Classe.

O propósito da chamadaao construtor é inicializaro objeto que está sendo

criado.

Page 9: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

9Todos os direitos reservados a 3Way Networks

Page 10: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

10Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

11

//declaracao de duas variaveis referência que denota dois//objetos distintos, nomeando dois objetos carro respectivamenteCarro carro1, carro2;

Criação do Objeto: para criar o objeto fazemos uso do operador new, juntamente com a chamada doconstrutor da classe, assim criamos uma instância da classe.

//criacao de dois Objetos distintoscarro1 = new Carro();carro2 = new Carro();

O operador new retorna a referência da nova instância de uma classe Carro. Esta referência pode seratribuída a uma variável de referência da classe apropriada. Cada objeto tem uma identidade única e sua própriacópia das variáveis (atributos) declarados na definição da classe, ou seja, os dois objetos carro, referenciados porcarro1 e carro2 têm sua própria cópia das variáveis: cor, ano, modelo, nome.

A declaração e instanciação também podem ser combinadas:

Carro carro1 = new Carro(),carro2 = new Carro();

Figura 2.2 – Instâncias da Classe em UML

A Figura 2.2 mostra a notação UML para classe e objetos. A representação gráfica de um objeto é muitoparecida com a de um classe.

2.2.2 Referência de ObjetosCom já foi observado, uma referência nos permite manipular objetos que foram criados e armazenados na

memória do computador. Em Java, objetos só podem ser utilizados a partir de uma referência que está armazenadaem uma variável. Um objeto pode ter várias referências, também chamadas de aliases. O objeto pode sermanipulado por qualquer um desses aliases.

//declaracaoCarro carro1;

Figura 2.3 – Layout Memória após declaração

Page 11: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

11Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

Page 12: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

12Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

13

//declaracaoCarro carro = new Carro();

//invocando métodoString retorno=carro.acelerar();

//A sentença a baixo causa erro compilação,//método não está definido no obejeto invocadorcarro.print();

2.3.1.1 Chamando Métodos de ObjetoPara ilustrar como chamar os métodos, utilizaremos como exemplo a classe

String. Pode-se usar a documentação da API Java para conhecer todos os atributos emétodos disponíveis na classe String. Posteriormente, iremos criar nossos própriosmétodos.

Para chamar um método a partir de um objeto, escrevemos o seguinte:

nomeDoObjeto.nomeDoMétodo([argumentos]);

Vamos pegar dois métodos encontrados na classe String como exemplo:

Declaração do método Definição

public char charAt(int index)

Retorna o caractere especificado no índice. Umíndice vai de 0 até length() - 1. O primeirocaractere da seqüência está no índice 0, o seguinte,no índice 1, e assim sucessivamente por todo oarray.

public boolean equalsIgnoreCase (String outraString)

Compara o conteúdo de duas Strings, ignorandomaiúsculas e minúsculas. Duas strings sãoconsideradas iguais quando elas têm o mesmotamanho e os caracteres das duas strings são iguais,sem considerar caixa alta ou baixa.

Tabela 4: Exemplos de Métodos da classe String

Usando os métodos:

String str1 = "Hello";char x = str1.charAt(0);// retornará o caracter H e o armazenará no atributo x

String str2 = "hello";// aqui será retornado o valor booleano trueboolean result = str1.equalsIgnoreCase(str2);

2.3.2 Envio de Argumentos para MétodosEm exemplos anteriores, enviamos atributos para os métodos.

Entretanto, não fizemos nenhuma distinção entre os diferentes tipos de atributosque podem ser enviados como argumento para os métodos.

2.3.2.1 Passagem de Parâmetros por valorQuando ocorre uma passagem por valor, a chamada do método faz uma cópia do valor do atributo e o

envia como argumento. O método chamado não modifica o valor original do argumento mesmo que estes valoressejam modificados durante operações de cálculo implementadas pelo método.

Por exemplo:

Há duas formas para seenviar argumentos paraum método, o primeiro é

envio por valor e osegundo é envio por

referência.

Em Java a chamadade um método é feito

usando o operadorbinário "." (ponto).

Page 13: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

13Todos os direitos reservados a 3Way Networks

Page 14: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

14Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

14

public class PassagemPorValor {

public static void main(String[] args) {int i = 10;// exibe o valor de iSystem.out.println(i);// chama o método teste// envia i para o método testeteste(i);---------------------------------------+// exibe o valor de i não modificado |

+---------->System.out.println(i); || } |

| public static void teste(int j) { <------------------+| // muda o valor do argumento

+---------j = 33;}

}

Listagem 2.2 – Passagem por valor

No exemplo dado, o método teste() foi chamado e o valor de i foi enviado como argumento. O valor de i écopiado para o atributo j do método. Já que j é o atributo modificado no método teste(), não afetará o valor doatributo i, o que significa uma cópia diferente do atributo.

Como padrão, todo tipo primitivo, quando enviado para um método, utiliza a forma de envio por valor.

2.3.2.2 Passagem de Parâmetros por referênciaQuando ocorre um envio por referência, a referência de um objeto é enviada para o método chamado. Isto

significa que o método faz uma cópia da referência do objeto enviado. Entretanto, diferentemente do que ocorreno envio por valor, o método pode modificar o objeto para o qual a referência está apontando. Mesmo quediferentes referências sejam usadas nos métodos, a localização do dado para o qual ela aponta é a mesma. Vejapróximo exemplo, Listagem 2.3:

public class PassagemPorReferencia {

public static void main(String[] args) {// criar um array de inteiros

int[] idades = { 10, 11, 12 };// exibir os valores do arrayfor (int i = 0; i < idades.length; i++) {

System.out.println(idades[i]);}// chamar o método teste e enviar a// referência para o array

+----------teste(idades); | // exibir os valores do array | for (int i = 0; i < idades.length; i++) { | System.out.println(idades[i]);<----------------------+ | } | | } |+---->public static void teste(int[] arr) { |

// mudar os valores do array |for (int i = 0; i < arr.length; i++) { |

arr[i] = i + 50;-------------------------------+}

}}

Listagem 2.3 – Passagem por "referência"

Page 15: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

15Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

15

A Figura 2.3 ilustra o resultado da execução do código na Listagem 2.3:

Figura 2.6 - Exemplo de Envio por referência

2.4 Membros EstáticosHá casos em que você precisará que alguns atributos sejam compartilhados por todos os objetos de uma

classe em particular, ou seja, esses atributos devem pertencer somente à Classe e não aos objetos criados a partirdessa classe. Por exemplo, imagine que você queira manter um controle de quantos objetos de uma classe foramcriados e permitir que cada objetos consiga recuperar esta informação. Definir um contador como uma variável deinstância na definição da classe não resolveria o problema, pois já sabemos que são criadas cópias desta variávelpara cada objeto criado a partir da definição de uma classe. Então como resolver o problema? A solução é usarvariáveis estáticas - usar a palavra chave static antes da declaração da variável. Uma variável estática é inicializadaquando a classe é carregada em tempo de execução. De forma similar, os métodos também podem ser estáticos.

Figura 2.7 – Diagrama Classe mostrando definição de membros estáticos

A Figura 2.7 mostra a redefinição da classe Carro que foi acrescentado dois membros estáticos, oumembros da classe, marcado sublinhado abaixo do nome, conforme notação definida na UML. Em suaimplementação usamos a palavra reservada static como mostrado na Listagem 2.4 abaixo:

Page 16: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

16Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

16

public class Carro {// Variáveis de InstânciaString modelo;String cor;String ano;// declaração variável estáticastatic int contador; // 1

// construtor modificado para incrementar o contador// para cada objeto criadopublic Carro() { // 2

contador = contador + 1;}

// Métodos de Instânciapublic String acelerar() {

return "acelerando !";}

public String frear() {return "freando !";

}

public String abrirPorta() {return "abre porta !";

}

// Método Estático //3static int getContadorInstancia() {

return contador;}

}

Listagem 2.4 – Exemplo de membros de classe

A variável estática contador é declarada em (1, linha 7), ela será alocada e inicializada por padrão com ovalor 0 (zero) quando a classe for carregada. Toda vez que um objeto Carro for criado o construtor da classe em (2,linha 10) será executado. O construtor incrementa explicitamente o contador da classe. O métodogetContadorInstancia() em (3, linha 18) é estático e é um método da classe, ele retorna o valor do contador quandofor invocado.

O código seguinte invoca o método getContadorInstancia() da classe Carro:

//Nome da classe invoca método estaticoint retorno = Carro.getContadorInstancia();

Membros estáticos também podem ser acessados via referência para objetos da classe:

//Referencia de objeto invoca método estaticoCarro carro1 = new Carro();int retorno = carro1.getContadorInstancia();

Note que membros de classe podem ser acessados tanto pelo nome da classe quanto pela referência deobjetos da classe, porém membros de instância só são acessíveis via referência de objetos da classe.

2.5 Herança - Relacionamentos do tipo "é-um"Você dispõem de dois mecanismos fundamentais afim de se construir novas classes a partir de classes

existentes: herança e agregação. Faz todo sentido construir nossa classe Carro herdando todas as características deuma classe Veículo que já exista, uma vez que um Carro é um Veículo. Mas um Veículo é constituído de diversas

Temos acesso aosmembros estáticos de

uma classe usandodiretamente o nome da

classe seguido dooperador ponto (.), não

precisamos de umainstância.

Page 17: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

17Todos os direitos reservados a 3Way Networks

Page 18: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

18Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

17

partes, então poderíamos construir nossa classe Veículo pela agregação de outros objetos que constituem umveículo, assim podemos dizer que um Veículo tem um Motor, tem um Chassi e tem uma Carroceria.

A Figura 2.7 mostra a relação entre as classes Veículo e Carro, ela mostra que um Carro É-UM Veículo, aclasse Veículo é denominada Superclasse enquanto a classe Carro é chamada de Subclasse. A classe Veículo é umageneralização para todo Carro (neste caso veículos motorizados), enquanto a classe Carro representa aespecialização da classe Veículo, ou seja um tipo particular de veículo.

Figura 2.8 – Diagrama de Classe descrevendo a relação de Herança

Em Java, essa relação é representada pela palavra-chave extends. Uma subclasse só pode estender(herdar) somente uma única superclasse. A listagem 2.4 de código demonstra o uso de extends para criar asubclasse Carro a partir da superclasse Veículo.

class Veiculo { // nome da classe

// (1)Variaveisprivate String cor;private String ano;private String modelo;private String nome;

// (2) Constructorpublic Veiculo() { modelo="2000" };

// (3) Métodospublic String acelerar() { return "acelerando !"; }public String frear() { return "freando !"; }public String abrirPorta() { return "abre porta !"; }

}

class Carro extends Veiculo {// declaração de Variáveis e Métodos da nova classe

}

Listagem 2.5 – Exemplo Herança

Não se preocupe muito neste momento em compreender qual relação deverá ser utilizada para criar suasclasses, foque na terminologia e nas palavras-chave que estão sendo apresentadas.

2.6 Agregação - Relacionamentos do tipo "tem-um"Você pode construir novas classes de objetos por agregação de objetos já existentes, o objeto agregado é

constituído de outros objetos.Java implementa o conceito de agregação de objetos pelo uso da referência. Objetos em Java não podem

conter outros objetos explicitamente. Objetos somente poderão conter variáveis de tipos primitivos e referências aoutros objetos.

Uma relação de agregação é demonstrada na Figura 2.8, este diagrama UML informa que objetos da classeVeículo TEM-UM objeto da classe Motor associado a ela.

Page 19: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

19Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

18

Figura 2.9 – Diagrama de Classe descrevendo Agregação

A listagem mostra a implementação da relação TEM-UM mostrada na Figura 2.9.

class Veiculo // nome da classe{

// Agregação Motor motor1 = new Motor();}

2.7 Princípios de Programação Com JavaTudo em Java deve ser colocado dentro de uma classe;Há dois tipos de valores em Java: valores atômicos de tipos primitivos e valores de referência;Referências indicam objetos que são criados a partir de uma classe;Objetos só podem ser manipulados via referência;Objetos em Java não podem conter outros Objetos, ele somente tem referências para outros objetos;Remoção de objetos é gerida pelo sistema de tempo de execução (runtime). Este processo é conhecidocomo Garbage Collection.Java faz distinção entre nomes em MAIÚSCULAS e minúsculas, ou seja, é CASE SENSITIVE.

2.8 Estrutura de Arquivos Fontes em JavaEm Java, um arquivo de código-fonte tem os elementos especificados na seguinte ordem:

A definição opcional de package para especificar o nome do pacote da classe. As classes e interfacesdefinidas em um arquivo fonte tornam-se parte deste pacote. Se omitida, as definições pertencem aopacote default. Veremos mais sobre pacotes posteriormente.Zero ou mais usos da sentença import. A sentença import será discutida em detalhes posteriormente.Qualquer número de definições de classes e interfaces. Tecnicamente um arquivo de código-fonte emJava não precisa conter qualquer definição, mas ele seria inútil. Experimente compilar um arquivofonte sem nenhuma definição. As classes e interfaces podem ser definidas em qualquer ordem. Ocompilador Java impõe a restrição de somente uma classe com modificador public por arquivo, sendoque se esta existir o nome do arquivo de código-fonte deve ser nomeado obrigatoriamente com onome da classe pública.

Veja Figura 2.10 na próxima página, demonstração da estrutura de um arquivo de código-fonte válido.

// Nome do Arquivo: Aplicacao.java

//PARTE 1: (Opcional)//Nome Pacotepackage com.nomeempresa.projeto.nomepacote;

//PARTE 2: (Zero ou Mais)//Pacotes usados

import java.util.*;import javax.swing.JOptionPane;

//PATE 3: (Zero ou Mais)// Definições de classes e interfaces (em qualquer ordem)

public class Aplicacao {}

Page 20: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

//atribuindo valor a variável referênciaCarro carro1 = new Carro();carro1.ano = "2001";carro1.modelo= "fusca";carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização

//criando novo aliasCarro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de InstânciaCada objeto criado deverá ter sua própria instância de variáveis

(atributos) definidas pela classe. Os métodos definem o comportamento de umobjeto. Isto é importante, pois denota que um método pertence a cada objeto daclasse. Porém não devemos confundir isto com a implementação do método, queé compartilhada por todas as instâncias da classe.

2.3.1 Invocação de MétodosObjetos se comunicam pela troca de mensagens, isto significa que um

objeto pode ter que mostrar um comportamento particular invocando umaoperação apropriada que foi definida no objeto. Em Java, isto é feito pelachamada de um método em um objeto usando o operador binário "." (ponto),devendo especificar a mensagem completa: o objeto que é o recebedor damensagem, o método a ser invocado e os argumentos para o método (se houver).O método invocado no recebedor pode também enviar informações de volta aoobjeto chamador através de um valor de retorno. O método chamado deve serum que esteja definido pelo objeto.

Os valores das variáveisem um objeto constituem

o seu estado.Dois objetos distintos têmo mesmo estado se suasvariáveis membro têm os

mesmos valores.

20Todos os direitos reservados a 3Way Networks

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

19

class C1{}interface I1{}

// ...class Cn{}interface In{}

//fim arquivo

Figura 2.10 – Estrutura do arquivo de código-fonte

2.9 O método main()O interpretador Java executa uma chamada ao main() na classe especificada na linha de comando. Este é o

meio padrão pelo qual aplicações standalone são invocadas. O método main() tem a seguinte assinatura:

public static void main(String [] args)

O comando java AlgumaClasse, resulta em uma chamada para o método AlgumaClasse.main(). Assimqualquer classe pode ter um método main() mas somente a classe especificada ao interpretador será executada.

2.10 Fazer Laboratório 1Siga instruções do Laboratório 1 e tome cuidado com o tempo de execução, sempre recorra ao instrutor

em caso de dúvida, nunca deixe uma dúvida sem reposta.

2.11 ExercíciosEscreva, compile e execute todas as listagens de código apresentadas neste capítulo.

3 Identificadores, Palavras-chave e TiposAssim como outras linguagens, a linguagem de programação Java é definida por uma regra gramatical, que

especifica como construções sintaticamente legais podem ser formadas usando os elementos da linguagem, e poruma definição semântica que especifica o significado das construções sintaticamente corretas.

3.1 ComentáriosUm programa deve ser documentado com comentários e notas em lugares relevantes. Comentários tem

como propósito a documentação, eles são ignorados pelo compilador.Para fazer um comentário em Java, você pode usar o // para comentar

uma linha simples até o final, tudo após o // será ignorado pelocompilador:

//isto comenta até o fim da linha

ou então usar o /* */ para comentarmúltiplas linhas, tudo o que estiver entre eles seráignorado pelo compilador.

/* Um comentário com varias linhas */

Você pode criar comentários Javadoc começando-os com /** eterminando-os com */, funciona como o exemplo anterior só que aoadicionarmos tags apropriadas (como @tag valor) podemos colocar maisinformação em nossos comentários. Por exemplo:

Um programa deve serdocumentado pela

inserção de comentários.

Comentários Javadoc sãousados para gerar umadocumentação HTML

para seus programas emJava.

Page 21: Apostila Linguagem Java em Português | Curso Java Web 3WAY Networks

Siga-nos também no Twitter!twitter.com/3waynet